VFS: Make clone_mnt()/copy_tree()/collect_mounts() return errors
copy_tree() can theoretically fail in a case other than ENOMEM, but always returns NULL which is interpreted by callers as -ENOMEM. Change it to return an explicit error. Also change clone_mnt() for consistency and because union mounts will add new error cases. Thanks to Andreas Gruenbacher <agruen@suse.de> for a bug fix. [AV: folded braino fix by Dan Carpenter] Original-author: Valerie Aurora <vaurora@redhat.com> Signed-off-by: David Howells <dhowells@redhat.com> Cc: Valerie Aurora <valerie.aurora@gmail.com> Cc: Andreas Gruenbacher <agruen@suse.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -595,7 +595,7 @@ void audit_trim_trees(void)
|
||||
|
||||
root_mnt = collect_mounts(&path);
|
||||
path_put(&path);
|
||||
if (!root_mnt)
|
||||
if (IS_ERR(root_mnt))
|
||||
goto skip_it;
|
||||
|
||||
spin_lock(&hash_lock);
|
||||
@@ -669,8 +669,8 @@ int audit_add_tree_rule(struct audit_krule *rule)
|
||||
goto Err;
|
||||
mnt = collect_mounts(&path);
|
||||
path_put(&path);
|
||||
if (!mnt) {
|
||||
err = -ENOMEM;
|
||||
if (IS_ERR(mnt)) {
|
||||
err = PTR_ERR(mnt);
|
||||
goto Err;
|
||||
}
|
||||
|
||||
@@ -719,8 +719,8 @@ int audit_tag_tree(char *old, char *new)
|
||||
return err;
|
||||
tagged = collect_mounts(&path2);
|
||||
path_put(&path2);
|
||||
if (!tagged)
|
||||
return -ENOMEM;
|
||||
if (IS_ERR(tagged))
|
||||
return PTR_ERR(tagged);
|
||||
|
||||
err = kern_path(old, 0, &path1);
|
||||
if (err) {
|
||||
|
Reference in New Issue
Block a user