blob: 394506a1c188beff7bd53f5d12cb9bd5968ba925 [file] [log] [blame]
From bippy-5f407fcff5a0 Mon Sep 17 00:00:00 2001
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: <linux-cve-announce@vger.kernel.org>
Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org>
Subject: CVE-2024-50040: igb: Do not bring the device up after non-fatal error
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
igb: Do not bring the device up after non-fatal error
Commit 004d25060c78 ("igb: Fix igb_down hung on surprise removal")
changed igb_io_error_detected() to ignore non-fatal pcie errors in order
to avoid hung task that can happen when igb_down() is called multiple
times. This caused an issue when processing transient non-fatal errors.
igb_io_resume(), which is called after igb_io_error_detected(), assumes
that device is brought down by igb_io_error_detected() if the interface
is up. This resulted in panic with stacktrace below.
[ T3256] igb 0000:09:00.0 haeth0: igb: haeth0 NIC Link is Down
[ T292] pcieport 0000:00:1c.5: AER: Uncorrected (Non-Fatal) error received: 0000:09:00.0
[ T292] igb 0000:09:00.0: PCIe Bus Error: severity=Uncorrected (Non-Fatal), type=Transaction Layer, (Requester ID)
[ T292] igb 0000:09:00.0: device [8086:1537] error status/mask=00004000/00000000
[ T292] igb 0000:09:00.0: [14] CmpltTO [ 200.105524,009][ T292] igb 0000:09:00.0: AER: TLP Header: 00000000 00000000 00000000 00000000
[ T292] pcieport 0000:00:1c.5: AER: broadcast error_detected message
[ T292] igb 0000:09:00.0: Non-correctable non-fatal error reported.
[ T292] pcieport 0000:00:1c.5: AER: broadcast mmio_enabled message
[ T292] pcieport 0000:00:1c.5: AER: broadcast resume message
[ T292] ------------[ cut here ]------------
[ T292] kernel BUG at net/core/dev.c:6539!
[ T292] invalid opcode: 0000 [#1] PREEMPT SMP
[ T292] RIP: 0010:napi_enable+0x37/0x40
[ T292] Call Trace:
[ T292] <TASK>
[ T292] ? die+0x33/0x90
[ T292] ? do_trap+0xdc/0x110
[ T292] ? napi_enable+0x37/0x40
[ T292] ? do_error_trap+0x70/0xb0
[ T292] ? napi_enable+0x37/0x40
[ T292] ? napi_enable+0x37/0x40
[ T292] ? exc_invalid_op+0x4e/0x70
[ T292] ? napi_enable+0x37/0x40
[ T292] ? asm_exc_invalid_op+0x16/0x20
[ T292] ? napi_enable+0x37/0x40
[ T292] igb_up+0x41/0x150
[ T292] igb_io_resume+0x25/0x70
[ T292] report_resume+0x54/0x70
[ T292] ? report_frozen_detected+0x20/0x20
[ T292] pci_walk_bus+0x6c/0x90
[ T292] ? aer_print_port_info+0xa0/0xa0
[ T292] pcie_do_recovery+0x22f/0x380
[ T292] aer_process_err_devices+0x110/0x160
[ T292] aer_isr+0x1c1/0x1e0
[ T292] ? disable_irq_nosync+0x10/0x10
[ T292] irq_thread_fn+0x1a/0x60
[ T292] irq_thread+0xe3/0x1a0
[ T292] ? irq_set_affinity_notifier+0x120/0x120
[ T292] ? irq_affinity_notify+0x100/0x100
[ T292] kthread+0xe2/0x110
[ T292] ? kthread_complete_and_exit+0x20/0x20
[ T292] ret_from_fork+0x2d/0x50
[ T292] ? kthread_complete_and_exit+0x20/0x20
[ T292] ret_from_fork_asm+0x11/0x20
[ T292] </TASK>
To fix this issue igb_io_resume() checks if the interface is running and
the device is not down this means igb_io_error_detected() did not bring
the device down and there is no need to bring it up.
The Linux kernel CVE team has assigned CVE-2024-50040 to this issue.
Affected and fixed versions
===========================
Issue introduced in 4.19.291 with commit 124e39a734cb90658b8f0dc110847bbfc6e33792 and fixed in 4.19.323 with commit dca2ca65a8695d9593e2cf1b40848e073ad75413
Issue introduced in 5.4.251 with commit c9f56f3c7bc908caa772112d3ae71cdd5d18c257 and fixed in 5.4.285 with commit c92cbd283ddcf55fd85a9a9b0ba13298213f3dd7
Issue introduced in 5.10.188 with commit 994c2ceb70ea99264ccc6f09e6703ca267dad63c and fixed in 5.10.227 with commit d79af3af2f49c6aae9add3d492c04d60c1b85ce4
Issue introduced in 5.15.150 with commit fa92c463eba75dcedbd8d689ffdcb83293aaa0c3 and fixed in 5.15.168 with commit 0a94079e3841d00ea5abb05e3233d019a86745f6
Issue introduced in 6.1.42 with commit 39695e87d86f0e7d897fba1d2559f825aa20caeb and fixed in 6.1.113 with commit 6a39c8f5c8aae74c5ab2ba466791f59ffaab0178
Issue introduced in 6.5 with commit 004d25060c78fc31f66da0fa439c544dda1ac9d5 and fixed in 6.6.57 with commit 57c5053eaa5f9a8a99e34732e37a86615318e464
Issue introduced in 6.5 with commit 004d25060c78fc31f66da0fa439c544dda1ac9d5 and fixed in 6.11.4 with commit 500be93c5d53b7e2c5314292012185f0207bad0c
Issue introduced in 6.5 with commit 004d25060c78fc31f66da0fa439c544dda1ac9d5 and fixed in 6.12 with commit 330a699ecbfc9c26ec92c6310686da1230b4e7eb
Issue introduced in 4.14.322 with commit c2312e1d12b1c3ee4100c173131b102e2aed4d04
Issue introduced in 6.4.7 with commit 41f63b72a01c0e0ac59ab83fd2d921fcce0f602d
Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.
Unaffected versions might change over time as fixes are backported to
older supported kernel versions. The official CVE entry at
https://cve.org/CVERecord/?id=CVE-2024-50040
will be updated if fixes are backported, please check that for the most
up to date information about this issue.
Affected files
==============
The file(s) affected by this issue are:
drivers/net/ethernet/intel/igb/igb_main.c
Mitigation
==========
The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes. Individual
changes are never tested alone, but rather are part of a larger kernel
release. Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all. If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
https://git.kernel.org/stable/c/dca2ca65a8695d9593e2cf1b40848e073ad75413
https://git.kernel.org/stable/c/c92cbd283ddcf55fd85a9a9b0ba13298213f3dd7
https://git.kernel.org/stable/c/d79af3af2f49c6aae9add3d492c04d60c1b85ce4
https://git.kernel.org/stable/c/0a94079e3841d00ea5abb05e3233d019a86745f6
https://git.kernel.org/stable/c/6a39c8f5c8aae74c5ab2ba466791f59ffaab0178
https://git.kernel.org/stable/c/57c5053eaa5f9a8a99e34732e37a86615318e464
https://git.kernel.org/stable/c/500be93c5d53b7e2c5314292012185f0207bad0c
https://git.kernel.org/stable/c/330a699ecbfc9c26ec92c6310686da1230b4e7eb