summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorAndrew Morton <akpm@digeo.com>2003-03-17 21:20:37 -0800
committerDave Jones <davej@codemonkey.org.uk>2003-03-17 21:20:37 -0800
commitd99c48c60bc52561b3125dd1f85db7a77b7031ca (patch)
treea134f81043493985f150e038037a82c00a8974af /drivers
parent18f3cae294f90eb9a96fafcc1ffe2c1bb837f5a2 (diff)
[PATCH] Add error checking get_disk()
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)
Diffstat (limited to 'drivers')
-rw-r--r--drivers/block/genhd.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/block/genhd.c b/drivers/block/genhd.c
index 04d9cc8a48b5..9812dcf39fe8 100644
--- a/drivers/block/genhd.c
+++ b/drivers/block/genhd.c
@@ -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)