V4L/DVB (4368): Bttv: use class_device_create_file and handle errors
authorTrent Piepho <xyzzy@speakeasy.org>
Sat, 29 Jul 2006 20:18:06 +0000 (17:18 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Sat, 29 Jul 2006 20:22:36 +0000 (17:22 -0300)
Revert bttv-driver.c from video_device_create_file() to use
class_device_create_file() again.  video_device_create_file() is only
available when V4L1 is on.
Proper error checking is added for failure of class_device_create_file().
Will print error message and unroll partially created sysfs entries.

Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/bt8xx/bttv-driver.c
drivers/media/video/videodev.c

index 6db5e4e73397f1edc183345f169cea4e37e0e137..20dff7c316eb595e2c8e9385f90ba0ad22723de9 100644 (file)
@@ -3923,8 +3923,12 @@ static int __devinit bttv_register_video(struct bttv *btv)
                goto err;
        printk(KERN_INFO "bttv%d: registered device video%d\n",
               btv->c.nr,btv->video_dev->minor & 0x1f);
-
-       video_device_create_file(btv->video_dev, &class_device_attr_card);
+       if (class_device_create_file(&btv->video_dev->class_dev,
+                                    &class_device_attr_card)<0) {
+               printk(KERN_ERR "bttv%d: class_device_create_file 'card' "
+                      "failed\n", btv->c.nr);
+               goto err;
+       }
 
        /* vbi */
        btv->vbi_dev = vdev_init(btv, &bttv_vbi_template, "vbi");
index caa4f736468a7ab4134910ab0f3b97537c7d8126..46848e2ae4767f123d6107fa92c232709097708a 100644 (file)
@@ -1578,12 +1578,13 @@ int video_register_device(struct video_device *vfd, int type, int nr)
        if (ret) {
                printk(KERN_ERR "%s: class_device_register failed\n",
                       __FUNCTION__);
-               return ret;
+               goto fail_minor;
        }
        ret = class_device_create_file(&vfd->class_dev, &class_device_attr_name);
        if (ret < 0) {
-               printk(KERN_WARNING "%s error: %d\n", __FUNCTION__, ret);
-               return ret;
+               printk(KERN_ERR "%s: class_device_create_file 'name' failed\n",
+                      __FUNCTION__);
+               goto fail_classdev;
        }
 
 #if 1