kunmap_atomic() violates the Principle of Least Surprise in a nasty way. kmap(), kunmap(), and kmap_atomic() all take struct page* to reference the memory location. kunmap_atomic() is the oddball of the three, and takes a kernel address. Ignoring the driver-related bugs that are present due to kunmap_atomic()'s weirdness, there also appears to be a big in the !CONFIG_HIGHMEM implementation in 2.4.x. (Bart is poking through some of the 2.6.x-related kunmap_atomic slip-ups) Anyway, what do people think about the attached patch to 2.4.x? I'm surprised it has gone unnoticed until now. Jeff