Description
In the Linux kernel, the following vulnerability has been resolved: net/mlx5e: Fix "scheduling while atomic" in IPsec MAC address query Fix a "scheduling while atomic" bug in mlx5e_ipsec_init_macs() by replacing mlx5_query_mac_address() with ether_addr_copy() to get the local MAC address directly from netdev->dev_addr. The issue occurs because mlx5_query_mac_address() queries the hardware which involves mlx5_cmd_exec() that can sleep, but it is called from the mlx5e_ipsec_handle_event workqueue which runs in atomic context. The MAC address is already available in netdev->dev_addr, so no need to query hardware. This avoids the sleeping call and resolves the bug. Call trace: BUG: scheduling while atomic: kworker/u112:2/69344/0x00000200 __schedule+0x7ab/0xa20 schedule+0x1c/0xb0 schedule_timeout+0x6e/0xf0 __wait_for_common+0x91/0x1b0 cmd_exec+0xa85/0xff0 [mlx5_core] mlx5_cmd_exec+0x1f/0x50 [mlx5_core] mlx5_query_nic_vport_mac_address+0x7b/0xd0 [mlx5_core] mlx5_query_mac_address+0x19/0x30 [mlx5_core] mlx5e_ipsec_init_macs+0xc1/0x720 [mlx5_core] mlx5e_ipsec_build_accel_xfrm_attrs+0x422/0x670 [mlx5_core] mlx5e_ipsec_handle_event+0x2b9/0x460 [mlx5_core] process_one_work+0x178/0x2e0 worker_thread+0x2ea/0x430
Product status
cee137a634318bfbda18ee5af45d300153b57fa5 (git) before e1407fb7c337373dfaaae2445d828b0b9ae26a29
cee137a634318bfbda18ee5af45d300153b57fa5 (git) before 57957bc7f1865778ec9b1618e15515feb6df7eb4
cee137a634318bfbda18ee5af45d300153b57fa5 (git) before 546de94e41e92e1f7dc6213615fb7c794d05db98
cee137a634318bfbda18ee5af45d300153b57fa5 (git) before 859380694f434597407632c29f30fdb5e763e6cc
6.2
Any version before 6.2
6.12.75 (semver)
6.18.16 (semver)
6.19.6 (semver)
7.0 (original_commit_for_fix)
References
git.kernel.org/...c/e1407fb7c337373dfaaae2445d828b0b9ae26a29
git.kernel.org/...c/57957bc7f1865778ec9b1618e15515feb6df7eb4
git.kernel.org/...c/546de94e41e92e1f7dc6213615fb7c794d05db98
git.kernel.org/...c/859380694f434597407632c29f30fdb5e763e6cc