From b9b8c4a68f2b119f7d49deb5a955ee2f341a57fa Mon Sep 17 00:00:00 2001 From: Benjamin Valentin Date: Wed, 13 Nov 2024 13:40:13 +0100 Subject: [PATCH] gnrc_netif: fix packet leak with gnrc_netif_pktq & netdev_new_api --- sys/net/gnrc/netif/gnrc_netif.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/net/gnrc/netif/gnrc_netif.c b/sys/net/gnrc/netif/gnrc_netif.c index 66e317a0a0..eacc79b676 100644 --- a/sys/net/gnrc/netif/gnrc_netif.c +++ b/sys/net/gnrc/netif/gnrc_netif.c @@ -1810,7 +1810,7 @@ static void _tx_done(gnrc_netif_t *netif, gnrc_pktsnip_t *pkt, } return; } - else { + else if (gnrc_netif_netdev_legacy_api(netif)) { /* remove previously held packet */ gnrc_pktbuf_release(pkt); return; @@ -1882,7 +1882,9 @@ static void _send(gnrc_netif_t *netif, gnrc_pktsnip_t *pkt, bool push_back) } /* hold in case device was busy to not having to rewrite *all* the link * layer implementations in case `gnrc_netif_pktq` is included */ - gnrc_pktbuf_hold(pkt, 1); + if (gnrc_netif_netdev_legacy_api(netif)) { + gnrc_pktbuf_hold(pkt, 1); + } #endif /* IS_USED(MODULE_GNRC_NETIF_PKTQ) */ /* Record send in neighbor statistics if destination is unicast */