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