diff options
| author | Dmitry Torokhov <[email protected]> | 2023-08-30 16:06:38 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <[email protected]> | 2023-08-30 16:06:38 -0700 | 
| commit | 1ac731c529cd4d6adbce134754b51ff7d822b145 (patch) | |
| tree | 143ab3f35ca5f3b69f583c84e6964b17139c2ec1 /drivers/media/v4l2-core/v4l2-async.c | |
| parent | 07b4c950f27bef0362dc6ad7ee713aab61d58149 (diff) | |
| parent | 54116d442e001e1b6bd482122043b1870998a1f3 (diff) | |
Merge branch 'next' into for-linus
Prepare input updates for 6.6 merge window.
Diffstat (limited to 'drivers/media/v4l2-core/v4l2-async.c')
| -rw-r--r-- | drivers/media/v4l2-core/v4l2-async.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core/v4l2-async.c index d7e9ffc7aa23..b16b5f4cb91e 100644 --- a/drivers/media/v4l2-core/v4l2-async.c +++ b/drivers/media/v4l2-core/v4l2-async.c @@ -416,7 +416,8 @@ static void v4l2_async_cleanup(struct v4l2_subdev *sd)  /* Unbind all sub-devices in the notifier tree. */  static void -v4l2_async_nf_unbind_all_subdevs(struct v4l2_async_notifier *notifier) +v4l2_async_nf_unbind_all_subdevs(struct v4l2_async_notifier *notifier, +				 bool readd)  {  	struct v4l2_subdev *sd, *tmp; @@ -425,9 +426,11 @@ v4l2_async_nf_unbind_all_subdevs(struct v4l2_async_notifier *notifier)  			v4l2_async_find_subdev_notifier(sd);  		if (subdev_notifier) -			v4l2_async_nf_unbind_all_subdevs(subdev_notifier); +			v4l2_async_nf_unbind_all_subdevs(subdev_notifier, true);  		v4l2_async_nf_call_unbind(notifier, sd, sd->asd); +		if (readd) +			list_add_tail(&sd->asd->list, ¬ifier->waiting);  		v4l2_async_cleanup(sd);  		list_move(&sd->async_list, &subdev_list); @@ -559,7 +562,7 @@ err_unbind:  	/*  	 * On failure, unbind all sub-devices registered through this notifier.  	 */ -	v4l2_async_nf_unbind_all_subdevs(notifier); +	v4l2_async_nf_unbind_all_subdevs(notifier, false);  err_unlock:  	mutex_unlock(&list_lock); @@ -609,7 +612,7 @@ __v4l2_async_nf_unregister(struct v4l2_async_notifier *notifier)  	if (!notifier || (!notifier->v4l2_dev && !notifier->sd))  		return; -	v4l2_async_nf_unbind_all_subdevs(notifier); +	v4l2_async_nf_unbind_all_subdevs(notifier, false);  	notifier->sd = NULL;  	notifier->v4l2_dev = NULL; @@ -807,7 +810,7 @@ err_unbind:  	 */  	subdev_notifier = v4l2_async_find_subdev_notifier(sd);  	if (subdev_notifier) -		v4l2_async_nf_unbind_all_subdevs(subdev_notifier); +		v4l2_async_nf_unbind_all_subdevs(subdev_notifier, false);  	if (sd->asd)  		v4l2_async_nf_call_unbind(notifier, sd, sd->asd);  |