On Sun, Apr 10, 2016 at 1:48 PM, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > > The attached patch is actually tested and seems to fix the issue. Christ. Now really attached. I'll just go back to bed, because today is just not working out. Maybe things will be better tomorrow. Or maybe I should start drinking, and at least have an excuse. Linus
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; }