hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/net/bluetooth/cmtp/core.c
....@@ -288,9 +288,6 @@
288288
289289 add_wait_queue(sk_sleep(sk), &wait);
290290 while (1) {
291
- /* Ensure session->terminate is updated */
292
- smp_mb__before_atomic();
293
-
294291 if (atomic_read(&session->terminate))
295292 break;
296293 if (sk->sk_state != BT_CONNECTED)
....@@ -306,6 +303,10 @@
306303
307304 cmtp_process_transmit(session);
308305
306
+ /*
307
+ * wait_woken() performs the necessary memory barriers
308
+ * for us; see the header comment for this primitive.
309
+ */
309310 wait_woken(&wait, TASK_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT);
310311 }
311312 remove_wait_queue(sk_sleep(sk), &wait);
....@@ -436,9 +437,10 @@
436437 /* Stop session thread */
437438 atomic_inc(&session->terminate);
438439
439
- /* Ensure session->terminate is updated */
440
- smp_mb__after_atomic();
441
-
440
+ /*
441
+ * See the comment preceding the call to wait_woken()
442
+ * in cmtp_session().
443
+ */
442444 wake_up_interruptible(sk_sleep(session->sock->sk));
443445 } else
444446 err = -ENOENT;