.. | .. |
---|
489 | 489 | |
---|
490 | 490 | add_wait_queue(sk_sleep(sk), &wait); |
---|
491 | 491 | while (1) { |
---|
492 | | - /* Ensure session->terminate is updated */ |
---|
493 | | - smp_mb__before_atomic(); |
---|
494 | | - |
---|
495 | 492 | if (atomic_read(&s->terminate)) |
---|
496 | 493 | break; |
---|
497 | 494 | /* RX */ |
---|
.. | .. |
---|
512 | 509 | break; |
---|
513 | 510 | netif_wake_queue(dev); |
---|
514 | 511 | |
---|
| 512 | + /* |
---|
| 513 | + * wait_woken() performs the necessary memory barriers |
---|
| 514 | + * for us; see the header comment for this primitive. |
---|
| 515 | + */ |
---|
515 | 516 | wait_woken(&wait, TASK_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT); |
---|
516 | 517 | } |
---|
517 | 518 | remove_wait_queue(sk_sleep(sk), &wait); |
---|