[GEDI] [PATCH v6 08/13] numa: use QLIST_FOREACH_SAFE() for RAM block notifiers
David Hildenbrand
david at redhat.com
Mon Oct 10 11:49:45 UTC 2022
On 06.10.22 23:35, Stefan Hajnoczi wrote:
> Make list traversal work when a callback removes a notifier
> mid-traversal. This is a cleanup to prevent bugs in the future.
>
> Signed-off-by: Stefan Hajnoczi <stefanha at redhat.com>
> ---
> hw/core/numa.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/hw/core/numa.c b/hw/core/numa.c
> index 31e6fe1caa..ea24a5fa8c 100644
> --- a/hw/core/numa.c
> +++ b/hw/core/numa.c
> @@ -857,8 +857,9 @@ void ram_block_notifier_remove(RAMBlockNotifier *n)
> void ram_block_notify_add(void *host, size_t size, size_t max_size)
> {
> RAMBlockNotifier *notifier;
> + RAMBlockNotifier *next;
>
> - QLIST_FOREACH(notifier, &ram_list.ramblock_notifiers, next) {
> + QLIST_FOREACH_SAFE(notifier, &ram_list.ramblock_notifiers, next, next) {
> if (notifier->ram_block_added) {
> notifier->ram_block_added(notifier, host, size, max_size);
> }
> @@ -868,8 +869,9 @@ void ram_block_notify_add(void *host, size_t size, size_t max_size)
> void ram_block_notify_remove(void *host, size_t size, size_t max_size)
> {
> RAMBlockNotifier *notifier;
> + RAMBlockNotifier *next;
>
> - QLIST_FOREACH(notifier, &ram_list.ramblock_notifiers, next) {
> + QLIST_FOREACH_SAFE(notifier, &ram_list.ramblock_notifiers, next, next) {
> if (notifier->ram_block_removed) {
> notifier->ram_block_removed(notifier, host, size, max_size);
> }
> @@ -879,8 +881,9 @@ void ram_block_notify_remove(void *host, size_t size, size_t max_size)
> void ram_block_notify_resize(void *host, size_t old_size, size_t new_size)
> {
> RAMBlockNotifier *notifier;
> + RAMBlockNotifier *next;
>
> - QLIST_FOREACH(notifier, &ram_list.ramblock_notifiers, next) {
> + QLIST_FOREACH_SAFE(notifier, &ram_list.ramblock_notifiers, next, next) {
> if (notifier->ram_block_resized) {
> notifier->ram_block_resized(notifier, host, old_size, new_size);
> }
Reviewed-by: David Hildenbrand <david at redhat.com>
--
Thanks,
David / dhildenb
More information about the integration
mailing list