]> git.baikalelectronics.ru Git - kernel.git/commitdiff
smb: client: fix warning in cifs_smb3_do_mount()
authorPaulo Alcantara <pc@manguebit.com>
Mon, 19 Jun 2023 19:24:37 +0000 (16:24 -0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 23 Aug 2023 15:52:22 +0000 (17:52 +0200)
[ Upstream commit 12c30f33cc6769bf411088a2872843c4f9ea32f9 ]

This fixes the following warning reported by kernel test robot

  fs/smb/client/cifsfs.c:982 cifs_smb3_do_mount() warn: possible
  memory leak of 'cifs_sb'

Link: https://lore.kernel.org/all/202306170124.CtQqzf0I-lkp@intel.com/
Signed-off-by: Paulo Alcantara (SUSE) <pc@manguebit.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/smb/client/cifsfs.c

index 078df1e2dd18a32090ea5bb00abb8309e867b65a..18d66497c42d137325c0b58d065224e6c8409f56 100644 (file)
@@ -883,11 +883,11 @@ struct dentry *
 cifs_smb3_do_mount(struct file_system_type *fs_type,
              int flags, struct smb3_fs_context *old_ctx)
 {
-       int rc;
-       struct super_block *sb = NULL;
-       struct cifs_sb_info *cifs_sb = NULL;
        struct cifs_mnt_data mnt_data;
+       struct cifs_sb_info *cifs_sb;
+       struct super_block *sb;
        struct dentry *root;
+       int rc;
 
        /*
         * Prints in Kernel / CIFS log the attempted mount operation
@@ -898,11 +898,9 @@ cifs_smb3_do_mount(struct file_system_type *fs_type,
        else
                cifs_info("Attempting to mount %s\n", old_ctx->UNC);
 
-       cifs_sb = kzalloc(sizeof(struct cifs_sb_info), GFP_KERNEL);
-       if (cifs_sb == NULL) {
-               root = ERR_PTR(-ENOMEM);
-               goto out;
-       }
+       cifs_sb = kzalloc(sizeof(*cifs_sb), GFP_KERNEL);
+       if (!cifs_sb)
+               return ERR_PTR(-ENOMEM);
 
        cifs_sb->ctx = kzalloc(sizeof(struct smb3_fs_context), GFP_KERNEL);
        if (!cifs_sb->ctx) {
@@ -945,10 +943,8 @@ cifs_smb3_do_mount(struct file_system_type *fs_type,
 
        sb = sget(fs_type, cifs_match_super, cifs_set_super, flags, &mnt_data);
        if (IS_ERR(sb)) {
-               root = ERR_CAST(sb);
                cifs_umount(cifs_sb);
-               cifs_sb = NULL;
-               goto out;
+               return ERR_CAST(sb);
        }
 
        if (sb->s_root) {
@@ -979,13 +975,9 @@ out_super:
        deactivate_locked_super(sb);
        return root;
 out:
-       if (cifs_sb) {
-               if (!sb || IS_ERR(sb)) {  /* otherwise kill_sb will handle */
-                       kfree(cifs_sb->prepath);
-                       smb3_cleanup_fs_context(cifs_sb->ctx);
-                       kfree(cifs_sb);
-               }
-       }
+       kfree(cifs_sb->prepath);
+       smb3_cleanup_fs_context(cifs_sb->ctx);
+       kfree(cifs_sb);
        return root;
 }