diff options
author | Jan Kara <jack@suse.cz> | 2016-12-22 04:15:20 -0500 |
---|---|---|
committer | Paul Moore <paul@paul-moore.com> | 2016-12-23 16:40:32 -0500 |
commit | e3ba730702af370563f66cb610b71aa0ca67955e (patch) | |
tree | 6a7dd8a17c9fde8851366f785faa4d9ce6462fe2 /kernel/audit_tree.c | |
parent | 533c7b69c764ad5febb3e716899f43a75564fcab (diff) |
fsnotify: Remove fsnotify_duplicate_mark()
There are only two calls sites of fsnotify_duplicate_mark(). Those are
in kernel/audit_tree.c and both are bogus. Vfsmount pointer is unused
for audit tree, inode pointer and group gets set in
fsnotify_add_mark_locked() later anyway, mask and free_mark are already
set in alloc_chunk(). In fact, calling fsnotify_duplicate_mark() is
actively harmful because following fsnotify_add_mark_locked() will leak
group reference by overwriting the group pointer. So just remove the two
calls to fsnotify_duplicate_mark() and the function.
Signed-off-by: Jan Kara <jack@suse.cz>
[PM: line wrapping to fit in 80 chars]
Signed-off-by: Paul Moore <paul@paul-moore.com>
Diffstat (limited to 'kernel/audit_tree.c')
-rw-r--r-- | kernel/audit_tree.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel/audit_tree.c b/kernel/audit_tree.c index 055f11b0a50f..b4b58400531f 100644 --- a/kernel/audit_tree.c +++ b/kernel/audit_tree.c | |||
@@ -258,8 +258,8 @@ static void untag_chunk(struct node *p) | |||
258 | if (!new) | 258 | if (!new) |
259 | goto Fallback; | 259 | goto Fallback; |
260 | 260 | ||
261 | fsnotify_duplicate_mark(&new->mark, entry); | 261 | if (fsnotify_add_mark(&new->mark, |
262 | if (fsnotify_add_mark(&new->mark, new->mark.group, new->mark.inode, NULL, 1)) { | 262 | entry->group, entry->inode, NULL, 1)) { |
263 | fsnotify_put_mark(&new->mark); | 263 | fsnotify_put_mark(&new->mark); |
264 | goto Fallback; | 264 | goto Fallback; |
265 | } | 265 | } |
@@ -395,8 +395,8 @@ static int tag_chunk(struct inode *inode, struct audit_tree *tree) | |||
395 | return -ENOENT; | 395 | return -ENOENT; |
396 | } | 396 | } |
397 | 397 | ||
398 | fsnotify_duplicate_mark(chunk_entry, old_entry); | 398 | if (fsnotify_add_mark(chunk_entry, |
399 | if (fsnotify_add_mark(chunk_entry, chunk_entry->group, chunk_entry->inode, NULL, 1)) { | 399 | old_entry->group, old_entry->inode, NULL, 1)) { |
400 | spin_unlock(&old_entry->lock); | 400 | spin_unlock(&old_entry->lock); |
401 | fsnotify_put_mark(chunk_entry); | 401 | fsnotify_put_mark(chunk_entry); |
402 | fsnotify_put_mark(old_entry); | 402 | fsnotify_put_mark(old_entry); |