diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-06-26 20:10:04 +0200 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-07-22 21:57:54 +0200 |
commit | 41f9d29f09ca0b22c3631e8a39676e74cda9bcc0 (patch) | |
tree | 7ab5ed25f14466471fb55536e1cf71c514fb7fe9 /security/keys/process_keys.c | |
parent | signal: make sure we don't get stopped with pending task_work (diff) | |
download | linux-41f9d29f09ca0b22c3631e8a39676e74cda9bcc0.tar.xz linux-41f9d29f09ca0b22c3631e8a39676e74cda9bcc0.zip |
trimming task_work: kill ->data
get rid of the only user of ->data; this is _not_ the final variant - in the
end we'll have task_work and rcu_head identical and just use cred->rcu,
at which point the separate allocation will be gone completely.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'security/keys/process_keys.c')
-rw-r--r-- | security/keys/process_keys.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/security/keys/process_keys.c b/security/keys/process_keys.c index 4ad54eea1ea4..c9b07c97d7f2 100644 --- a/security/keys/process_keys.c +++ b/security/keys/process_keys.c @@ -837,9 +837,10 @@ error: void key_change_session_keyring(struct task_work *twork) { const struct cred *old = current_cred(); - struct cred *new = twork->data; + struct kludge *p = container_of(twork, struct kludge, twork); + struct cred *new = p->cred; - kfree(twork); + kfree(p); if (unlikely(current->flags & PF_EXITING)) { put_cred(new); return; |