CVE-2022-50041
Publication date:
18/06/2025
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
ice: Fix call trace with null VSI during VF reset<br />
<br />
During stress test with attaching and detaching VF from KVM and<br />
simultaneously changing VFs spoofcheck and trust there was a<br />
call trace in ice_reset_vf that VF&#39;s VSI is null.<br />
<br />
[145237.352797] WARNING: CPU: 46 PID: 840629 at drivers/net/ethernet/intel/ice/ice_vf_lib.c:508 ice_reset_vf+0x3d6/0x410 [ice]<br />
[145237.352851] Modules linked in: ice(E) vfio_pci vfio_pci_core vfio_virqfd vfio_iommu_type1 vfio iavf dm_mod xt_CHECKSUM xt_MASQUERADE<br />
xt_conntrack ipt_REJECT nf_reject_ipv4 nft_compat nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nf_tables nfnetlink tun<br />
bridge stp llc sunrpc intel_rapl_msr intel_rapl_common sb_edac x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm iTCO_wdt iTC<br />
O_vendor_support irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel rapl ipmi_si intel_cstate ipmi_devintf joydev intel_uncore m<br />
ei_me ipmi_msghandler i2c_i801 pcspkr mei lpc_ich ioatdma i2c_smbus acpi_pad acpi_power_meter ip_tables xfs libcrc32c i2c_algo_bit drm_sh<br />
mem_helper drm_kms_helper sd_mod t10_pi crc64_rocksoft syscopyarea crc64 sysfillrect sg sysimgblt fb_sys_fops drm i40e ixgbe ahci libahci<br />
libata crc32c_intel mdio dca wmi fuse [last unloaded: ice]<br />
[145237.352917] CPU: 46 PID: 840629 Comm: kworker/46:2 Tainted: G S W I E 5.19.0-rc6+ #24<br />
[145237.352921] Hardware name: Intel Corporation S2600WTT/S2600WTT, BIOS SE5C610.86B.01.01.0008.021120151325 02/11/2015<br />
[145237.352923] Workqueue: ice ice_service_task [ice]<br />
[145237.352948] RIP: 0010:ice_reset_vf+0x3d6/0x410 [ice]<br />
[145237.352984] Code: 30 ec f3 cc e9 28 fd ff ff 0f b7 4b 50 48 c7 c2 48 19 9c c0 4c 89 ee 48 c7 c7 30 fe 9e c0 e8 d1 21 9d cc 31 c0 e9 a<br />
9 fe ff ff 0b b8 ea ff ff ff e9 c1 fc ff ff 0f 0b b8 fb ff ff ff e9 91 fe<br />
[145237.352987] RSP: 0018:ffffb453e257fdb8 EFLAGS: 00010246<br />
[145237.352990] RAX: ffff8bd0040181c0 RBX: ffff8be68db8f800 RCX: 0000000000000000<br />
[145237.352991] RDX: 000000000000ffff RSI: 0000000000000000 RDI: ffff8be68db8f800<br />
[145237.352993] RBP: ffff8bd0040181c0 R08: 0000000000001000 R09: ffff8bcfd520e000<br />
[145237.352995] R10: 0000000000000000 R11: 00008417b5ab0bc0 R12: 0000000000000005<br />
[145237.352996] R13: ffff8bcee061c0d0 R14: ffff8bd004019640 R15: 0000000000000000<br />
[145237.352998] FS: 0000000000000000(0000) GS:ffff8be5dfb00000(0000) knlGS:0000000000000000<br />
[145237.353000] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br />
[145237.353002] CR2: 00007fd81f651d68 CR3: 0000001a0fe10001 CR4: 00000000001726e0<br />
[145237.353003] Call Trace:<br />
[145237.353008] <br />
[145237.353011] ice_process_vflr_event+0x8d/0xb0 [ice]<br />
[145237.353049] ice_service_task+0x79f/0xef0 [ice]<br />
[145237.353074] process_one_work+0x1c8/0x390<br />
[145237.353081] ? process_one_work+0x390/0x390<br />
[145237.353084] worker_thread+0x30/0x360<br />
[145237.353087] ? process_one_work+0x390/0x390<br />
[145237.353090] kthread+0xe8/0x110<br />
[145237.353094] ? kthread_complete_and_exit+0x20/0x20<br />
[145237.353097] ret_from_fork+0x22/0x30<br />
[145237.353103] <br />
<br />
Remove WARN_ON() from check if VSI is null in ice_reset_vf.<br />
Add "VF is already removed\n" in dev_dbg().<br />
<br />
This WARN_ON() is unnecessary and causes call trace, despite that<br />
call trace, driver still works. There is no need for this warn<br />
because this piece of code is responsible for disabling VF&#39;s Tx/Rx<br />
queues when VF is disabled, but when VF is already removed there<br />
is no need to do reset or disable queues.
Severity CVSS v4.0: Pending analysis
Last modification:
18/06/2025