udf: Properly detect stale inodes
authorJan Kara <jack@suse.cz>
Thu, 4 Sep 2014 14:19:47 +0000 (16:19 +0200)
committerJan Kara <jack@suse.cz>
Thu, 4 Sep 2014 19:37:39 +0000 (21:37 +0200)
NFS can easily ask for inodes that are already deleted. Currently UDF
happily returns such inodes which is a bug. Return -ESTALE if
udf_read_inode() is asked to read deleted inode.

Signed-off-by: Jan Kara <jack@suse.cz>
fs/udf/inode.c

index 788fc58ea78ea4c94713b4641853b0eb73ef626c..3a44d9187aad18de5490c3871769592144d75856 100644 (file)
@@ -1435,8 +1435,10 @@ reread:
        read_unlock(&sbi->s_cred_lock);
 
        link_count = le16_to_cpu(fe->fileLinkCount);
-       if (!link_count)
-               link_count = 1;
+       if (!link_count) {
+               ret = -ESTALE;
+               goto out;
+       }
        set_nlink(inode, link_count);
 
        inode->i_size = le64_to_cpu(fe->informationLength);