lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 10 May 2016 15:19:14 +0200 From: Alban Bedel <alban.bedel@...onic-design.de> To: linux-media@...r.kernel.org Cc: Mauro Carvalho Chehab <mchehab@....samsung.com>, Sakari Ailus <sakari.ailus@....fi>, Javier Martinez Canillas <javier@....samsung.com>, Laurent Pinchart <laurent.pinchart@...asonboard.com>, linux-kernel@...r.kernel.org, Alban Bedel <alban.bedel@...onic-design.de> Subject: [PATCH] [media] v4l2-async: Pass the v4l2_async_subdev to the unbind callback v4l2_async_cleanup() is always called before before calling the unbind() callback. However v4l2_async_cleanup() clear the asd member, so when calling the unbind() callback the v4l2_async_subdev is always NULL. To fix this save the asd before calling v4l2_async_cleanup(). Signed-off-by: Alban Bedel <alban.bedel@...onic-design.de> --- drivers/media/v4l2-core/v4l2-async.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core/v4l2-async.c index a4b224d..ceb28d4 100644 --- a/drivers/media/v4l2-core/v4l2-async.c +++ b/drivers/media/v4l2-core/v4l2-async.c @@ -220,6 +220,7 @@ void v4l2_async_notifier_unregister(struct v4l2_async_notifier *notifier) list_del(¬ifier->list); list_for_each_entry_safe(sd, tmp, ¬ifier->done, async_list) { + struct v4l2_async_subdev *asd = sd->asd; struct device *d; d = get_device(sd->dev); @@ -230,7 +231,7 @@ void v4l2_async_notifier_unregister(struct v4l2_async_notifier *notifier) device_release_driver(d); if (notifier->unbind) - notifier->unbind(notifier, sd, sd->asd); + notifier->unbind(notifier, sd, asd); /* * Store device at the device cache, in order to call @@ -313,6 +314,7 @@ EXPORT_SYMBOL(v4l2_async_register_subdev); void v4l2_async_unregister_subdev(struct v4l2_subdev *sd) { struct v4l2_async_notifier *notifier = sd->notifier; + struct v4l2_async_subdev *asd = sd->asd; if (!sd->asd) { if (!list_empty(&sd->async_list)) @@ -327,7 +329,7 @@ void v4l2_async_unregister_subdev(struct v4l2_subdev *sd) v4l2_async_cleanup(sd); if (notifier->unbind) - notifier->unbind(notifier, sd, sd->asd); + notifier->unbind(notifier, sd, asd); mutex_unlock(&list_lock); } -- 2.8.2
Powered by blists - more mailing lists