ANDROID: sdcardfs: move path_put outside of spinlock

Signed-off-by: Daniel Rosenberg <drosen@google.com>
Bug: 35643557
Change-Id: Ib279ebd7dd4e5884d184d67696a93e34993bc1ef
This commit is contained in:
Daniel Rosenberg 2017-03-10 13:54:30 -08:00
parent 8dbb44c8aa
commit 1a736af098

View file

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