execve.c 537 B

1234567891011121314151617181920212223
  1. #include <asm/bug.h>
  2. #include <asm/uaccess.h>
  3. #define __KERNEL_SYSCALLS__
  4. static int errno __attribute__((unused));
  5. #include <asm/unistd.h>
  6. #ifdef _syscall3
  7. int kernel_execve (const char *filename, char *const argv[], char *const envp[])
  8. __attribute__((__weak__));
  9. int kernel_execve (const char *filename, char *const argv[], char *const envp[])
  10. {
  11. mm_segment_t fs = get_fs();
  12. int ret;
  13. WARN_ON(segment_eq(fs, USER_DS));
  14. ret = execve(filename, (char **)argv, (char **)envp);
  15. if (ret)
  16. ret = -errno;
  17. return ret;
  18. }
  19. #endif