From: Yu Watanabe Date: Mon, 14 Feb 2022 18:26:16 +0000 (+0900) Subject: network: netdev: increment reference counter on request X-Git-Tag: v251-rc1~280^2~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=efa7b8adde78b6299247f4414b7624ea93dd183a;p=thirdparty%2Fsystemd.git network: netdev: increment reference counter on request Otherwise, it may be freed on reload. --- diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c index fb16c255a61..151a94f928e 100644 --- a/src/network/netdev/netdev.c +++ b/src/network/netdev/netdev.c @@ -732,13 +732,13 @@ int link_request_stacked_netdev(Link *link, NetDev *netdev) { if (netdev_get_create_type(netdev) == NETDEV_CREATE_STACKED) { link->stacked_netdevs_created = false; - r = link_queue_request(link, REQUEST_TYPE_NETDEV_STACKED, netdev, false, + r = link_queue_request(link, REQUEST_TYPE_NETDEV_STACKED, netdev_ref(netdev), true, &link->create_stacked_netdev_messages, link_create_stacked_netdev_handler, NULL); } else { link->stacked_netdevs_after_configured_created = false; - r = link_queue_request(link, REQUEST_TYPE_NETDEV_STACKED, netdev, false, + r = link_queue_request(link, REQUEST_TYPE_NETDEV_STACKED, netdev_ref(netdev), true, &link->create_stacked_netdev_after_configured_messages, link_create_stacked_netdev_after_configured_handler, NULL); diff --git a/src/network/networkd-queue.c b/src/network/networkd-queue.c index eaaaf7d7e6d..f1760a29e09 100644 --- a/src/network/networkd-queue.c +++ b/src/network/networkd-queue.c @@ -47,6 +47,7 @@ static void request_free_object(RequestType type, void *object) { neighbor_free(object); break; case REQUEST_TYPE_NETDEV_STACKED: + netdev_unref(object); break; case REQUEST_TYPE_NEXTHOP: nexthop_free(object);