CVE-2024-36919 in Linux
Summary
by MITRE • 05/30/2024
In the Linux kernel, the following vulnerability has been resolved:
scsi: bnx2fc: Remove spin_lock_bh while releasing resources after upload
The session resources are used by FW and driver when session is offloaded, once session is uploaded these resources are not used. The lock is not required as these fields won't be used any longer. The offload and upload calls are sequential, hence lock is not required.
This will suppress following BUG_ON():
[ 449.843143] ------------[ cut here ]------------
[ 449.848302] kernel BUG at mm/vmalloc.c:2727!
[ 449.853072] invalid opcode: 0000 [#1] PREEMPT SMP PTI
[ 449.858712] CPU: 5 PID: 1996 Comm: kworker/u24:2 Not tainted 5.14.0-118.el9.x86_64 #1
Rebooting. [ 449.867454] Hardware name: Dell Inc. PowerEdge R730/0WCJNT, BIOS 2.3.4 11/08/2016
[ 449.876966] Workqueue: fc_rport_eq fc_rport_work [libfc]
[ 449.882910] RIP: 0010:vunmap+0x2e/0x30
[ 449.887098] Code: 00 65 8b 05 14 a2 f0 4a a9 00 ff ff 00 75 1b 55 48 89 fd e8 34 36 79 00 48 85 ed 74 0b 48 89 ef 31 f6 5d e9 14 fc ff ff 5d c3 <0f> 0b 0f 1f 44 00 00 41 57 41 56 49 89 ce 41 55 49 89 fd 41 54 41
[ 449.908054] RSP: 0018:ffffb83d878b3d68 EFLAGS: 00010206
[ 449.913887] RAX: 0000000080000201 RBX: ffff8f4355133550 RCX: 000000000d400005
[ 449.921843] RDX: 0000000000000001 RSI: 0000000000001000 RDI: ffffb83da53f5000
[ 449.929808] RBP: ffff8f4ac6675800 R08: ffffb83d878b3d30 R09: 00000000000efbdf
[ 449.937774] R10: 0000000000000003 R11: ffff8f434573e000 R12: 0000000000001000
[ 449.945736] R13: 0000000000001000 R14: ffffb83da53f5000 R15: ffff8f43d4ea3ae0
[ 449.953701] FS: 0000000000000000(0000) GS:ffff8f529fc80000(0000) knlGS:0000000000000000
[ 449.962732] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 449.969138] CR2: 00007f8cf993e150 CR3: 0000000efbe10003 CR4: 00000000003706e0
[ 449.977102] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 449.985065] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 449.993028] Call Trace:
[ 449.995756] __iommu_dma_free+0x96/0x100
[ 450.000139] bnx2fc_free_session_resc+0x67/0x240 [bnx2fc]
[ 450.006171] bnx2fc_upload_session+0xce/0x100 [bnx2fc]
[ 450.011910] bnx2fc_rport_event_handler+0x9f/0x240 [bnx2fc]
[ 450.018136] fc_rport_work+0x103/0x5b0 [libfc]
[ 450.023103] process_one_work+0x1e8/0x3c0
[ 450.027581] worker_thread+0x50/0x3b0
[ 450.031669] ? rescuer_thread+0x370/0x370
[ 450.036143] kthread+0x149/0x170
[ 450.039744] ? set_kthread_struct+0x40/0x40
[ 450.044411] ret_from_fork+0x22/0x30
[ 450.048404] Modules linked in: vfat msdos fat xfs nfs_layout_nfsv41_files rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver dm_service_time qedf qed crc8 bnx2fc libfcoe libfc scsi_transport_fc intel_rapl_msr intel_rapl_common x86_pkg_temp_thermal intel_powerclamp dcdbas rapl intel_cstate intel_uncore mei_me pcspkr mei ipmi_ssif lpc_ich ipmi_si fuse zram ext4 mbcache jbd2 loop nfsv3 nfs_acl nfs lockd grace fscache netfs irdma ice sd_mod t10_pi sg ib_uverbs ib_core 8021q garp mrp stp llc mgag200 i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt mxm_wmi fb_sys_fops cec crct10dif_pclmul ahci crc32_pclmul bnx2x drm ghash_clmulni_intel libahci rfkill i40e libata megaraid_sas mdio wmi sunrpc lrw dm_crypt dm_round_robin dm_multipath dm_snapshot dm_bufio dm_mirror dm_region_hash dm_log dm_zero dm_mod linear raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx raid6_pq libcrc32c crc32c_intel raid1 raid0 iscsi_ibft squashfs be2iscsi bnx2i cnic uio cxgb4i cxgb4 tls
[ 450.048497] libcxgbi libcxgb qla4xxx iscsi_boot_sysfs iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi edd ipmi_devintf ipmi_msghandler
[ 450.159753] ---[ end trace 712de2c57c64abc8 ]---
If you want to get best quality of vulnerability data, you may have to visit VulDB.
Analysis
by VulDB Data Team • 01/22/2026
The vulnerability identified as CVE-2024-36919 resides within the Linux kernel's SCSI subsystem, specifically within the bnx2fc driver, which manages Fibre Channel over Ethernet (FCoE) connectivity for Broadcom network adapters. This flaw manifests as an unnecessary use of spin_lock_bh during resource cleanup operations following a session upload process. The bnx2fc driver offloads session management to the firmware, and once the session is uploaded, the associated resources are no longer required by either the firmware or the driver. The inclusion of spin_lock_bh in this context introduces a superfluous locking mechanism that can lead to system instability and potential deadlock conditions.
The technical root cause of this vulnerability lies in the improper handling of synchronization primitives during resource deallocation. The driver function bnx2fc_free_session_resc() incorrectly acquires a spin lock while releasing memory resources that are no longer in use, as confirmed by the kernel bug report indicating a BUG_ON() failure in mm/vmalloc.c at line 2727. This error occurs during a call to vunmap(), which is part of the memory unmapping sequence when freeing session resources after upload. The locking mechanism is not only unnecessary but also contributes to a condition where the kernel's memory management subsystem encounters an invalid operation, triggering a kernel oops and ultimately a system reboot.
The operational impact of this vulnerability is significant, particularly in enterprise environments where high availability and system stability are critical. When the kernel encounters the invalid memory operation, it triggers a kernel BUG, resulting in an immediate system crash and reboot. This behavior disrupts ongoing I/O operations, potentially leading to data loss or service interruption in mission-critical applications. The vulnerability affects systems running Linux kernel versions where the bnx2fc driver is active, particularly those utilizing Broadcom network adapters for FCoE connectivity. The issue is exacerbated by the fact that the offload and upload operations are sequential, making the lock redundant and creating a race condition that can lead to memory corruption.
Mitigation strategies for this vulnerability focus on removing the unnecessary spin_lock_bh from the resource cleanup path. The fix involves modifying the bnx2fc_free_session_resc function to eliminate the locking mechanism when releasing session resources that are no longer required. This change aligns with the principle of minimal locking and reduces the risk of system instability. System administrators should prioritize applying the kernel patch that resolves this issue, ensuring that all affected systems are updated to a version that includes the corrected driver implementation. Additionally, monitoring for kernel oops messages and system crashes related to memory management during FCoE session uploads should be implemented to detect potential exploitation of this vulnerability.
This vulnerability maps to CWE-691, which describes insufficient control of a resource through a long-lived access pattern, and also relates to CWE-755, indicating improper handling of exceptional conditions. The ATT&CK framework categorizes this issue under T1490, which involves resource hijacking, as the improper locking can lead to resource corruption and system instability. The fix represents a standard defensive programming practice, emphasizing the importance of proper synchronization in kernel code and the removal of unnecessary locks that can contribute to system crashes. The vulnerability demonstrates the critical importance of thorough code review and testing, particularly in kernel drivers where resource management and synchronization are paramount to system stability.