Device drivers are such a huge portion of Linux kernel code (and bugs!) that creating a domain specific language might be a worthwhile abstraction. The DSL compiler could have lots of static error checking and then generate driver code. As kernel APIs or best practices change, then DSL compiler can be updated and regenerate new drivers without changing the input specs.
A sneaky benefit is that the spec DSL could be designed such that device manufacturers must better document how their hardware actually works. :)
Intel Labs is working on a project (with funding from Google) called Termite that generates driver code from a hardware specification language: