diff options
| -rw-r--r-- | fs/notify/inotify/inotify_user.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c index daf76652fe58..283aa312d745 100644 --- a/fs/notify/inotify/inotify_user.c +++ b/fs/notify/inotify/inotify_user.c | |||
| @@ -227,14 +227,13 @@ static ssize_t inotify_read(struct file *file, char __user *buf, | |||
| 227 | struct fsnotify_event *kevent; | 227 | struct fsnotify_event *kevent; |
| 228 | char __user *start; | 228 | char __user *start; |
| 229 | int ret; | 229 | int ret; |
| 230 | DEFINE_WAIT(wait); | 230 | DEFINE_WAIT_FUNC(wait, woken_wake_function); |
| 231 | 231 | ||
| 232 | start = buf; | 232 | start = buf; |
| 233 | group = file->private_data; | 233 | group = file->private_data; |
| 234 | 234 | ||
| 235 | add_wait_queue(&group->notification_waitq, &wait); | ||
| 235 | while (1) { | 236 | while (1) { |
| 236 | prepare_to_wait(&group->notification_waitq, &wait, TASK_INTERRUPTIBLE); | ||
| 237 | |||
| 238 | mutex_lock(&group->notification_mutex); | 237 | mutex_lock(&group->notification_mutex); |
| 239 | kevent = get_one_event(group, count); | 238 | kevent = get_one_event(group, count); |
| 240 | mutex_unlock(&group->notification_mutex); | 239 | mutex_unlock(&group->notification_mutex); |
| @@ -264,10 +263,10 @@ static ssize_t inotify_read(struct file *file, char __user *buf, | |||
| 264 | if (start != buf) | 263 | if (start != buf) |
| 265 | break; | 264 | break; |
| 266 | 265 | ||
| 267 | schedule(); | 266 | wait_woken(&wait, TASK_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT); |
| 268 | } | 267 | } |
| 268 | remove_wait_queue(&group->notification_waitq, &wait); | ||
| 269 | 269 | ||
| 270 | finish_wait(&group->notification_waitq, &wait); | ||
| 271 | if (start != buf && ret != -EFAULT) | 270 | if (start != buf && ret != -EFAULT) |
| 272 | ret = buf - start; | 271 | ret = buf - start; |
| 273 | return ret; | 272 | return ret; |
