From e34037bd3df9d80c96eda35d346a9220c71a3459 Mon Sep 17 00:00:00 2001 From: Shiji Yang Date: Fri, 30 May 2025 19:56:16 +0800 Subject: [PATCH] MIPS: checksum: check if data length is zero in ip_fast_csum() If ihl equals 0, the nonsensical infinite do while loop will eventually access an invalid memory address, which will cause the system to halt. Signed-off-by: Shiji Yang --- arch/mips/include/asm/checksum.h | 4 ++++ 1 file changed, 4 insertions(+) --- a/arch/mips/include/asm/checksum.h +++ b/arch/mips/include/asm/checksum.h @@ -101,6 +101,10 @@ static inline __sum16 ip_fast_csum(const unsigned int csum; int carry; + /* ihl should never be zero */ + if (unlikely(ihl == 0)) + return 0; + csum = word[0]; csum += word[1]; carry = (csum < word[1]);