diff options
| -rw-r--r-- | fs/smbfs/dir.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/smbfs/dir.c b/fs/smbfs/dir.c index c6c33e15143a..0424d06b147e 100644 --- a/fs/smbfs/dir.c +++ b/fs/smbfs/dir.c | |||
| @@ -209,6 +209,8 @@ init_cache: | |||
| 209 | ctl.valid = 1; | 209 | ctl.valid = 1; |
| 210 | read_really: | 210 | read_really: |
| 211 | result = server->ops->readdir(filp, dirent, filldir, &ctl); | 211 | result = server->ops->readdir(filp, dirent, filldir, &ctl); |
| 212 | if (result == -ERESTARTSYS && page) | ||
| 213 | ClearPageUptodate(page); | ||
| 212 | if (ctl.idx == -1) | 214 | if (ctl.idx == -1) |
| 213 | goto invalid_cache; /* retry */ | 215 | goto invalid_cache; /* retry */ |
| 214 | ctl.head.end = ctl.fpos - 1; | 216 | ctl.head.end = ctl.fpos - 1; |
| @@ -217,7 +219,8 @@ finished: | |||
| 217 | if (page) { | 219 | if (page) { |
| 218 | cache->head = ctl.head; | 220 | cache->head = ctl.head; |
| 219 | kunmap(page); | 221 | kunmap(page); |
| 220 | SetPageUptodate(page); | 222 | if (result != -ERESTARTSYS) |
| 223 | SetPageUptodate(page); | ||
| 221 | unlock_page(page); | 224 | unlock_page(page); |
| 222 | page_cache_release(page); | 225 | page_cache_release(page); |
| 223 | } | 226 | } |
