Patch "[media] v4l: omap3isp: Fix async notifier registration order" has been added to the 4.2-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
[media] v4l: omap3isp: Fix async notifier registration order
to the 4.2-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
v4l-omap3isp-fix-async-notifier-registration-order.patch
and it can be found in the queue-4.2 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
5d479386983c5f1bb1aff4f88a027b6143f88a39Mon Sep 17 00:00:00 2001
From: Sakari Ailus <[email protected]>
Date: Tue, 19 May 2015 20:08:05 -0300
Subject: [media] v4l: omap3isp: Fix async notifier registration order
From: Sakari Ailus <[email protected]>
commit 5d479386983c5f1bb1aff4f88a027b6143f88a39 upstream.
The async notifier was registered before the v4l2_device was registered and before the notifier callbacks were set. This could lead to missing the bound() and complete() callbacks and to attempting to spin_lock() and uninitialised spin lock.
Also fix unregistering the async notifier in the case of an error --- the function may not fail anymore after the notifier is registered.
--- drivers/media/platform/omap3isp/isp.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-)
drivers/media/platform/omap3isp/isp.c +13 -10
@@ -2000,10 +2000,8 @@ static int isp_register_entities(struct ret =v4l2_device_register_subdev_nodes (&isp->v4l2_dev); done: -if (ret <0 ) { +if (ret <0 )isp_unregister_entities (isp); -v4l2_async_notifier_unregister (&isp->notifier); - }return ret; }
@@ -2423,10 +2421,6 @@ static int isp_probe(struct platform_dev ret =isp_of_parse_nodes (&pdev->dev, &isp->notifier);if (ret <0 )return ret; - ret =v4l2_async_notifier_register (&isp->v4l2_dev, - &isp->notifier); -if (ret) -return ret; }else { isp->pdata = pdev->dev.platform_data; isp->syscon =syscon_regmap_lookup_by_pdevname ("syscon.0" );
@@ -2557,18 +2551,27 @@ static int isp_probe(struct platform_devif (ret <0 ) goto error_iommu; - isp->notifier.bound = isp_subdev_notifier_bound; - isp->notifier.complete = isp_subdev_notifier_complete; - ret =isp_register_entities (isp);if (ret <0 ) goto error_modules; +if (IS_ENABLED (CONFIG_OF ) && pdev->dev.of_node) { + isp->notifier.bound = isp_subdev_notifier_bound; + isp->notifier.complete = isp_subdev_notifier_complete; + + ret =v4l2_async_notifier_register (&isp->v4l2_dev, + &isp->notifier); +if (ret) + goto error_register_entities; + } +isp_core_init (isp,1 );omap3isp_put (isp);return 0 ; +error_register_entities: +isp_unregister_entities (isp); error_modules:isp_cleanup_modules (isp); error_iommu:
Patches currently in stable-queue which might be from [email protected] are
queue-4.2/v4l-omap3isp-fix-sub-device-power-management-code.patch queue-4.2/v4l-omap3isp-fix-async-notifier-registration-order.patch