Avoid page waitqueue race leaving possible page locker waiting
Changes
1 files changed · +5 −4
| File | Status | Add | Del | Content |
|---|---|---|---|---|
| mm/filemap.c | modified | +5 | −4 | View file |
mm/filemap.c
View filediff --git a/mm/filemap.c b/mm/filemap.c
index baba290..0b41c8c 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -986,10 +986,6 @@ static inline int wait_on_page_bit_common(wait_queue_head_t *q,
if (likely(test_bit(bit_nr, &page->flags))) {
io_schedule();
- if (unlikely(signal_pending_state(state, current))) {
- ret = -EINTR;
- break;
- }
}
if (lock) {
@@ -999,6 +995,11 @@ static inline int wait_on_page_bit_common(wait_queue_head_t *q,
if (!test_bit(bit_nr, &page->flags))
break;
}
+
+ if (unlikely(signal_pending_state(state, current))) {
+ ret = -EINTR;
+ break;
+ }
}
finish_wait(q, wait);