V4L/DVB (11325): soc-camera: fix breakage caused by 1fa5ae857bb14f6046205171d98506d81...
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Tue, 31 Mar 2009 06:44:22 +0000 (03:44 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 7 Apr 2009 00:43:48 +0000 (21:43 -0300)
soc-camera re-uses struct devices multiple times in calls to device_register(),
therefore it has to reset the embedded struct kobject to avoid the "tried to
init an initialized object" error, which then also erases its name. Now with
the transition to kobject's name for device names, we have to re-initialise the
name before each call to device_register().

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/soc_camera.c

index 6d8bfd4d97e20ba49303b26b133665045f5a61a9..0e890cc233776d85c3cba061299761e9402e7047 100644 (file)
@@ -764,7 +764,10 @@ static int soc_camera_s_register(struct file *file, void *fh,
 
 static int device_register_link(struct soc_camera_device *icd)
 {
-       int ret = device_register(&icd->dev);
+       int ret = dev_set_name(&icd->dev, "%u-%u", icd->iface, icd->devnum);
+
+       if (!ret)
+               ret = device_register(&icd->dev);
 
        if (ret < 0) {
                /* Prevent calling device_unregister() */
@@ -1060,7 +1063,6 @@ int soc_camera_device_register(struct soc_camera_device *icd)
 
        icd->devnum = num;
        icd->dev.bus = &soc_camera_bus_type;
-       dev_set_name(&icd->dev, "%u-%u", icd->iface, icd->devnum);
 
        icd->dev.release        = dummy_release;
        icd->use_count          = 0;