Albeit not prohibited explicitly, re-registering sub-devices generated a
big, loud warning which quite likely soon was followed by a crash. What
followed was re-initialising a media entity, driver's registered() callback
being called and re-adding a list entry to a list.

Prevent this by returning an error if a sub-device is already registered.

Signed-off-by: Sakari Ailus <[email protected]>
---
 drivers/media/v4l2-core/v4l2-device.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/media/v4l2-core/v4l2-device.c 
b/drivers/media/v4l2-core/v4l2-device.c
index 06fa5f1..6136571 100644
--- a/drivers/media/v4l2-core/v4l2-device.c
+++ b/drivers/media/v4l2-core/v4l2-device.c
@@ -160,12 +160,9 @@ int v4l2_device_register_subdev(struct v4l2_device 
*v4l2_dev,
        int err;
 
        /* Check for valid input */
-       if (v4l2_dev == NULL || sd == NULL || !sd->name[0])
+       if (!v4l2_dev || sd->v4l2_dev || !sd || !sd->name[0])
                return -EINVAL;
 
-       /* Warn if we apparently re-register a subdev */
-       WARN_ON(sd->v4l2_dev != NULL);
-
        /*
         * The reason to acquire the module here is to avoid unloading
         * a module of sub-device which is registered to a media
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to