summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Roseberg <drosen@google.com>2017-05-09 13:36:35 -0700
committerDaniel Rosenberg <drosen@google.com>2017-05-09 16:26:33 -0700
commitd445a089d51d5d9fa951caff6fecb71f2641fe9b (patch)
treebccf2a95c70ed730a19c6f427705a0cfbb796156
parent7dd154e9e27c6bd73e8cc8d9d990bace787ba452 (diff)
downloadx86_64-d445a089d51d5d9fa951caff6fecb71f2641fe9b.tar.gz
ANDROID: sdcardfs: Don't iput if we didn't igrab
If we fail to get top, top is either NULL, or igrab found that we're in the process of freeing that inode, and did not grab it. Either way, we didn't grab it, and have no business putting it. Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 38117720 Change-Id: Ie2f587483b9abb5144263156a443e89bc69b767b
-rwxr-xr-xfs/sdcardfs/inode.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/fs/sdcardfs/inode.c b/fs/sdcardfs/inode.c
index 71694c0e9f14..05dcf0d5e08b 100755
--- a/fs/sdcardfs/inode.c
+++ b/fs/sdcardfs/inode.c
@@ -630,11 +630,8 @@ static int sdcardfs_permission(struct vfsmount *mnt, struct inode *inode, int ma
struct inode tmp;
struct inode *top = grab_top(SDCARDFS_I(inode));
- if (!top) {
- release_top(SDCARDFS_I(inode));
- WARN(1, "Top value was null!\n");
+ if (!top)
return -EINVAL;
- }
/*
* Permission check on sdcardfs inode.
@@ -708,10 +705,8 @@ static int sdcardfs_setattr(struct vfsmount *mnt, struct dentry *dentry, struct
inode = dentry->d_inode;
top = grab_top(SDCARDFS_I(inode));
- if (!top) {
- release_top(SDCARDFS_I(inode));
+ if (!top)
return -EINVAL;
- }
/*
* Permission check on sdcardfs inode.