Messages in this thread | | | From | Arnd Bergmann <> | Subject | Re: [PATCH] Return real errno from execve in ____call_usermodehelper | Date | Sun, 20 Aug 2006 15:01:28 +0200 |
| |
On Saturday 19 August 2006 10:42, Russell King wrote: > Maybe what we should be thinking of doing is changing execve() calls > to kernel_execve() which returns the error code. > > This way, architectures are free to implement execve() whatever way > they wish - and if they're concerned about using errno, that's their > own implementation specific detail.
Sounds good, it means we could finally kill __KERNEL_SYSCALLS__ along with lib/errno.c.
I guess a fallback for those that haven't yet done kernel_execve could be
#ifdef CONFIG_ARCH_KERNEL_EXECVE extern int kernel_execve(const char *filename, char *const argv[], char *const envp[]); #else static inline int kernel_execve(const char *filename, char *const argv[], char *const envp[]); { int errno; mm_segment_t old_fs = get_fs(); set_fs(KERNEL_DS); /* the kernel syscall macro modifies errno */ execve(filename, argv, envp); set_fs(old_fs); return errno; } #endif
With that in place, we can remove the global errno right away, and the kernel syscalls for any architecture that implements its own kernel_execve.
Arnd <>< - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |