question on sparc SHMLBA helper function

David Miller davem@davemloft.net
Fri Mar 16 23:10:00 GMT 2012


From: Roland McGrath <roland@hack.frob.com>
Date: Fri, 16 Mar 2012 14:35:06 -0700 (PDT)

> Perhaps we can avoid the issue entirely.  I see exactly one use
> of SHMLBA, in shmat.c, and I really don't understand what that
> logic is intended to do.  It is sorely lacking a comment.

It just seems to be a very poor way to detect an error return value.

All the INTERNAL_SYSCALL_ERROR_P bits should take care of things these
days, and then the only return value we have to check for from
INTERNAL_SYSCALL is "-1".

Probably something as simple as this:

diff --git a/sysdeps/unix/sysv/linux/shmat.c b/sysdeps/unix/sysv/linux/shmat.c
index 2eec6a6..e4076fc 100644
--- a/sysdeps/unix/sysv/linux/shmat.c
+++ b/sysdeps/unix/sysv/linux/shmat.c
@@ -51,7 +51,7 @@ shmat (shmid, shmaddr, shmflg)
 					       shmid, shmflg,
 					       (long int) __ptrvalue (&raddr),
 					       __ptrvalue ((void *) shmaddr));
-  if ((unsigned long) result <= -(unsigned long) SHMLBA)
+  if ((unsigned long) result != (unsigned long) -1)
     result = raddr;
 
   return BOUNDED_N (result, length);



More information about the Libc-alpha mailing list