From efa7b8adde78b6299247f4414b7624ea93dd183a Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 15 Feb 2022 03:26:16 +0900 Subject: [PATCH] network: netdev: increment reference counter on request Otherwise, it may be freed on reload. --- src/network/netdev/netdev.c | 4 ++-- src/network/networkd-queue.c | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) 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);