ANDROID: sdcardfs: move path_put outside of spinlock
authorDaniel Rosenberg <drosen@google.com>
Fri, 10 Mar 2017 21:54:30 +0000 (13:54 -0800)
committerStricted <info@stricted.net>
Thu, 11 Oct 2018 16:03:30 +0000 (18:03 +0200)
Signed-off-by: Daniel Rosenberg <drosen@google.com>
Bug: 35643557
Change-Id: Ib279ebd7dd4e5884d184d67696a93e34993bc1ef

fs/sdcardfs/derived_perm.c

index 4a3e9348bac7d78a226b683174d50314177eafdb..f2c7a2ac3ca1e6f5cec93dc22ee03343f9b31cc6 100644 (file)
@@ -348,6 +348,8 @@ int is_obbpath_invalid(struct dentry *dent)
        struct sdcardfs_dentry_info *di = SDCARDFS_D(dent);
        struct sdcardfs_sb_info *sbi = SDCARDFS_SB(dent->d_sb);
        char *path_buf, *obbpath_s;
+       int need_put = 0;
+       struct path lower_path;
 
        /* check the base obbpath has been changed.
         * this routine can check an uninitialized obb dentry as well.
@@ -374,10 +376,13 @@ int is_obbpath_invalid(struct dentry *dent)
                        }
 
                        //unlock_dir(lower_parent);
-                       path_put(&di->lower_path);
+                       pathcpy(&lower_path, &di->lower_path);
+                       need_put = 1;
                }
        }
        spin_unlock(&di->lock);
+       if (need_put)
+               path_put(&lower_path);
        return ret;
 }