Note, that this is in the 64-bit kernel, a size there the high bit is set, will be astronomical and not a true value. /Carsten Justin Carlson wrote: > 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 -- _ _ ____ ___ Carsten Langgaard Mailto:carstenl@mips.com |\ /|||___)(___ MIPS Denmark Direct: +45 4486 5527 | \/ ||| ____) Lautrupvang 4B Switch: +45 4486 5555 TECHNOLOGIES 2750 Ballerup Fax...: +45 4486 5556 Denmark http://www.mips.com