RE: return negative number for unsigned long function in kernel

Chen, Dongliang
2007-03-07T13:31:13Z

Peter & Andreas,

Thank you very much for your help.

I understood that the kernel error numbers are limited. The largest
error number for i386 (kernel 2.6) is 131 so far. Assume that the
virtual address returned from do_mmap_pgoff will never exceed (unsigned
long)(-1000L), which is in the address range one page below the maximum
virtual address, then IS_ERR_VALUE() should work.

Dongliang Chen

Staff Engineer
EMS Technologies, Inc - Defense & Space Systems
660 Engineering Dr
Norcross, GA 30092
Tel: 770-263-9200 x 4379

-----Original Message-----
From: H. Peter Anvin [mailto:hpa@zytor.com]
Sent: Tuesday, March 06, 2007 7:39 PM
To: Chen, Dongliang
Cc: linux-kernel@vger.kernel.org
Subject: Re: return negative number for unsigned long function in kernel

H. Peter Anvin wrote:
>If you want to test for errorness, you could use the macro
>IS_ERR_VALUE(). Unfortunately the macro isn't all that safe, in that
it
>will give you the wrong answer if it's ever used on something that
>*isn't* an unsigned long.

-----Original Message-----
From: Andreas Schwab [mailto:schwab@suse.de]
Sent: Tuesday, March 06, 2007 2:06 PM
To: Chen, Dongliang
Cc: linux-kernel@vger.kernel.org
Subject: Re: return negative number for unsigned long function in kernel

Andreas Schwab wrote:
>The return value is directly passed to user space (it's the guts of the
>mmap syscall). The glibc wrapper transforms it appropriately so that
errno >is set and -1 is returned if there is an error.