From: Dan Carpenter dan.carpenter@oracle.com
mainline inclusion from mainline-5.4-rc6 commit 41591a51f00d2dc7bb9dc6e9bedf56c5cf6f2392 category: feature bugzilla: 38688 CVE: NA
---------------------------
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: 7caa47151ab2 ("blkcg: implement blk-iocost") Acked-by: Tejun Heo tj@kernel.org Signed-off-by: Dan Carpenter dan.carpenter@oracle.com Signed-off-by: Jens Axboe axboe@kernel.dk Signed-off-by: Yu Kuai yukuai3@huawei.com Reviewed-by: Hou Tao houtao1@huawei.com Signed-off-by: Yang Yingliang yangyingliang@huawei.com --- block/blk-iocost.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/block/blk-iocost.c b/block/blk-iocost.c index a462e689a781d..fa7da47bea2ef 100644 --- a/block/blk-iocost.c +++ b/block/blk-iocost.c @@ -2111,10 +2111,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;