Re: [PATCH] consistently use MAX_ERRNO in __syscall_return

From: Randy.Dunlap
Date: Mon Jul 03 2006 - 11:38:15 EST


On Mon, 03 Jul 2006 08:03:29 -0700 H. Peter Anvin wrote:

> Andrew Morton wrote:
> > On Sun, 2 Jul 2006 11:27:22 -0700
> > "Randy.Dunlap" <rdunlap@xxxxxxxxxxxx> wrote:
> >
> >> --- linux-2617-g20.orig/include/asm-i386/unistd.h
> >> +++ linux-2617-g20/include/asm-i386/unistd.h
> >> @@ -327,14 +327,15 @@
> >> #ifdef __KERNEL__
> >>
> >> #define NR_syscalls 318
> >> +#include <linux/err.h>
> >
> > include/linux/err.h: Assembler messages:
> > include/linux/err.h:20: Error: no such instruction: `static inline void *ERR_PTR(long error)'
> > include/linux/err.h:21: Error: junk at end of line, first unrecognized character is `{'
> > include/linux/err.h:22: Error: no such instruction: `return (void *)error'
> > include/linux/err.h:23: Error: junk at end of line, first unrecognized character is `}'
> > include/linux/err.h:25: Error: no such instruction: `static inline long PTR_ERR(const void *ptr)'
> > include/linux/err.h:26: Error: junk at end of line, first unrecognized character is `{'
> > include/linux/err.h:27: Error: no such instruction: `return (long)ptr'
> > include/linux/err.h:28: Error: junk at end of line, first unrecognized character is `}'
> > include/linux/err.h:30: Error: no such instruction: `static inline long IS_ERR(const void *ptr)'
> > include/linux/err.h:31: Error: junk at end of line, first unrecognized character is `{'
> > include/linux/err.h:32: Error: no such instruction: `return unlikely(((unsigned long)ptr)>=(unsigned long)-4095)'
> > include/linux/err.h:33: Error: junk at end of line, first unrecognized character is `}'
> > distcc[7619] ERROR: compile (null) on localhost failed
> > make[1]: *** [arch/i386/kernel/vsyscall-sysenter.o] Error 1
> > make: *** [arch/i386/kernel/vsyscall-sysenter.o] Error 2

Built for me on i386 and x86_64.

> unlikely() shouldn't be used in code exported to user space. At least
> one architecture simply open-codes the __builtin_expect(); or we could
> introduce __likely() and __unlikely() for the benefit of userspace.

How did you determine that this had something to do with
userspace?

---
~Randy
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/