OSDN Git Service

ext4: return EIO on read error in ext4_find_entry
authorKhazhismel Kumykov <khazhy@google.com>
Fri, 23 Jun 2017 04:29:05 +0000 (00:29 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 23 Jun 2017 04:29:05 +0000 (00:29 -0400)
Previously, a read error would be ignored and we would eventually return
NULL from ext4_find_entry, which signals "no such file or directory". We
should be returning EIO.

Signed-off-by: Khazhismel Kumykov <khazhy@google.com>
fs/ext4/namei.c

index 423e1f7..2a7f2dc 100644 (file)
@@ -1442,11 +1442,11 @@ restart:
                        goto next;
                wait_on_buffer(bh);
                if (!buffer_uptodate(bh)) {
-                       /* read error, skip block & hope for the best */
                        EXT4_ERROR_INODE(dir, "reading directory lblock %lu",
                                         (unsigned long) block);
                        brelse(bh);
-                       goto next;
+                       ret = ERR_PTR(-EIO);
+                       goto cleanup_and_exit;
                }
                if (!buffer_verified(bh) &&
                    !is_dx_internal_node(dir, block,