Skip to content

Commit

Permalink
Merge branch 'audit.b51' of git://git.kernel.org/pub/scm/linux/kernel…
Browse files Browse the repository at this point in the history
…/git/viro/audit-current

* 'audit.b51' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current:
  [PATCH] list_for_each_rcu must die: audit
  [patch 1/1] audit_send_reply(): fix error-path memory leak
  [PATCH] open sessionid permissions
  • Loading branch information
Linus Torvalds committed May 19, 2008
2 parents e23a5f6 + 6793a05 commit 16ae527
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 9 deletions.
2 changes: 1 addition & 1 deletion fs/proc/base.c
Original file line number Diff line number Diff line change
Expand Up @@ -2441,7 +2441,7 @@ static const struct pid_entry tgid_base_stuff[] = {
REG("oom_adj", S_IRUGO|S_IWUSR, oom_adjust),
#ifdef CONFIG_AUDITSYSCALL
REG("loginuid", S_IWUSR|S_IRUGO, loginuid),
REG("sessionid", S_IRUSR, sessionid),
REG("sessionid", S_IRUGO, sessionid),
#endif
#ifdef CONFIG_FAULT_INJECTION
REG("make-it-fail", S_IRUGO|S_IWUSR, fault_inject),
Expand Down
11 changes: 6 additions & 5 deletions kernel/audit.c
Original file line number Diff line number Diff line change
Expand Up @@ -572,16 +572,17 @@ void audit_send_reply(int pid, int seq, int type, int done, int multi,

skb = audit_make_reply(pid, seq, type, done, multi, payload, size);
if (!skb)
return;
goto out;

reply->pid = pid;
reply->skb = skb;

tsk = kthread_run(audit_send_reply_thread, reply, "audit_send_reply");
if (IS_ERR(tsk)) {
kfree(reply);
kfree_skb(skb);
}
if (!IS_ERR(tsk))
return;
kfree_skb(skb);
out:
kfree(reply);
}

/*
Expand Down
5 changes: 2 additions & 3 deletions kernel/audit_tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -172,10 +172,9 @@ static void insert_hash(struct audit_chunk *chunk)
struct audit_chunk *audit_tree_lookup(const struct inode *inode)
{
struct list_head *list = chunk_hash(inode);
struct list_head *pos;
struct audit_chunk *p;

list_for_each_rcu(pos, list) {
struct audit_chunk *p = container_of(pos, struct audit_chunk, hash);
list_for_each_entry_rcu(p, list, hash) {
if (p->watch.inode == inode) {
get_inotify_watch(&p->watch);
return p;
Expand Down

0 comments on commit 16ae527

Please sign in to comment.