From da53a11508c6bea82286eed97a705428780bf1a4 Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Wed, 16 Aug 2023 12:45:26 +0200 Subject: [PATCH] pc_nic_drv: drop incoming packets on missing uplink Fixes sporadic null-pointer dereferences like [init -> nic_drv] Error: illegal READ at address 0x204 by pager_object: pd='init -> nic_drv' thread='ep' ip=0x86467 --- repos/pc/src/drivers/nic/pc/lx_user.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/repos/pc/src/drivers/nic/pc/lx_user.c b/repos/pc/src/drivers/nic/pc/lx_user.c index 5f9e5998c0..e99db9b6b2 100644 --- a/repos/pc/src/drivers/nic/pc/lx_user.c +++ b/repos/pc/src/drivers/nic/pc/lx_user.c @@ -63,9 +63,13 @@ static rx_handler_result_t handle_rx(struct sk_buff **pskb) struct sk_buff *skb = *pskb; struct net_device *dev = skb->dev; struct genode_uplink_tx_packet_context ctx = { .skb = skb }; + struct genode_uplink *uplink = dev_genode_uplink(dev); + + if (!uplink) + return RX_HANDLER_PASS; { - bool progress = genode_uplink_tx_packet(dev_genode_uplink(dev), + bool progress = genode_uplink_tx_packet(uplink, uplink_tx_packet_content, &ctx); if (!progress)