
From: "Randy.Dunlap" <rddunlap@osdl.org>

From: <WHarms@bfs.de>(Walter Harms)



---

 25-akpm/drivers/media/video/videodev.c |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff -puN drivers/media/video/videodev.c~videodev-handle-class_register-failure drivers/media/video/videodev.c
--- 25/drivers/media/video/videodev.c~videodev-handle-class_register-failure	2004-04-27 19:22:02.193710360 -0700
+++ 25-akpm/drivers/media/video/videodev.c	2004-04-27 19:22:02.197709752 -0700
@@ -397,12 +397,21 @@ static struct file_operations video_fops
  
 static int __init videodev_init(void)
 {
+	int ret;
+
 	printk(KERN_INFO "Linux video capture interface: v1.00\n");
-	if (register_chrdev(VIDEO_MAJOR,VIDEO_NAME, &video_fops)) {
-		printk("video_dev: unable to get major %d\n", VIDEO_MAJOR);
+	if (register_chrdev(VIDEO_MAJOR, VIDEO_NAME, &video_fops)) {
+		printk(KERN_WARNING "video_dev: unable to get major %d\n", VIDEO_MAJOR);
 		return -EIO;
 	}
-	class_register(&video_class);
+
+	ret = class_register(&video_class);
+	if (ret < 0) {
+		unregister_chrdev(VIDEO_MAJOR, VIDEO_NAME);
+		printk(KERN_WARNING "video_dev: class_register failed\n");
+		return -EIO;
+	}
+
 	return 0;
 }
 

_
