Re: [PATCH v2] blk_iocost: remove some duplicate irq disable/enables

From: Jens Axboe
Date: Thu Oct 03 2024 - 09:21:41 EST


On 10/3/24 6:03 AM, Dan Carpenter wrote:
> 3117 ioc_now(iocg->ioc, &now);
> 3118 weight_updated(iocg, &now);
> 3119 spin_unlock(&iocg->ioc->lock);
> 3120 }
> 3121 }
> 3122 spin_unlock_irq(&blkcg->lock);
> 3123
> 3124 return nbytes;
> 3125 }
> 3126
> 3127 blkg_conf_init(&ctx, buf);
> 3128
> 3129 ret = blkg_conf_prep(blkcg, &blkcg_policy_iocost, &ctx);
> 3130 if (ret)
> 3131 goto err;
> 3132
> 3133 iocg = blkg_to_iocg(ctx.blkg);
> 3134
> 3135 if (!strncmp(ctx.body, "default", 7)) {
> 3136 v = 0;
> 3137 } else {
> 3138 if (!sscanf(ctx.body, "%u", &v))
> 3139 goto einval;
> 3140 if (v < CGROUP_WEIGHT_MIN || v > CGROUP_WEIGHT_MAX)
> 3141 goto einval;
> 3142 }
> 3143
> 3144 spin_lock(&iocg->ioc->lock);
>
> But why is this not spin_lock_irq()? I haven't analyzed this so maybe it's
> fine.

That's a bug.

--
Jens Axboe