tech-kern archive

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

Re: spl question



   Date: Wed, 29 Jul 2015 07:59:46 +0200
   From: Maxime Villard <max%m00nbsd.net@localhost>

   What happens if the kernel calls splx(s) twice? And what happens if it
   forgets to call splx(s)? Like:

           s = splnet();

           [...] NOT RELATED TO S

           return;   NO SPLX(S)

   I guess it creates some inconsistency, right?

It leaves the kernel thread running at elevated interrupt priority
which will make it unresponsive to interrupts.

On several, if not all, architectures, the kernel checks on return to
userland, if DIAGNOSTIC is enabled, for this case, and fails noisily
if not -- SPL NOT LOWERED ON SYSCALL RETURN, &c.

This is a bug of pretty much the same class as missing mutex_exit.


Home | Main Index | Thread Index | Old Index