From 1d96f18bd8a8c7b1818ca996e8bada8036dd23a4 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 28 Nov 2024 01:44:23 +0900 Subject: [PATCH] network/queue: do not increase reference counter when remove request is not queued Fixes a bug introduced by ef45f5c8d0bfbeda2a57b28bba9831f044b23b21. Fixes #35164. --- src/network/networkd-queue.c | 4 ++-- src/network/networkd-queue.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/network/networkd-queue.c b/src/network/networkd-queue.c index f5ad748397..7b5060a049 100644 --- a/src/network/networkd-queue.c +++ b/src/network/networkd-queue.c @@ -439,7 +439,7 @@ int remove_request_add( * MANAGER_TERMINATING or MANAGER_RESTARTING. When the manager is in MANAGER_STOPPED, we cannot * queue new remove requests anymore with the same reason explained in request_new(). */ if (manager->state == MANAGER_STOPPED) - return 0; + return 0; /* ignored */ req = new(RemoveRequest, 1); if (!req) @@ -462,7 +462,7 @@ int remove_request_add( req->unref_func = unref_func; TAKE_PTR(req); - return 0; + return 1; /* queued */ } int manager_process_remove_requests(Manager *manager) { diff --git a/src/network/networkd-queue.h b/src/network/networkd-queue.h index b50851ecdd..8600ffe869 100644 --- a/src/network/networkd-queue.h +++ b/src/network/networkd-queue.h @@ -184,7 +184,7 @@ int remove_request_add( _r = remove_request_add(manager, link, _data, \ (mfree_func_t) name##_unref, \ nl, m, handler); \ - if (_r >= 0) \ + if (_r > 0) \ name##_ref(_data); \ _r; \ }) -- 2.25.1