Linux Kernel Critical Sections and Atomicity