Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

do_execveat_common(): don't consume filename reference

... and convert its callers to CLASS(filename...)

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro 194c760b 88b33614

+12 -15
+12 -15
fs/exec.c
··· 1789 1789 * whether NPROC limit is still exceeded. 1790 1790 */ 1791 1791 if ((current->flags & PF_NPROC_EXCEEDED) && 1792 - is_rlimit_overlimit(current_ucounts(), UCOUNT_RLIMIT_NPROC, rlimit(RLIMIT_NPROC))) { 1793 - retval = -EAGAIN; 1794 - goto out_ret; 1795 - } 1792 + is_rlimit_overlimit(current_ucounts(), UCOUNT_RLIMIT_NPROC, rlimit(RLIMIT_NPROC))) 1793 + return -EAGAIN; 1796 1794 1797 1795 /* We're below the limit (still or again), so we don't want to make 1798 1796 * further execve() calls fail. */ 1799 1797 current->flags &= ~PF_NPROC_EXCEEDED; 1800 1798 1801 1799 bprm = alloc_bprm(fd, filename, flags); 1802 - if (IS_ERR(bprm)) { 1803 - retval = PTR_ERR(bprm); 1804 - goto out_ret; 1805 - } 1800 + if (IS_ERR(bprm)) 1801 + return PTR_ERR(bprm); 1806 1802 1807 1803 retval = count(argv, MAX_ARG_STRINGS); 1808 1804 if (retval < 0) ··· 1846 1850 retval = bprm_execve(bprm); 1847 1851 out_free: 1848 1852 free_bprm(bprm); 1849 - 1850 - out_ret: 1851 - putname(filename); 1852 1853 return retval; 1853 1854 } 1854 1855 ··· 1934 1941 const char __user *const __user *, argv, 1935 1942 const char __user *const __user *, envp) 1936 1943 { 1937 - return do_execveat_common(AT_FDCWD, getname(filename), 1944 + CLASS(filename, name)(filename); 1945 + return do_execveat_common(AT_FDCWD, name, 1938 1946 native_arg(argv), native_arg(envp), 0); 1939 1947 } 1940 1948 ··· 1945 1951 const char __user *const __user *, envp, 1946 1952 int, flags) 1947 1953 { 1948 - return do_execveat_common(fd, getname_uflags(filename, flags), 1954 + CLASS(filename_uflags, name)(filename, flags); 1955 + return do_execveat_common(fd, name, 1949 1956 native_arg(argv), native_arg(envp), flags); 1950 1957 } 1951 1958 ··· 1961 1966 const compat_uptr_t __user *, argv, 1962 1967 const compat_uptr_t __user *, envp) 1963 1968 { 1964 - return do_execveat_common(AT_FDCWD, getname(filename), 1969 + CLASS(filename, name)(filename); 1970 + return do_execveat_common(AT_FDCWD, name, 1965 1971 compat_arg(argv), compat_arg(envp), 0); 1966 1972 } 1967 1973 ··· 1972 1976 const compat_uptr_t __user *, envp, 1973 1977 int, flags) 1974 1978 { 1975 - return do_execveat_common(fd, getname_uflags(filename, flags), 1979 + CLASS(filename_uflags, name)(filename, flags); 1980 + return do_execveat_common(fd, name, 1976 1981 compat_arg(argv), compat_arg(envp), flags); 1977 1982 } 1978 1983 #endif