On Thu, Jul 09, 2020 at 05:50:11PM +0200, Aurélien Aptel wrote: > Hi, > > I was thinking the same mechanism for lock checks (lock() has matching > unlock()) could be used for detecting refcount leaks (get() has matching > put()). > > This could be used to catch bugs like that: > > https://lore.kernel.org/linux-cifs/CAH2r5mtJg0OONLuAYmcggj=M3euDDxRa3Y5-_W1=qxwbeZypqA@xxxxxxxxxxxxxx/T/#mf0e0397aa0b63043d7b3bb0981f0b7323713bfdc Absolutely. Sparse's 'context' can be reused for refcounting (conceptually, it's quite similar to locking). You can even simply reuse the existing macros __acquires(), ... That's said, I suppose that in the present case the 'get' is done by cifs_sb_tlink(). This corresponds to a 'conditional context' (see __cond_lock()) which somehow annoying to use. I've some patches improving things here but they need some more work. Cheers, -- Luc