With millions of LoCs, it is no surprise there are bugs.
Worse yet, the kernel runs in supervisor mode.
This kernel design is bankrupt. There's much better available, such as seL4+Genode.
replies(4):
Microkernels have severe limitations when it comes to transactional boundaries of calling multiple subsystems and rolling back on failure.
Linux has too much inertia to reinvent itself instantly or completely into XYZ.
What would add more value would be gradual conversion to Rust and adding formal verification to C and Rust like specifying invariants in comments/metadata like frama-c and/or flux.
PS: Religious judgement opinion wars are rarely constructive.