Re: [PATCH v2 05/12] nbd: Enable lock context analysis
Marco Elver <[email protected]> Tue, 4 Aug 2026 11:25:51 +0200
| Newsgroups | org.kernel.vger.linux-block |
|---|---|
| Message-ID | <CANpmjNM3-WQNo9djX+P3bWxg24x7jrymiFGJMyJuRrzXBLUHOQ@mail.gmail.com> |
On Mon, 3 Aug 2026 at 20:03, Bart Van Assche <[email protected]> wrote: > > On 8/3/26 6:26 AM, Nilay Shroff wrote: > > On 7/31/26 1:28 AM, Bart Van Assche wrote: > >> @@ -2773,7 +2776,11 @@ static void __exit nbd_cleanup(void) > >> /* Also wait for nbd_dev_remove_work() completes */ > >> destroy_workqueue(nbd_del_wq); > >> - idr_destroy(&nbd_index_idr); > >> + { > >> + __assume_ctx_lock(&nbd_index_mutex); > >> + idr_destroy(&nbd_index_idr); > >> + } > >> + > > > > Could we instead introduce a scoped __assume_ctx_lock() helper so we > > don't need the explicit scope here? Alternatively, would annotating > > nbd_cleanup() with __context_unsafe be a better fit? > There is code in nbd_cleanup() that must be protected by a mutex so I > think that we shouldn't annotate nbd_cleanup() with __context_unsafe(). Just 'context_unsafe(idr_destroy(&nbd_index_idr)); /* comment */' would be fine here I think. I've used that elsewhere for destructors. It makes sure that the rest of the code is still checked and is as simple as it gets. > Introducing a scoped __assume_ctx_lock() might be overkill. Agree. Note that __assume_ctx_lock() leaks outside the scope, so a real scoped __assume_ctx_lock() would just do no-op __acquire() and __release() using the cleanup.h infrastructure (similar to the init guards I suppose).