On 06/27, Linus Torvalds wrote:
>
> --- a/mm/filemap.c
> +++ b/mm/filemap.c
> @@ -1150,6 +1150,12 @@ static inline int
> wait_on_page_bit_common(wait_queue_head_t *q,
> io_schedule();
>
> if (behavior == EXCLUSIVE) {
> + /*
> + * Make sure we don't get any exclusive wakeups
> + * after this point!
> + */
> + __set_current_state(TASK_RUNNING);
> + smp_mb__before_atomic();
> if (!test_and_set_bit_lock(bit_nr, &page->flags))
> break;
> } else if (behavior == SHARED) {
FWIW,
Reviewed-by: Oleg Nesterov <[email protected]>