In the Linux kernel, the following vulnerability has been resolved: crash: fix crashkernel resource shrink When crashkernel is configured with a high reservation, shrinking its value below the low crashkernel reservation causes two issues: 1. Invalid crashkernel resource objects 2. Kernel crash if crashkernel shrinking is done twice For example, with crashkernel=200M,high, the kernel reserves 200MB of high memory and some default low memory (say 256MB). The reservation appears as: cat /proc/iomem | grep -i crash af000000-beffffff : Crash kernel 433000000-43f7fffff : Crash kernel If crashkernel is then shrunk to 50MB (echo 52428800 > /sys/kernel/kexeccrashsize), /proc/iomem still shows 256MB reserved: af000000-beffffff : Crash kernel Instead, it should show 50MB: af000000-b21fffff : Crash kernel Further shrinking crashkernel to 40MB causes a kernel crash with the following trace (x86): BUG: kernel NULL pointer dereference, address: 0000000000000038 PGD 0 P4D 0 Oops: 0000 [#1] PREEMPT SMP NOPTI <snip...> Call Trace: <TASK> ? _diebody.cold+0x19/0x27 ? pagefaultoops+0x15a/0x2f0 ? searchmoduleextables+0x19/0x60 ? searchbpfextables+0x5f/0x80 ? excpagefault+0x7e/0x180 ? asmexcpagefault+0x26/0x30 ? _releaseresource+0xd/0xb0 releaseresource+0x26/0x40 _crashshrinkmemory+0xe5/0x110 crashshrinkmemory+0x12a/0x190 kexeccrashsizestore+0x41/0x80 kernfsfopwriteiter+0x141/0x1f0 vfswrite+0x294/0x460 ksyswrite+0x6d/0xf0 <snip...> This happens because _crashshrinkmemory()/kernel/crashcore.c incorrectly updates the crashkres resource object even when crashklowres should be updated. Fix this by ensuring the correct crashkernel resource object is updated when shrinking crashkernel memory.