On Mon, 2002-06-17 at 04:53, Carsten Langgaard wrote: > * Address valid if: > - * - "addr" doesn't have any high-bits set > - * - AND "size" doesn't have any high-bits set > - * - AND "addr+size" doesn't have any high-bits set > - * - OR we are in kernel mode. > + * - In user mode and "addr" and "addr+size" in USEG (or XUSEG). > + * - OR we are in kernel mode and "addr" and "addr+size" isn't in the > + * area between USEG (XUSEG) and KSEG0. You also need to test for high bit set in size. Otherwise, for example, if a process was ok to access range 0x40000000-0x40003fff, access_ok(0x40001000, 0xfffff100) would return 1. The addition will wrap around, leading to all sorts of fun havoc. -Justin