mirror of
https://github.com/opnsense/src.git
synced 2026-07-15 04:01:09 -04:00
The part of r285680 which removed release semantic for two stores to
it_need was wrong [*]. Restore the releases and add a comment explaining why it is needed. Noted by: alc [*] Reviewed by: bde [*] Sponsored by: The FreeBSD Foundation
This commit is contained in:
parent
d0da90b198
commit
01f5e0866b
1 changed files with 14 additions and 2 deletions
|
|
@ -829,8 +829,14 @@ ok:
|
|||
* Ensure that the thread will process the handler list
|
||||
* again and remove this handler if it has already passed
|
||||
* it on the list.
|
||||
*
|
||||
* The release part of the following store ensures
|
||||
* that the update of ih_flags is ordered before the
|
||||
* it_need setting. See the comment before
|
||||
* atomic_cmpset_acq(&ithd->it_need, ...) operation in
|
||||
* the ithread_execute_handlers().
|
||||
*/
|
||||
ie->ie_thread->it_need = 1;
|
||||
atomic_store_rel_int(&ie->ie_thread->it_need, 1);
|
||||
} else
|
||||
TAILQ_REMOVE(&ie->ie_handlers, handler, ih_next);
|
||||
thread_unlock(ie->ie_thread->it_thread);
|
||||
|
|
@ -979,8 +985,14 @@ ok:
|
|||
* Ensure that the thread will process the handler list
|
||||
* again and remove this handler if it has already passed
|
||||
* it on the list.
|
||||
*
|
||||
* The release part of the following store ensures
|
||||
* that the update of ih_flags is ordered before the
|
||||
* it_need setting. See the comment before
|
||||
* atomic_cmpset_acq(&ithd->it_need, ...) operation in
|
||||
* the ithread_execute_handlers().
|
||||
*/
|
||||
it->it_need = 1;
|
||||
atomic_store_rel_int(&it->it_need, 1);
|
||||
} else
|
||||
TAILQ_REMOVE(&ie->ie_handlers, handler, ih_next);
|
||||
thread_unlock(it->it_thread);
|
||||
|
|
|
|||
Loading…
Reference in a new issue