ANDROID: sdcardfs: Check for NULL in revalidate
authorDaniel Rosenberg <drosen@google.com>
Mon, 22 May 2017 20:23:56 +0000 (13:23 -0700)
committerAmit Pundir <amit.pundir@linaro.org>
Thu, 25 May 2017 11:07:25 +0000 (16:37 +0530)
If the inode is in the process of being evicted,
the top value may be NULL.

Signed-off-by: Daniel Rosenberg <drosen@google.com>
Bug: 38502532
Change-Id: I0b9d04aab621e0398d44d1c5dc53293106aa5f89

fs/sdcardfs/dentry.c

index 83ae9103a0f6c596c868f7b4e93bfd27bbb0a27d..13da7e5245bd5b191ae2d7e08f32ac69e029205d 100644 (file)
@@ -109,14 +109,16 @@ static int sdcardfs_d_revalidate(struct dentry *dentry, unsigned int flags)
                goto out;
 
        /* If our top's inode is gone, we may be out of date */
-       inode = d_inode(dentry);
+       inode = igrab(d_inode(dentry));
        if (inode) {
                data = top_data_get(SDCARDFS_I(inode));
-               if (data->abandoned) {
+               if (!data || data->abandoned) {
                        d_drop(dentry);
                        err = 0;
                }
-               data_put(data);
+               if (data)
+                       data_put(data);
+               iput(inode);
        }
 
 out: