Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 41591a51 authored by Dan Carpenter's avatar Dan Carpenter Committed by Jens Axboe
Browse files

iocost: don't nest spin_lock_irq in ioc_weight_write()



This code causes a static analysis warning:

    block/blk-iocost.c:2113 ioc_weight_write() error: double lock 'irq'

We disable IRQs in blkg_conf_prep() and re-enable them in
blkg_conf_finish().  IRQ disable/enable should not be nested because
that means the IRQs will be enabled at the first unlock instead of the
second one.

Fixes: 7caa4715 ("blkcg: implement blk-iocost")
Acked-by: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 6873e0bd
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2110,10 +2110,10 @@ static ssize_t ioc_weight_write(struct kernfs_open_file *of, char *buf,
			goto einval;
	}

	spin_lock_irq(&iocg->ioc->lock);
	spin_lock(&iocg->ioc->lock);
	iocg->cfg_weight = v;
	weight_updated(iocg);
	spin_unlock_irq(&iocg->ioc->lock);
	spin_unlock(&iocg->ioc->lock);

	blkg_conf_finish(&ctx);
	return nbytes;