From 808f0e9477920bf55669caa6e77f25e3d3b317a4 Mon Sep 17 00:00:00 2001 From: Kentaro Takeda Date: Thu, 5 Feb 2009 17:18:11 +0900 Subject: [PATCH] --- yaml --- r: 132610 b: refs/heads/master c: f9ce1f1cda8b73a36f47e424975a9dfa78b7840c h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/compat.c | 3 +++ trunk/fs/exec.c | 3 +++ trunk/include/linux/sched.h | 2 ++ 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index d60b6b7e95dd..15b12769b81a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 523979adfa0b79d4e3aa053220c37a9233294206 +refs/heads/master: f9ce1f1cda8b73a36f47e424975a9dfa78b7840c diff --git a/trunk/fs/compat.c b/trunk/fs/compat.c index 65a070e705ab..25589f8322f2 100644 --- a/trunk/fs/compat.c +++ b/trunk/fs/compat.c @@ -1402,6 +1402,7 @@ int compat_do_execve(char * filename, retval = mutex_lock_interruptible(¤t->cred_exec_mutex); if (retval < 0) goto out_free; + current->in_execve = 1; retval = -ENOMEM; bprm->cred = prepare_exec_creds(); @@ -1454,6 +1455,7 @@ int compat_do_execve(char * filename, goto out; /* execve succeeded */ + current->in_execve = 0; mutex_unlock(¤t->cred_exec_mutex); acct_update_integrals(current); free_bprm(bprm); @@ -1470,6 +1472,7 @@ int compat_do_execve(char * filename, } out_unlock: + current->in_execve = 0; mutex_unlock(¤t->cred_exec_mutex); out_free: diff --git a/trunk/fs/exec.c b/trunk/fs/exec.c index febfd8ed6ad1..9881dc3bb488 100644 --- a/trunk/fs/exec.c +++ b/trunk/fs/exec.c @@ -1278,6 +1278,7 @@ int do_execve(char * filename, retval = mutex_lock_interruptible(¤t->cred_exec_mutex); if (retval < 0) goto out_free; + current->in_execve = 1; retval = -ENOMEM; bprm->cred = prepare_exec_creds(); @@ -1331,6 +1332,7 @@ int do_execve(char * filename, goto out; /* execve succeeded */ + current->in_execve = 0; mutex_unlock(¤t->cred_exec_mutex); acct_update_integrals(current); free_bprm(bprm); @@ -1349,6 +1351,7 @@ int do_execve(char * filename, } out_unlock: + current->in_execve = 0; mutex_unlock(¤t->cred_exec_mutex); out_free: diff --git a/trunk/include/linux/sched.h b/trunk/include/linux/sched.h index 2127e959e0f4..397c20cfb6a5 100644 --- a/trunk/include/linux/sched.h +++ b/trunk/include/linux/sched.h @@ -1158,6 +1158,8 @@ struct task_struct { /* ??? */ unsigned int personality; unsigned did_exec:1; + unsigned in_execve:1; /* Tell the LSMs that the process is doing an + * execve */ pid_t pid; pid_t tgid;