From 32710715799d753c4f32d8767e219706f7e6e8f2 Mon Sep 17 00:00:00 2001 From: Markus Stockhausen Date: Fri, 10 Apr 2026 22:02:59 +0200 Subject: [PATCH] realtek: eth: harden receive path The hardware usually takes care that - a packet is no larger than the available buffer - has at least a FCS checksum of 4 bytes Nevertheless be cautious and improve the existing packet check. Just in case ... Signed-off-by: Markus Stockhausen Link: https://github.com/openwrt/openwrt/pull/22884 Signed-off-by: Robert Marko --- .../realtek/files-6.18/drivers/net/ethernet/rtl838x_eth.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/target/linux/realtek/files-6.18/drivers/net/ethernet/rtl838x_eth.c b/target/linux/realtek/files-6.18/drivers/net/ethernet/rtl838x_eth.c index ccad659d4e0..599c5cf29c0 100644 --- a/target/linux/realtek/files-6.18/drivers/net/ethernet/rtl838x_eth.c +++ b/target/linux/realtek/files-6.18/drivers/net/ethernet/rtl838x_eth.c @@ -1022,11 +1022,11 @@ static int rteth_hw_receive(struct net_device *dev, int ring, int budget) packet = &ctrl->rx_data[ring].packet[slot]; len = packet->len; - if (!len) { - netdev_err(dev, "empty packet received\n"); + if (len < ETH_FCS_LEN || len > RING_BUFFER) { + netdev_err(dev, "invalid packet with %d bytes received\n", len); break; } else if (!dsa) { - len -= 4; + len -= ETH_FCS_LEN; } skb = netdev_alloc_skb_ip_align(dev, len); -- 2.47.3