]> git.hungrycats.org Git - linux/commitdiff
blkcg: fix gendisk reference leak in blkg_conf_prep()
authorTejun Heo <tj@kernel.org>
Wed, 22 Jul 2015 22:05:53 +0000 (18:05 -0400)
committerJiri Slaby <jslaby@suse.cz>
Wed, 19 Aug 2015 06:36:39 +0000 (08:36 +0200)
commit 5f6c2d2b7dbb541c1e922538c49fa04c494ae3d7 upstream.

When a blkcg configuration is targeted to a partition rather than a
whole device, blkg_conf_prep fails with -EINVAL; unfortunately, it
forgets to put the gendisk ref in that case.  Fix it.

Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jens Axboe <axboe@fb.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
block/blk-cgroup.c

index a573d4bd71d907de5dfad8af3daef4e17405fe18..47bf1599aa2ff3fdf701a10b25c2d2f345e0b717 100644 (file)
@@ -703,8 +703,12 @@ int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol,
                return -EINVAL;
 
        disk = get_gendisk(MKDEV(major, minor), &part);
-       if (!disk || part)
+       if (!disk)
                return -EINVAL;
+       if (part) {
+               put_disk(disk);
+               return -EINVAL;
+       }
 
        rcu_read_lock();
        spin_lock_irq(disk->queue->queue_lock);