In the Linux kernel, the following vulnerability has been resolved:
bnxt_en: Avoid order-5 memory allocation for TPA data
The driver needs to keep track of all the possible concurrent TPA (GRO/LRO) completions on the aggregation ring. On P5 chips, the maximum number of concurrent TPA is 256 and the amount of memory we allocate is order-5 on systems using 4K pages. Memory allocation failure has been reported:
NetworkManager: page allocation failure: order:5, mode:0x40dc0(GFPKERNEL|GFPCOMP|GFPZERO), nodemask=(null),cpuset=/,memsallowed=0-1 CPU: 15 PID: 2995 Comm: NetworkManager Kdump: loaded Not tainted 5.10.156 #1 Hardware name: Dell Inc. PowerEdge R660/0M1CC5, BIOS 0.2.25 08/12/2022 Call Trace: dumpstack+0x57/0x6e warnalloc.cold.120+0x7b/0xdd ? condresched+0x15/0x30 ? _allocpagesdirectcompact+0x15f/0x170 _allocpagesslowpath.constprop.108+0xc58/0xc70 _allocpagesnodemask+0x2d0/0x300 kmallocorder+0x24/0xe0 kmallocordertrace+0x19/0x80 bnxtallocmem+0x1150/0x15c0 [bnxten] ? bnxtgetfuncstatctxs+0x13/0x60 [bnxten] _bnxtopennic+0x12e/0x780 [bnxten] bnxtopen+0x10b/0x240 [bnxten] _devopen+0xe9/0x180 _devchangeflags+0x1af/0x220 devchangeflags+0x21/0x60 do_setlink+0x35c/0x1100
Instead of allocating this big chunk of memory and dividing it up for the concurrent TPA instances, allocate each small chunk separately for each TPA instance. This will reduce it to order-0 allocations.