kernel mmap() and friends.

From: linux-os
Date: Tue Mar 08 2005 - 14:13:06 EST

Hello mem-map gurus,

If one uses x = __get_dma_pages(GFP_KERNEL, nr), finds the physical
address with b = virt_to_bus(x), then attempts to mmap(,,b,,,) the result
_does_not_fail_, yet the user ends up with memory ...somewhere....
that is R/W able and WRONG.

Yet, if the code executes SetPageReserved(virt_to_page(x)), the
mmap() works and the user gets the CORRECT page(s).

I think that if mmap() needs a physical buffer to be reserved
then that's fine. However, silently returning some different
buffer is a BUG.

Is anyone aware of this BUG? Does anybody else care?

Dick Johnson
Penguin : Linux version 2.6.10 on an i686 machine (5537.79 BogoMips).
Notice : All mail here is now cached for review by Dictator Bush.
98.36% of all statistics are fiction.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at