[PATCH] r8169: avoid OOM when allocating RX buffers

From: Fabian Druschke

Date: Mon Feb 16 2026 - 13:56:31 EST


From: Fabian Druschke <fdruschke@xxxxxxxxxxx>

r8169 allocates order-2 pages for RX buffers during rtl_open(). Under heavy
memory fragmentation this allocation may trigger the global OOM killer,
causing unrelated user processes to be killed.

Use a GFP mask that avoids OOM killer invocation so the allocation can fail
gracefully and rtl_open() returns -ENOMEM instead.

Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Fabian Druschke <fdruschke@xxxxxxxxxxx>
---
drivers/net/ethernet/realtek/r8169_main.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 3507c2e28110..3525e889ec1c 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -3952,7 +3952,8 @@ static struct page *rtl8169_alloc_rx_data(struct rtl8169_private *tp,
dma_addr_t mapping;
struct page *data;

- data = alloc_pages_node(node, GFP_KERNEL, get_order(R8169_RX_BUF_SIZE));
+ gfp_t gfp = GFP_KERNEL | __GFP_RETRY_MAYFAIL | __GFP_NOWARN;
+ data = alloc_pages_node(node, gfp, get_order(R8169_RX_BUF_SIZE));
if (!data)
return NULL;

--
2.52.0