CVE-2024-35911: ice: fix memory corruption bug with suspend and rebuild

Published May 19, 2024
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

ice: fix memory corruption bug with suspend and rebuild

The ice driver would previously panic after suspend. This is caused from the driver only calling the icevsifreeqvectors() function by itself, when it is suspending. Since commit b3e7b3a6ee92 ("ice: prevent NULL pointer deref during reload") the driver has zeroed out numqvectors, and only restored it in icevsicfgdef().

This further causes the icerebuild() function to allocate a zero length buffer, after which numqvectors is updated, and then the new value of numqvectors is used to index into the zero length buffer, which corrupts memory.

The fix entails making sure all the code referencing numqvectors only does so after it has been reset via icevsicfgdef().

I didn't perform a full bisect, but I was able to test against 6.1.77 kernel and that ice driver works fine for suspend/resume with no panic, so sometime since then, this problem was introduced.

Also clean up an un-needed init of a local variable in the function being modified.

PANIC from 6.8.0-rc1:

[1026674.915596] PM: suspend exit [1026675.664697] ice 0000:17:00.1: PTP reset successful [1026675.664707] ice 0000:17:00.1: 2755 msecs passed between update to cached PHC time [1026675.667660] ice 0000:b1:00.0: PTP reset successful [1026675.675944] ice 0000:b1:00.0: 2832 msecs passed between update to cached PHC time [1026677.137733] ixgbe 0000:31:00.0 ens787: NIC Link is Up 1 Gbps, Flow Control: None [1026677.190201] BUG: kernel NULL pointer dereference, address: 0000000000000010 [1026677.192753] ice 0000:17:00.0: PTP reset successful [1026677.192764] ice 0000:17:00.0: 4548 msecs passed between update to cached PHC time [1026677.197928] #PF: supervisor read access in kernel mode [1026677.197933] #PF: errorcode(0x0000) - not-present page [1026677.197937] PGD 1557a7067 P4D 0 [1026677.212133] ice 0000:b1:00.1: PTP reset successful [1026677.212143] ice 0000:b1:00.1: 4344 msecs passed between update to cached PHC time [1026677.212575] [1026677.243142] Oops: 0000 [#1] PREEMPT SMP NOPTI [1026677.247918] CPU: 23 PID: 42790 Comm: kworker/23:0 Kdump: loaded Tainted: G W 6.8.0-rc1+ #1 [1026677.257989] Hardware name: Intel Corporation M50CYP2SBSTD/M50CYP2SBSTD, BIOS SE5C620.86B.01.01.0005.2202160810 02/16/2022 [1026677.269367] Workqueue: ice iceservicetask [ice] [1026677.274592] RIP: 0010:icevsirebuildsetcoalesce+0x130/0x1e0 [ice] [1026677.281421] Code: 0f 84 3a ff ff ff 41 0f b7 74 ec 02 66 89 b0 22 02 00 00 81 e6 ff 1f 00 00 e8 ec fd ff ff e9 35 ff ff ff 48 8b 43 30 49 63 ed <41> 0f b7 34 24 41 83 c5 01 48 8b 3c e8 66 89 b7 aa 02 00 00 81 e6 [1026677.300877] RSP: 0018:ff3be62a6399bcc0 EFLAGS: 00010202 [1026677.306556] RAX: ff28691e28980828 RBX: ff28691e41099828 RCX: 0000000000188000 [1026677.314148] RDX: 0000000000000000 RSI: 0000000000000010 RDI: ff28691e41099828 [1026677.321730] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000 [1026677.329311] R10: 0000000000000007 R11: ffffffffffffffc0 R12: 0000000000000010 [1026677.336896] R13: 0000000000000000 R14: 0000000000000000 R15: ff28691e0eaa81a0 [1026677.344472] FS: 0000000000000000(0000) GS:ff28693cbffc0000(0000) knlGS:0000000000000000 [1026677.353000] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [1026677.359195] CR2: 0000000000000010 CR3: 0000000128df4001 CR4: 0000000000771ef0 [1026677.366779] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [1026677.374369] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [1026677.381952] PKRU: 55555554 [1026677.385116] Call Trace: [1026677.388023] <TASK> [1026677.390589] ? die+0x20/0x70 [1026677.394105] ? pagefaultoops+0x82/0x160 [1026677.398576] ? douseraddrfault+0x65/0x6a0 [1026677.403307] ? excpagefault+0x6a/0x150 [1026677.407694] ? asmexcpagefault+0x22/0x30 [1026677.412349] ? icevsirebuildsetcoalesce+0x130/0x1e0 [ice] [1026677.4186 ---truncated---

Other sources

In the Linux kernel, the following vulnerability has been resolved:

ice: fix memory corruption bug with suspend and rebuild

The Linux kernel CVE team has assigned CVE-2024-35911 to this issue.

Upstream advisory: https://lore.kernel.org/linux-cve-announce/2024051956-CVE-2024-35911-f6f9@gregkh/T

Red Hat

Affected Software

14 affected componentsFixes available
debian/linux
5.10.223-15.10.234-16.1.129-16.1.135-16.12.22-16.12.25-1
redhat/kernel<6.6.26
6.6.26
redhat/kernel<6.8.5
6.8.5
redhat/kernel<6.9
6.9
Linux Linux kernel>=6.4.7<6.5
Linux Linux kernel>=6.5.1<6.6.26
Linux Linux kernel>=6.7<6.8.5
Linux Linux kernel=6.5
Linux Linux kernel=6.5-rc3
Linux Linux kernel=6.5-rc4
Linux Linux kernel=6.5-rc5
Linux Linux kernel=6.5-rc6
Linux Linux kernel=6.5-rc7
Linux Linux kernel=6.9-rc1

Event History

May 19, 2024
CVE Published
via MITRE·08:35 AM
Data Sourced
via MITRE·08:35 AM
Description
Data Sourced
via NVD·09:15 AM
Description
Data Sourced
via NVD·09:15 AM
RemedySeverityWeaknessAffected Software
May 20, 2024
Data Sourced
via Red Hat·10:26 AM
DescriptionSeverityAffected Software
Jul 11, 2024
Data Sourced
via Launchpad·07:47 PM
Description
Dec 2, 2024
Data Sourced
via Ubuntu·08:18 PM
RemedyDescriptionSeverityAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2024-35911?

The severity of CVE-2024-35911 has not been explicitly listed but it involves memory corruption which can potentially lead to a system panic.

2

How do I fix CVE-2024-35911?

To fix CVE-2024-35911, upgrade the affected kernel version to 6.6.26, 6.8.5, 6.9, or specific Debian versions such as 5.10.223-1.

3

What software is affected by CVE-2024-35911?

CVE-2024-35911 affects the Linux kernel, specifically versions prior to 6.6.26, 6.8.5, 6.9, and select Debian kernel versions.

4

What is the nature of the vulnerability CVE-2024-35911?

CVE-2024-35911 is a memory corruption vulnerability caused by improper handling of the ice driver during system suspend.

5

Is CVE-2024-35911 exploitable?

While CVE-2024-35911 leads to a system panic, the exploitability largely depends on the specific environment and usage of the affected kernel versions.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203