diff --git a/[refs] b/[refs] index 52b850cdc942..52ffe9861bb4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 389d1ea50849f84c3a9f8640fcb66827746b4ab4 +refs/heads/master: caf736085f2f0d22a992a855d9caae14973f7ea4 diff --git a/trunk/fs/smbfs/dir.c b/trunk/fs/smbfs/dir.c index c6c33e15143a..0424d06b147e 100644 --- a/trunk/fs/smbfs/dir.c +++ b/trunk/fs/smbfs/dir.c @@ -209,6 +209,8 @@ smb_readdir(struct file *filp, void *dirent, filldir_t filldir) ctl.valid = 1; read_really: result = server->ops->readdir(filp, dirent, filldir, &ctl); + if (result == -ERESTARTSYS && page) + ClearPageUptodate(page); if (ctl.idx == -1) goto invalid_cache; /* retry */ ctl.head.end = ctl.fpos - 1; @@ -217,7 +219,8 @@ smb_readdir(struct file *filp, void *dirent, filldir_t filldir) if (page) { cache->head = ctl.head; kunmap(page); - SetPageUptodate(page); + if (result != -ERESTARTSYS) + SetPageUptodate(page); unlock_page(page); page_cache_release(page); }