fs/ext4/namei.c | 2 +-
 fs/readdir.c    | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index db98f89f737f..c07422d254b6 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -1107,7 +1107,7 @@ int ext4_htree_fill_tree(struct file *dir_file, __u32 start_hash,
 	}
 
 	while (1) {
-		if (signal_pending(current)) {
+		if (fatal_signal_pending(current)) {
 			err = -ERESTARTSYS;
 			goto errout;
 		}
diff --git a/fs/readdir.c b/fs/readdir.c
index e69ef3b79787..2b0bb4fb8990 100644
--- a/fs/readdir.c
+++ b/fs/readdir.c
@@ -248,6 +248,8 @@ static int filldir64(struct dir_context *ctx, const char *name, int namlen,
 		return -EINVAL;
 	dirent = buf->previous;
 	if (dirent) {
+		if (signal_pending(current))
+			return -EINTR;
 		if (__put_user(offset, &dirent->d_off))
 			goto efault;
 	}