Hi, I tried to instrument my code (a kernel driver) with __must_hold hints and noticed that they don't really work: a definitely broken code caused no errors from sparse.
A test in the "sparse" tree confirmed. Here is the test I used: static int ctx; static void must_hold(void) __attribute__((context(ctx,1,1))) { if (ctx) ; } static void bad_must_hold(void) { must_hold(); } After a bit of looking I found a commit which removed context tracking from the "sparse": Author: Johannes Berg <johan...@sipsolutions.net> 2008-12-23 10:59:22 Revert the context tracking code > Do you want to resend your change which revert the context changes? > Make it base on Josh's git's tree and I will merge your changes in my > branch. Below. Or I can give it to you in git if you prefer. I still think we should redo this in some form so that annotations with different contexts can work properly, but I don't have time to take care of it right now. johannes >From ca95b62edf1600a2b55ed9ca0515d049807a84fc Mon Sep 17 00:00:00 2001 From: Johannes Berg <johan...@sipsolutions.net> Date: Tue, 23 Dec 2008 10:53:19 +0100 Subject: [PATCH] Revert context tracking code So it seems that the code has problems with different contexts. Still, it seems a bit heavy-handed to remove it completely (assuming it worked, of course). The kernel even has a bit of use for it (not much, admittedly: DRBD and aoe). Is it be possible to reintroduce the code at least for the same context? So that it catches at least some locks not taken? Regards, Alex Riesen -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/