Hmm. There's a chance we might be able to help. Our group is building
a tool called MOPS that is similar in spirit to the Stanford Checker.
MOPS is work-in-progress and will be open source. I haven't tried it
yet on the Linux kernel, but this seems like a reasonable thing to try.
What would you want to check? Track lock_kernel() and unlock_kernel()
and make sure that the BKL is never held when you return from a function?
Something else?
MOPS can handle nested and recursive functions nicely. However, it has
some important limitations:
* Useability hasn't been a focus yet; the input language is
not terribly elegant, and the output language is not exceptionally
friendly. (yet)
* It currently ignores function pointers. (yet)
* #ifdefs are trouble; we only analyzed pre-processed C code.
* It can't reason about data, variables, or values on the heap.
We're working hard on useability. We may fix the second limitation
in future months. However, the latter two are unlikely to go away in
the foreseeable future. Would it still be worth investigating MOPS,
despite these limitations?
The MOPS web page is at
http://www.cs.berkeley.edu/~daw/mops/
There is an initial release there, though it has some known problems.
We're working hard to making it more usable, and I hope to be able to
report more progress in upcoming months.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/