From: Shiji Yang Date: Fri, 30 May 2025 12:24:32 +0000 (+0800) Subject: ramips: a workaround for system halt issue on 6.12 kernel X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F18654%2Fhead;p=thirdparty%2Fopenwrt.git ramips: a workaround for system halt issue on 6.12 kernel Fix potential invalid memory address access on ip_fast_csum(). Signed-off-by: Shiji Yang Link: https://github.com/openwrt/openwrt/pull/18654 Signed-off-by: Hauke Mehrtens --- diff --git a/target/linux/ramips/patches-6.12/325-MIPS-checksum-check-if-data-length-is-zero-in-ip_fas.patch b/target/linux/ramips/patches-6.12/325-MIPS-checksum-check-if-data-length-is-zero-in-ip_fas.patch new file mode 100644 index 00000000000..6e78dd7199f --- /dev/null +++ b/target/linux/ramips/patches-6.12/325-MIPS-checksum-check-if-data-length-is-zero-in-ip_fas.patch @@ -0,0 +1,28 @@ +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]);