[PATCH v2 03/12] loop: Add lock context annotations
Bart Van Assche <[email protected]> Thu, 30 Jul 2026 12:58:26 -0700
| Newsgroups | org.kernel.vger.linux-block |
|---|---|
| Message-ID | <db7c5b870df403fe97229f6bb59144122e16aa41.1785440858.git.bvanassche@acm.org> |
Add lock context annotations that are compatible with Clang. Swap the loop_ctl_mutex and loop_index_idr declarations such that __guarded_by() can be used. Cc: Nilay Shroff <[email protected]> Signed-off-by: Bart Van Assche <[email protected]> --- drivers/block/loop.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/block/loop.c b/drivers/block/loop.c index a71fe763c933..e2ac19de11f4 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -90,8 +90,8 @@ struct loop_cmd { #define LOOP_IDLE_WORKER_TIMEOUT (60 * HZ) #define LOOP_DEFAULT_HW_Q_DEPTH 128 -static DEFINE_IDR(loop_index_idr); static DEFINE_MUTEX(loop_ctl_mutex); +static __guarded_by(&loop_ctl_mutex) DEFINE_IDR(loop_index_idr); static DEFINE_MUTEX(loop_validate_mutex); /** @@ -106,6 +106,8 @@ static DEFINE_MUTEX(loop_validate_mutex); * loop_configure()/loop_change_fd()/__loop_clr_fd() calls. */ static int loop_global_lock_killable(struct loop_device *lo) + __cond_acquires(0, &loop_validate_mutex) + __cond_acquires(0, &lo->lo_mutex) { int err; @@ -124,6 +126,8 @@ static int loop_global_lock_killable(struct loop_device *lo) * @lo: struct loop_device */ static void loop_global_unlock(struct loop_device *lo) + __releases(&lo->lo_mutex) + __releases(&loop_validate_mutex) { mutex_unlock(&lo->lo_mutex); mutex_unlock(&loop_validate_mutex); @@ -2329,6 +2333,7 @@ static void __exit loop_exit(void) * module unloading is requested). If this is not a clean unloading, * we have no means to avoid kernel crash. */ + __assume_ctx_lock(&loop_ctl_mutex); idr_for_each_entry(&loop_index_idr, lo, id) loop_remove(lo);