Why sparse does not support context tracking?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <johannes@xxxxxxxxxxxxxxxx> 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 <johannes@xxxxxxxxxxxxxxxx>
    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-sparse" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux