From: Yu Watanabe Date: Wed, 27 Nov 2024 16:44:23 +0000 (+0900) Subject: network/queue: do not increase reference counter when remove request is not queued X-Git-Tag: v257-rc3~5 X-Git-Url: http://git-history.diyao.me/?a=commitdiff_plain;h=1d96f18bd8a8c7b1818ca996e8bada8036dd23a4;p=systemd%2F.git network/queue: do not increase reference counter when remove request is not queued Fixes a bug introduced by ef45f5c8d0bfbeda2a57b28bba9831f044b23b21. Fixes #35164. --- 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; \ })