Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 146422
b: refs/heads/master
c: 5e751e9
h: refs/heads/master
v: v3
  • Loading branch information
David Howells authored and James Morris committed May 10, 2009
1 parent d107fcf commit 7478e9f
Show file tree
Hide file tree
Showing 7 changed files with 21 additions and 18 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d254117099d711f215e62427f55dfb8ebd5ad011
refs/heads/master: 5e751e992f3fb08ba35e1ca8095ec8fbf9eda523
6 changes: 3 additions & 3 deletions trunk/fs/compat.c
Original file line number Diff line number Diff line change
Expand Up @@ -1488,7 +1488,7 @@ int compat_do_execve(char * filename,
if (!bprm)
goto out_files;

retval = mutex_lock_interruptible(&current->cred_exec_mutex);
retval = mutex_lock_interruptible(&current->cred_guard_mutex);
if (retval < 0)
goto out_free;
current->in_execve = 1;
Expand Down Expand Up @@ -1550,7 +1550,7 @@ int compat_do_execve(char * filename,
/* execve succeeded */
current->fs->in_exec = 0;
current->in_execve = 0;
mutex_unlock(&current->cred_exec_mutex);
mutex_unlock(&current->cred_guard_mutex);
acct_update_integrals(current);
free_bprm(bprm);
if (displaced)
Expand All @@ -1573,7 +1573,7 @@ int compat_do_execve(char * filename,

out_unlock:
current->in_execve = 0;
mutex_unlock(&current->cred_exec_mutex);
mutex_unlock(&current->cred_guard_mutex);

out_free:
free_bprm(bprm);
Expand Down
10 changes: 5 additions & 5 deletions trunk/fs/exec.c
Original file line number Diff line number Diff line change
Expand Up @@ -1045,7 +1045,7 @@ void install_exec_creds(struct linux_binprm *bprm)
commit_creds(bprm->cred);
bprm->cred = NULL;

/* cred_exec_mutex must be held at least to this point to prevent
/* cred_guard_mutex must be held at least to this point to prevent
* ptrace_attach() from altering our determination of the task's
* credentials; any time after this it may be unlocked */

Expand All @@ -1055,7 +1055,7 @@ EXPORT_SYMBOL(install_exec_creds);

/*
* determine how safe it is to execute the proposed program
* - the caller must hold current->cred_exec_mutex to protect against
* - the caller must hold current->cred_guard_mutex to protect against
* PTRACE_ATTACH
*/
int check_unsafe_exec(struct linux_binprm *bprm)
Expand Down Expand Up @@ -1297,7 +1297,7 @@ int do_execve(char * filename,
if (!bprm)
goto out_files;

retval = mutex_lock_interruptible(&current->cred_exec_mutex);
retval = mutex_lock_interruptible(&current->cred_guard_mutex);
if (retval < 0)
goto out_free;
current->in_execve = 1;
Expand Down Expand Up @@ -1360,7 +1360,7 @@ int do_execve(char * filename,
/* execve succeeded */
current->fs->in_exec = 0;
current->in_execve = 0;
mutex_unlock(&current->cred_exec_mutex);
mutex_unlock(&current->cred_guard_mutex);
acct_update_integrals(current);
free_bprm(bprm);
if (displaced)
Expand All @@ -1383,7 +1383,7 @@ int do_execve(char * filename,

out_unlock:
current->in_execve = 0;
mutex_unlock(&current->cred_exec_mutex);
mutex_unlock(&current->cred_guard_mutex);

out_free:
free_bprm(bprm);
Expand Down
4 changes: 2 additions & 2 deletions trunk/include/linux/init_task.h
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,8 @@ extern struct cred init_cred;
.group_leader = &tsk, \
.real_cred = &init_cred, \
.cred = &init_cred, \
.cred_exec_mutex = \
__MUTEX_INITIALIZER(tsk.cred_exec_mutex), \
.cred_guard_mutex = \
__MUTEX_INITIALIZER(tsk.cred_guard_mutex), \
.comm = "swapper", \
.thread = INIT_THREAD, \
.fs = &init_fs, \
Expand Down
4 changes: 3 additions & 1 deletion trunk/include/linux/sched.h
Original file line number Diff line number Diff line change
Expand Up @@ -1247,7 +1247,9 @@ struct task_struct {
* credentials (COW) */
const struct cred *cred; /* effective (overridable) subjective task
* credentials (COW) */
struct mutex cred_exec_mutex; /* execve vs ptrace cred calculation mutex */
struct mutex cred_guard_mutex; /* guard against foreign influences on
* credential calculations
* (notably. ptrace) */

char comm[TASK_COMM_LEN]; /* executable name excluding path
- access with [gs]et_task_comm (which lock
Expand Down
4 changes: 2 additions & 2 deletions trunk/kernel/cred.c
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ EXPORT_SYMBOL(prepare_creds);

/*
* Prepare credentials for current to perform an execve()
* - The caller must hold current->cred_exec_mutex
* - The caller must hold current->cred_guard_mutex
*/
struct cred *prepare_exec_creds(void)
{
Expand Down Expand Up @@ -276,7 +276,7 @@ int copy_creds(struct task_struct *p, unsigned long clone_flags)
struct cred *new;
int ret;

mutex_init(&p->cred_exec_mutex);
mutex_init(&p->cred_guard_mutex);

if (
#ifdef CONFIG_KEYS
Expand Down
9 changes: 5 additions & 4 deletions trunk/kernel/ptrace.c
Original file line number Diff line number Diff line change
Expand Up @@ -185,10 +185,11 @@ int ptrace_attach(struct task_struct *task)
if (same_thread_group(task, current))
goto out;

/* Protect exec's credential calculations against our interference;
* SUID, SGID and LSM creds get determined differently under ptrace.
/* Protect the target's credential calculations against our
* interference; SUID, SGID and LSM creds get determined differently
* under ptrace.
*/
retval = mutex_lock_interruptible(&task->cred_exec_mutex);
retval = mutex_lock_interruptible(&task->cred_guard_mutex);
if (retval < 0)
goto out;

Expand Down Expand Up @@ -232,7 +233,7 @@ int ptrace_attach(struct task_struct *task)
bad:
write_unlock_irqrestore(&tasklist_lock, flags);
task_unlock(task);
mutex_unlock(&task->cred_exec_mutex);
mutex_unlock(&task->cred_guard_mutex);
out:
return retval;
}
Expand Down

0 comments on commit 7478e9f

Please sign in to comment.