Patch from Bob Miller <rem@osdl.org>

The get_disk() function should check the return value from kobject_get()
before passing it to to_disk().  This patch fixes this error.

(Acked by Pat)



 drivers/block/genhd.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletion(-)

diff -puN drivers/block/genhd.c~get_disk-error-checking drivers/block/genhd.c
--- 25/drivers/block/genhd.c~get_disk-error-checking	2003-03-17 21:33:24.000000000 -0800
+++ 25-akpm/drivers/block/genhd.c	2003-03-17 21:33:24.000000000 -0800
@@ -538,12 +538,20 @@ struct gendisk *alloc_disk(int minors)
 struct gendisk *get_disk(struct gendisk *disk)
 {
 	struct module *owner;
+	struct kobject *kobj;
+
 	if (!disk->fops)
 		return NULL;
 	owner = disk->fops->owner;
 	if (owner && !try_module_get(owner))
 		return NULL;
-	return to_disk(kobject_get(&disk->kobj));
+	kobj = kobject_get(&disk->kobj);
+	if (kobj == NULL) {
+		module_put(owner);
+		return NULL;
+	}
+	return to_disk(kobj);
+
 }
 
 void put_disk(struct gendisk *disk)

_