Subject: CVE-2022-48745: net/mlx5: Use del_timer_sync in fw reset flow of halting poll

From: Greg Kroah-Hartman <[email-masked]>

Description
===========

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

net/mlx5: Use del_timer_sync in fw reset flow of halting poll

Substitute del_timer() with del_timer_sync() in fw reset polling
deactivation flow, in order to prevent a race condition which occurs
when del_timer() is called and timer is deactivated while another
process is handling the timer interrupt. A situation that led to
the following call trace:
	RIP: 0010:run_timer_softirq+0x137/0x420
	<IRQ>
	recalibrate_cpu_khz+0x10/0x10
	ktime_get+0x3e/0xa0
	? sched_clock_cpu+0xb/0xc0
	__do_softirq+0xf5/0x2ea
	irq_exit_rcu+0xc1/0xf0
	sysvec_apic_timer_interrupt+0x9e/0xc0
	asm_sysvec_apic_timer_interrupt+0x12/0x20
	</IRQ>

The Linux kernel CVE team has assigned CVE-2022-48745 to this issue.

Affected and fixed versions
===========================

	Issue introduced in 5.10 with commit 38b9f903f22b and fixed in 5.10.97 with commit 502c37b033fa
	Issue introduced in 5.10 with commit 38b9f903f22b and fixed in 5.15.20 with commit f895ebeb44d0
	Issue introduced in 5.10 with commit 38b9f903f22b and fixed in 5.16.6 with commit 2a038dd1d942
	Issue introduced in 5.10 with commit 38b9f903f22b and fixed in 5.17 with commit 3c5193a87b0f

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-2022-48745
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/mellanox/mlx5/core/fw_reset.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/502c37b033fab7cde3e95a570af4f073306be45e
	https://git.kernel.org/stable/c/f895ebeb44d09d02674cfdd0cfc2bf687603918c
	https://git.kernel.org/stable/c/2a038dd1d942f8fbc495c58fa592ff24af05f1c2
	https://git.kernel.org/stable/c/3c5193a87b0fea090aa3f769d020337662d87b5e