OSDN Git Service

ANDROID: sdcardfs: move path_put outside of spinlock
authorDaniel Rosenberg <drosen@google.com>
Fri, 10 Mar 2017 21:54:30 +0000 (13:54 -0800)
committerAmit Pundir <amit.pundir@linaro.org>
Tue, 14 Aug 2018 12:17:11 +0000 (17:47 +0530)
Signed-off-by: Daniel Rosenberg <drosen@google.com>
Bug: 35643557
Change-Id: Ib279ebd7dd4e5884d184d67696a93e34993bc1ef

fs/sdcardfs/derived_perm.c

index 72ae4b9..f47884b 100644 (file)
@@ -360,6 +360,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.
@@ -386,10 +388,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;
 }