The struct automount is allocated before validating the path, but both
error paths (filename_lookup failure and !d_is_dir check) skip freeing
it. Move the allocation after validation succeeds.

Signed-off-by: Ahmad Fatoum <[email protected]>
---
 fs/fs.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/fs.c b/fs/fs.c
index 5ca98ec12704..dc6c30802d89 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -3450,7 +3450,7 @@ EXPORT_SYMBOL(automount_remove);
 
 int automount_add(const char *pathname, const char *cmd)
 {
-       struct automount *am = xzalloc(sizeof(*am));
+       struct automount *am;
        struct path path;
        int ret;
 
@@ -3463,6 +3463,7 @@ int automount_add(const char *pathname, const char *cmd)
                goto out;
        }
 
+       am = xzalloc(sizeof(*am));
        am->path = dpath(path.dentry, d_root);
        am->dentry = dget(path.dentry);
        am->dentry->d_flags |= DCACHE_NEED_AUTOMOUNT;
-- 
2.47.3


Reply via email to