FreeBSD kernel kern code
kern_exec.c File Reference
#include <sys/cdefs.h>
#include "opt_capsicum.h"
#include "opt_hwpmc_hooks.h"
#include "opt_ktrace.h"
#include "opt_vm.h"
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/acct.h>
#include <sys/asan.h>
#include <sys/capsicum.h>
#include <sys/compressor.h>
#include <sys/eventhandler.h>
#include <sys/exec.h>
#include <sys/fcntl.h>
#include <sys/filedesc.h>
#include <sys/imgact.h>
#include <sys/imgact_elf.h>
#include <sys/kernel.h>
#include <sys/lock.h>
#include <sys/malloc.h>
#include <sys/mman.h>
#include <sys/mount.h>
#include <sys/mutex.h>
#include <sys/namei.h>
#include <sys/priv.h>
#include <sys/proc.h>
#include <sys/ptrace.h>
#include <sys/reg.h>
#include <sys/resourcevar.h>
#include <sys/rwlock.h>
#include <sys/sched.h>
#include <sys/sdt.h>
#include <sys/sf_buf.h>
#include <sys/shm.h>
#include <sys/signalvar.h>
#include <sys/smp.h>
#include <sys/stat.h>
#include <sys/syscallsubr.h>
#include <sys/sysctl.h>
#include <sys/sysent.h>
#include <sys/sysproto.h>
#include <sys/timers.h>
#include <sys/umtxvar.h>
#include <sys/vnode.h>
#include <sys/wait.h>
#include <vm/vm.h>
#include <vm/vm_param.h>
#include <vm/pmap.h>
#include <vm/vm_page.h>
#include <vm/vm_map.h>
#include <vm/vm_kern.h>
#include <vm/vm_extern.h>
#include <vm/vm_object.h>
#include <vm/vm_pager.h>
#include <security/audit/audit.h>
#include <security/mac/mac_framework.h>

Go to the source code of this file.

Data Structures

struct  execve_args
 
struct  fexecve_args
 
struct  __mac_execve_args
 
struct  exec_args_kva
 

Functions

 __FBSDID ("$FreeBSD$")
 
 SDT_PROVIDER_DECLARE (proc)
 
 SDT_PROBE_DEFINE1 (proc,,, exec, "char *")
 
 SDT_PROBE_DEFINE1 (proc,,, exec__failure, "int")
 
 SDT_PROBE_DEFINE1 (proc,,, exec__success, "char *")
 
 MALLOC_DEFINE (M_PARGS, "proc-args", "Process arguments")
 
 SYSCTL_INT (_kern, OID_AUTO, coredump_pack_fileinfo, CTLFLAG_RWTUN, &coredump_pack_fileinfo, 0, "Enable file path packing in 'procstat -f' coredump notes")
 
 SYSCTL_INT (_kern, OID_AUTO, coredump_pack_vmmapinfo, CTLFLAG_RWTUN, &coredump_pack_vmmapinfo, 0, "Enable file path packing in 'procstat -v' coredump notes")
 
static int sysctl_kern_ps_strings (SYSCTL_HANDLER_ARGS)
 
static int sysctl_kern_usrstack (SYSCTL_HANDLER_ARGS)
 
static int sysctl_kern_stackprot (SYSCTL_HANDLER_ARGS)
 
static int do_execve (struct thread *td, struct image_args *args, struct mac *mac_p, struct vmspace *oldvmspace)
 
 SYSCTL_PROC (_kern, KERN_PS_STRINGS, ps_strings, CTLTYPE_ULONG|CTLFLAG_RD|CTLFLAG_CAPRD|CTLFLAG_MPSAFE, NULL, 0, sysctl_kern_ps_strings, "LU", "Location of process' ps_strings structure")
 
 SYSCTL_PROC (_kern, KERN_USRSTACK, usrstack, CTLTYPE_ULONG|CTLFLAG_RD|CTLFLAG_CAPRD|CTLFLAG_MPSAFE, NULL, 0, sysctl_kern_usrstack, "LU", "Top of process stack")
 
 SYSCTL_PROC (_kern, OID_AUTO, stackprot, CTLTYPE_INT|CTLFLAG_RD|CTLFLAG_MPSAFE, NULL, 0, sysctl_kern_stackprot, "I", "Stack memory permissions")
 
 SYSCTL_ULONG (_kern, OID_AUTO, ps_arg_cache_limit, CTLFLAG_RW, &ps_arg_cache_limit, 0, "Process' command line characters cache limit")
 
 SYSCTL_INT (_kern, OID_AUTO, disallow_high_osrel, CTLFLAG_RW, &disallow_high_osrel, 0, "Disallow execution of binaries built for higher version of the world")
 
 SYSCTL_INT (_security_bsd, OID_AUTO, map_at_zero, CTLFLAG_RWTUN, &map_at_zero, 0, "Permit processes to map an object at virtual address 0.")
 
 SYSCTL_INT (_kern, OID_AUTO, core_dump_can_intr, CTLFLAG_RWTUN, &core_dump_can_intr, 0, "Core dumping interruptible with SIGKILL")
 
int sys_execve (struct thread *td, struct execve_args *uap)
 
int sys_fexecve (struct thread *td, struct fexecve_args *uap)
 
int sys___mac_execve (struct thread *td, struct __mac_execve_args *uap)
 
int pre_execve (struct thread *td, struct vmspace **oldvmspace)
 
void post_execve (struct thread *td, int error, struct vmspace *oldvmspace)
 
int kern_execve (struct thread *td, struct image_args *args, struct mac *mac_p, struct vmspace *oldvmspace)
 
static void execve_nosetid (struct image_params *imgp)
 
void exec_cleanup (struct thread *td, struct vmspace *oldvmspace)
 
int exec_map_first_page (struct image_params *imgp)
 
void exec_unmap_first_page (struct image_params *imgp)
 
void exec_onexec_old (struct thread *td)
 
void exec_free_abi_mappings (struct proc *p)
 
int exec_new_vmspace (struct image_params *imgp, struct sysentvec *sv)
 
int exec_map_stack (struct image_params *imgp)
 
int exec_copyin_args (struct image_args *args, const char *fname, enum uio_seg segflg, char **argv, char **envv)
 
 DPCPU_DEFINE_STATIC (struct exec_args_kva *, exec_args_kva)
 
static SLIST_HEAD (exec_args_kva)
 
 SYSINIT (exec_args_kva, SI_SUB_EXEC, SI_ORDER_ANY, exec_prealloc_args_kva, NULL)
 
static vm_offset_t exec_alloc_args_kva (void **cookie)
 
static void exec_release_args_kva (struct exec_args_kva *argkva, u_int gen)
 
static void exec_free_args_kva (void *cookie)
 
static void exec_args_kva_lowmem (void *arg __unused)
 
 EVENTHANDLER_DEFINE (vm_lowmem, exec_args_kva_lowmem, NULL, EVENTHANDLER_PRI_ANY)
 
int exec_alloc_args (struct image_args *args)
 
void exec_free_args (struct image_args *args)
 
int exec_args_add_fname (struct image_args *args, const char *fname, enum uio_seg segflg)
 
static int exec_args_add_str (struct image_args *args, const char *str, enum uio_seg segflg, int *countp)
 
int exec_args_add_arg (struct image_args *args, const char *argp, enum uio_seg segflg)
 
int exec_args_add_env (struct image_args *args, const char *envp, enum uio_seg segflg)
 
int exec_args_adjust_args (struct image_args *args, size_t consume, ssize_t extend)
 
char * exec_args_get_begin_envv (struct image_args *args)
 
int exec_copyout_strings (struct image_params *imgp, uintptr_t *stack_base)
 
int exec_check_permissions (struct image_params *imgp)
 
int exec_register (const struct execsw *execsw_arg)
 
int exec_unregister (const struct execsw *execsw_arg)
 
static int compress_chunk (struct coredump_params *cp, char *base, char *buf, size_t len)
 
int core_write (struct coredump_params *cp, const void *base, size_t len, off_t offset, enum uio_seg seg, size_t *resid)
 
int core_output (char *base, size_t len, off_t offset, struct coredump_params *cp, void *tmpbuf)
 
int sbuf_drain_core_output (void *arg, const char *data, int len)
 

Variables

int coredump_pack_fileinfo = 1
 
int coredump_pack_vmmapinfo = 1
 
u_long ps_arg_cache_limit = PAGE_SIZE / 16
 
static int disallow_high_osrel
 
static int map_at_zero = 0
 
static int core_dump_can_intr = 1
 
static const struct execsw ** execsw
 

Function Documentation

◆ __FBSDID()

__FBSDID ( "$FreeBSD$"  )

◆ compress_chunk()

static int compress_chunk ( struct coredump_params *  cp,
char *  base,
char *  buf,
size_t  len 
)
static

Definition at line 1902 of file kern_exec.c.

References buf, and compressor_write().

Referenced by core_output().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ core_output()

int core_output ( char *  base,
size_t  len,
off_t  offset,
struct coredump_params *  cp,
void *  tmpbuf 
)

Definition at line 1937 of file kern_exec.c.

References compress_chunk(), core_dump_can_intr, core_write(), curproc_sigkilled(), vn_finished_write(), vn_start_write(), and vn_truncate_locked().

Referenced by coredump().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ core_write()

int core_write ( struct coredump_params *  cp,
const void *  base,
size_t  len,
off_t  offset,
enum uio_seg  seg,
size_t *  resid 
)

Definition at line 1927 of file kern_exec.c.

References vn_rdwr_inchunks().

Referenced by core_compressed_write(), core_output(), and sbuf_drain_core_output().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ do_execve()

◆ DPCPU_DEFINE_STATIC()

DPCPU_DEFINE_STATIC ( struct exec_args_kva ,
exec_args_kva   
)

◆ EVENTHANDLER_DEFINE()

EVENTHANDLER_DEFINE ( vm_lowmem  ,
exec_args_kva_lowmem  ,
NULL  ,
EVENTHANDLER_PRI_ANY   
)

◆ exec_alloc_args()

int exec_alloc_args ( struct image_args *  args)

Definition at line 1458 of file kern_exec.c.

References exec_alloc_args_kva().

Referenced by exec_copyin_args(), and start_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ exec_alloc_args_kva()

static vm_offset_t exec_alloc_args_kva ( void **  cookie)
static

Definition at line 1371 of file kern_exec.c.

References exec_args_kva::addr, and kasan_mark().

Referenced by exec_alloc_args().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ exec_args_add_arg()

int exec_args_add_arg ( struct image_args *  args,
const char *  argp,
enum uio_seg  segflg 
)

Definition at line 1548 of file kern_exec.c.

References exec_args_add_str().

Referenced by exec_copyin_args(), and start_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ exec_args_add_env()

int exec_args_add_env ( struct image_args *  args,
const char *  envp,
enum uio_seg  segflg 
)

Definition at line 1558 of file kern_exec.c.

References exec_args_add_str().

Referenced by exec_copyin_args().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ exec_args_add_fname()

int exec_args_add_fname ( struct image_args *  args,
const char *  fname,
enum uio_seg  segflg 
)

Definition at line 1494 of file kern_exec.c.

Referenced by exec_copyin_args(), and start_init().

Here is the caller graph for this function:

◆ exec_args_add_str()

static int exec_args_add_str ( struct image_args *  args,
const char *  str,
enum uio_seg  segflg,
int *  countp 
)
static

Definition at line 1526 of file kern_exec.c.

Referenced by exec_args_add_arg(), and exec_args_add_env().

Here is the caller graph for this function:

◆ exec_args_adjust_args()

int exec_args_adjust_args ( struct image_args *  args,
size_t  consume,
ssize_t  extend 
)

Definition at line 1569 of file kern_exec.c.

Referenced by exec_shell_imgact(), and imgact_binmisc_exec().

Here is the caller graph for this function:

◆ exec_args_get_begin_envv()

char * exec_args_get_begin_envv ( struct image_args *  args)

Definition at line 1589 of file kern_exec.c.

Referenced by do_execve(), and kern_execve().

Here is the caller graph for this function:

◆ exec_args_kva_lowmem()

static void exec_args_kva_lowmem ( void *arg  __unused)
static

Definition at line 1421 of file kern_exec.c.

References exec_release_args_kva(), exec_args_kva::gen, and SLIST_HEAD().

Here is the call graph for this function:

◆ exec_check_permissions()

int exec_check_permissions ( struct image_params *  imgp)

Definition at line 1772 of file kern_exec.c.

Referenced by do_execve(), and load_file().

Here is the caller graph for this function:

◆ exec_cleanup()

void exec_cleanup ( struct thread *  td,
struct vmspace *  oldvmspace 
)

Definition at line 1028 of file kern_exec.c.

Referenced by do_execve(), post_execve(), and start_init().

Here is the caller graph for this function:

◆ exec_copyin_args()

int exec_copyin_args ( struct image_args *  args,
const char *  fname,
enum uio_seg  segflg,
char **  argv,
char **  envv 
)

Definition at line 1273 of file kern_exec.c.

References exec_alloc_args(), exec_args_add_arg(), exec_args_add_env(), exec_args_add_fname(), and exec_free_args().

Referenced by sys___mac_execve(), sys_execve(), and sys_fexecve().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ exec_copyout_strings()

int exec_copyout_strings ( struct image_params *  imgp,
uintptr_t *  stack_base 
)

Definition at line 1605 of file kern_exec.c.

References pagesizes, and sysent.

◆ exec_free_abi_mappings()

void exec_free_abi_mappings ( struct proc *  p)

Definition at line 1097 of file kern_exec.c.

Referenced by exec_new_vmspace(), and exit1().

Here is the caller graph for this function:

◆ exec_free_args()

void exec_free_args ( struct image_args *  args)

Definition at line 1466 of file kern_exec.c.

References exec_free_args_kva(), and free().

Referenced by do_execve(), exec_copyin_args(), and kern_execve().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ exec_free_args_kva()

static void exec_free_args_kva ( void *  cookie)
static

Definition at line 1414 of file kern_exec.c.

References exec_release_args_kva().

Referenced by exec_free_args().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ exec_map_first_page()

int exec_map_first_page ( struct image_params *  imgp)

Definition at line 1039 of file kern_exec.c.

References exec_unmap_first_page(), and sf_buf_alloc().

Referenced by do_execve(), and load_file().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ exec_map_stack()

int exec_map_stack ( struct image_params *  imgp)

Definition at line 1195 of file kern_exec.c.

References kern_setrlimit(), lim_max(), lim_rlimit_proc(), maxssiz, sgrowsiz, and uprintf().

Referenced by exec_aout_imgact().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ exec_new_vmspace()

int exec_new_vmspace ( struct image_params *  imgp,
struct sysentvec *  sv 
)

Definition at line 1119 of file kern_exec.c.

References exec_free_abi_mappings(), itimers_exec(), map_at_zero, and shmexit().

Referenced by exec_aout_imgact().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ exec_onexec_old()

void exec_onexec_old ( struct thread *  td)

Definition at line 1084 of file kern_exec.c.

References sigfastblock_clear(), and umtx_exec().

Here is the call graph for this function:

◆ exec_register()

int exec_register ( const struct execsw execsw_arg)

Definition at line 1847 of file kern_exec.c.

References count, execsw, free(), and malloc().

Here is the call graph for this function:

◆ exec_release_args_kva()

static void exec_release_args_kva ( struct exec_args_kva argkva,
u_int  gen 
)
static

Definition at line 1392 of file kern_exec.c.

References exec_args_kva::addr, exec_args_kva::gen, kasan_mark(), and wakeup_one().

Referenced by exec_args_kva_lowmem(), and exec_free_args_kva().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ exec_unmap_first_page()

void exec_unmap_first_page ( struct image_params *  imgp)

Definition at line 1071 of file kern_exec.c.

References sf_buf_free().

Referenced by do_execve(), exec_map_first_page(), and load_file().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ exec_unregister()

int exec_unregister ( const struct execsw execsw_arg)

Definition at line 1869 of file kern_exec.c.

References count, execsw, free(), malloc(), and panic().

Here is the call graph for this function:

◆ execve_nosetid()

static void execve_nosetid ( struct image_params *  imgp)
static

Definition at line 369 of file kern_exec.c.

References crfree().

Referenced by do_execve().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ kern_execve()

int kern_execve ( struct thread *  td,
struct image_args *  args,
struct mac *  mac_p,
struct vmspace *  oldvmspace 
)

Definition at line 350 of file kern_exec.c.

References do_execve(), exec_args_get_begin_envv(), and exec_free_args().

Referenced by start_init(), sys___mac_execve(), sys_execve(), and sys_fexecve().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MALLOC_DEFINE()

MALLOC_DEFINE ( M_PARGS  ,
"proc-args"  ,
"Process arguments"   
)

◆ post_execve()

void post_execve ( struct thread *  td,
int  error,
struct vmspace *  oldvmspace 
)

Definition at line 321 of file kern_exec.c.

References exec_cleanup(), thread_single(), and thread_single_end().

Referenced by sys___mac_execve(), sys_execve(), and sys_fexecve().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pre_execve()

int pre_execve ( struct thread *  td,
struct vmspace **  oldvmspace 
)

Definition at line 300 of file kern_exec.c.

References thread_single().

Referenced by sys___mac_execve(), sys_execve(), and sys_fexecve().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sbuf_drain_core_output()

int sbuf_drain_core_output ( void *  arg,
const char *  data,
int  len 
)

Definition at line 2014 of file kern_exec.c.

References compressor_write(), core_write(), and data.

Referenced by corehdr().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SDT_PROBE_DEFINE1() [1/3]

SDT_PROBE_DEFINE1 ( proc  ,
exec  ,
"char *"   
)

◆ SDT_PROBE_DEFINE1() [2/3]

SDT_PROBE_DEFINE1 ( proc  ,
exec__failure  ,
"int"   
)

◆ SDT_PROBE_DEFINE1() [3/3]

SDT_PROBE_DEFINE1 ( proc  ,
exec__success  ,
"char *"   
)

◆ SDT_PROVIDER_DECLARE()

SDT_PROVIDER_DECLARE ( proc  )

◆ SLIST_HEAD()

static SLIST_HEAD ( exec_args_kva  )
static

Definition at line 1349 of file kern_exec.c.

Referenced by exec_args_kva_lowmem().

Here is the caller graph for this function:

◆ sys___mac_execve()

int sys___mac_execve ( struct thread *  td,
struct __mac_execve_args uap 
)

◆ sys_execve()

int sys_execve ( struct thread *  td,
struct execve_args uap 
)

Definition at line 221 of file kern_exec.c.

References execve_args::argv, execve_args::envv, exec_copyin_args(), execve_args::fname, kern_execve(), post_execve(), and pre_execve().

Here is the call graph for this function:

◆ sys_fexecve()

int sys_fexecve ( struct thread *  td,
struct fexecve_args uap 
)

Definition at line 247 of file kern_exec.c.

References fexecve_args::argv, fexecve_args::envv, exec_copyin_args(), fexecve_args::fd, kern_execve(), post_execve(), and pre_execve().

Here is the call graph for this function:

◆ SYSCTL_INT() [1/5]

SYSCTL_INT ( _kern  ,
OID_AUTO  ,
core_dump_can_intr  ,
CTLFLAG_RWTUN  ,
core_dump_can_intr,
,
"Core dumping interruptible with SIGKILL"   
)

◆ SYSCTL_INT() [2/5]

SYSCTL_INT ( _kern  ,
OID_AUTO  ,
coredump_pack_fileinfo  ,
CTLFLAG_RWTUN  ,
coredump_pack_fileinfo,
,
"Enable file path packing in 'procstat -f' coredump notes"   
)

◆ SYSCTL_INT() [3/5]

SYSCTL_INT ( _kern  ,
OID_AUTO  ,
coredump_pack_vmmapinfo  ,
CTLFLAG_RWTUN  ,
coredump_pack_vmmapinfo,
,
"Enable file path packing in 'procstat -v' coredump notes"   
)

◆ SYSCTL_INT() [4/5]

SYSCTL_INT ( _kern  ,
OID_AUTO  ,
disallow_high_osrel  ,
CTLFLAG_RW  ,
disallow_high_osrel,
,
"Disallow execution of binaries built for higher version of the world"   
)

◆ SYSCTL_INT() [5/5]

SYSCTL_INT ( _security_bsd  ,
OID_AUTO  ,
map_at_zero  ,
CTLFLAG_RWTUN  ,
map_at_zero,
,
"Permit processes to map an object at virtual address 0."   
)

◆ sysctl_kern_ps_strings()

static int sysctl_kern_ps_strings ( SYSCTL_HANDLER_ARGS  )
static

Definition at line 160 of file kern_exec.c.

◆ sysctl_kern_stackprot()

static int sysctl_kern_stackprot ( SYSCTL_HANDLER_ARGS  )
static

Definition at line 197 of file kern_exec.c.

◆ sysctl_kern_usrstack()

static int sysctl_kern_usrstack ( SYSCTL_HANDLER_ARGS  )
static

Definition at line 178 of file kern_exec.c.

◆ SYSCTL_PROC() [1/3]

SYSCTL_PROC ( _kern  ,
KERN_PS_STRINGS  ,
ps_strings  ,
CTLTYPE_ULONG|CTLFLAG_RD|CTLFLAG_CAPRD|  CTLFLAG_MPSAFE,
NULL  ,
,
sysctl_kern_ps_strings  ,
"LU"  ,
"Location of process' ps_strings structure"   
)

◆ SYSCTL_PROC() [2/3]

SYSCTL_PROC ( _kern  ,
KERN_USRSTACK  ,
usrstack  ,
CTLTYPE_ULONG|CTLFLAG_RD|CTLFLAG_CAPRD|  CTLFLAG_MPSAFE,
NULL  ,
,
sysctl_kern_usrstack  ,
"LU"  ,
"Top of process stack"   
)

◆ SYSCTL_PROC() [3/3]

SYSCTL_PROC ( _kern  ,
OID_AUTO  ,
stackprot  ,
CTLTYPE_INT|CTLFLAG_RD|  CTLFLAG_MPSAFE,
NULL  ,
,
sysctl_kern_stackprot  ,
"I"  ,
"Stack memory permissions"   
)

◆ SYSCTL_ULONG()

SYSCTL_ULONG ( _kern  ,
OID_AUTO  ,
ps_arg_cache_limit  ,
CTLFLAG_RW  ,
ps_arg_cache_limit,
,
"Process' command line characters cache limit"   
)

◆ SYSINIT()

SYSINIT ( exec_args_kva  ,
SI_SUB_EXEC  ,
SI_ORDER_ANY  ,
exec_prealloc_args_kva  ,
NULL   
)

Variable Documentation

◆ core_dump_can_intr

int core_dump_can_intr = 1
static

Definition at line 154 of file kern_exec.c.

Referenced by core_output().

◆ coredump_pack_fileinfo

int coredump_pack_fileinfo = 1

Definition at line 110 of file kern_exec.c.

Referenced by note_procstat_files().

◆ coredump_pack_vmmapinfo

int coredump_pack_vmmapinfo = 1

Definition at line 115 of file kern_exec.c.

Referenced by note_procstat_vmmap().

◆ disallow_high_osrel

int disallow_high_osrel
static

Definition at line 145 of file kern_exec.c.

Referenced by do_execve().

◆ execsw

const struct execsw** execsw
static

Definition at line 210 of file kern_exec.c.

Referenced by do_execve(), exec_register(), and exec_unregister().

◆ map_at_zero

int map_at_zero = 0
static

Definition at line 150 of file kern_exec.c.

Referenced by exec_new_vmspace().

◆ ps_arg_cache_limit

u_long ps_arg_cache_limit = PAGE_SIZE / 16

Definition at line 140 of file kern_exec.c.

Referenced by do_execve(), and sysctl_kern_proc_args().