diff options
| author | Andrew Morton <akpm@digeo.com> | 2003-03-17 21:20:37 -0800 |
|---|---|---|
| committer | Dave Jones <davej@codemonkey.org.uk> | 2003-03-17 21:20:37 -0800 |
| commit | d99c48c60bc52561b3125dd1f85db7a77b7031ca (patch) | |
| tree | a134f81043493985f150e038037a82c00a8974af /drivers | |
| parent | 18f3cae294f90eb9a96fafcc1ffe2c1bb837f5a2 (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.c | 10 |
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) |
