]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - mm/filemap.c
Avoid page waitqueue race leaving possible page locker waiting
[mirror_ubuntu-artful-kernel.git] / mm / filemap.c
index baba290c276b238943b468a5147adc85b06a853f..0b41c8cbeabc7a6b4e2533be1dfd74b9f10e29cd 100644 (file)
@@ -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);