diff options
| author | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2006-11-22 13:06:44 -0500 |
|---|---|---|
| committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2006-11-22 13:06:44 -0500 |
| commit | 0bd2af46839ad6262d25714a6ec0365db9d6b98f (patch) | |
| tree | dcced72d230d69fd0c5816ac6dd03ab84799a93e /kernel/user.c | |
| parent | e138a5d2356729b8752e88520cc1525fae9794ac (diff) | |
| parent | f26b90440cd74c78fe10c9bd5160809704a9627c (diff) | |
Merge ../scsi-rc-fixes-2.6
Diffstat (limited to 'kernel/user.c')
| -rw-r--r-- | kernel/user.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/kernel/user.c b/kernel/user.c index 6408c0424291..220e586127a0 100644 --- a/kernel/user.c +++ b/kernel/user.c | |||
| @@ -187,6 +187,17 @@ void switch_uid(struct user_struct *new_user) | |||
| 187 | atomic_dec(&old_user->processes); | 187 | atomic_dec(&old_user->processes); |
| 188 | switch_uid_keyring(new_user); | 188 | switch_uid_keyring(new_user); |
| 189 | current->user = new_user; | 189 | current->user = new_user; |
| 190 | |||
| 191 | /* | ||
| 192 | * We need to synchronize with __sigqueue_alloc() | ||
| 193 | * doing a get_uid(p->user).. If that saw the old | ||
| 194 | * user value, we need to wait until it has exited | ||
| 195 | * its critical region before we can free the old | ||
| 196 | * structure. | ||
| 197 | */ | ||
| 198 | smp_mb(); | ||
| 199 | spin_unlock_wait(¤t->sighand->siglock); | ||
| 200 | |||
| 190 | free_uid(old_user); | 201 | free_uid(old_user); |
| 191 | suid_keys(current); | 202 | suid_keys(current); |
| 192 | } | 203 | } |
