• CVE-2024-42071

发布时间: 2024年8月21日

修改时间: 2024年8月21日

概要

In the Linux kernel, the following vulnerability has been resolved:ionic: use dev_consume_skb_any outside of napiIf we re not in a NAPI softirq context, we need to be carefulabout how we call napi_consume_skb(), specifically we need tocall it with budget==0 to signal to it that we re not in asafe context.This was found while running some configuration stress testingof traffic and a change queue config loop running, and thiscurious note popped out:[ 4371.402645] BUG: using smp_processor_id() in preemptible [00000000] code: ethtool/20545[ 4371.402897] caller is napi_skb_cache_put+0x16/0x80[ 4371.403120] CPU: 25 PID: 20545 Comm: ethtool Kdump: loaded Tainted: G OE 6.10.0-rc3-netnext+ #8[ 4371.403302] Hardware name: HPE ProLiant DL360 Gen10/ProLiant DL360 Gen10, BIOS U32 01/23/2021[ 4371.403460] Call Trace:[ 4371.403613] <TASK&gt;[ 4371.403758] dump_stack_lvl+0x4f/0x70[ 4371.403904] check_preemption_disabled+0xc1/0xe0[ 4371.404051] napi_skb_cache_put+0x16/0x80[ 4371.404199] ionic_tx_clean+0x18a/0x240 [ionic][ 4371.404354] ionic_tx_cq_service+0xc4/0x200 [ionic][ 4371.404505] ionic_tx_flush+0x15/0x70 [ionic][ 4371.404653] ? ionic_lif_qcq_deinit.isra.23+0x5b/0x70 [ionic][ 4371.404805] ionic_txrx_deinit+0x71/0x190 [ionic][ 4371.404956] ionic_reconfigure_queues+0x5f5/0xff0 [ionic][ 4371.405111] ionic_set_ringparam+0x2e8/0x3e0 [ionic][ 4371.405265] ethnl_set_rings+0x1f1/0x300[ 4371.405418] ethnl_default_set_doit+0xbb/0x160[ 4371.405571] genl_family_rcv_msg_doit+0xff/0x130 [...]I found that ionic_tx_clean() calls napi_consume_skb() which callsnapi_skb_cache_put(), but before that last call is the note /* Zero budget indicate non-NAPI context called us, like netpoll */and DEBUG_NET_WARN_ON_ONCE(!in_softirq());Those are pretty big hints that we re doing it wrong. We can pass acontext hint down through the calls to let ionic_tx_clean() know whatwe re doing so it can call napi_consume_skb() correctly.

CVSS v3 指标

NVD openEuler
CVSS评分 5.5 5.5
Attack Vector Local Local
Attack Complexity Low Low
Privileges Required Low Low
User Interaction None None
Scope Unchanged Unchanged
Confidentiality None None
Integrity None None
Availability High High

安全公告

公告名 概要 发布时间
KylinSec-SA-2024-3389 In the Linux kernel, the following vulnerability has been resolved:ionic: use dev_consume_skb_any outside of napiIf we re not in a NAPI softirq context, we need to be carefulabout how we call napi_consume_skb(), specifically we need tocall it with budget==0 to signal to it that we re not in asafe context.This was found while running some configuration stress testingof traffic and a change queue config loop running, and thiscurious note popped out:[ 4371.402645] BUG: using smp_processor_id() in preemptible [00000000] code: ethtool/20545[ 4371.402897] caller is napi_skb_cache_put+0x16/0x80[ 4371.403120] CPU: 25 PID: 20545 Comm: ethtool Kdump: loaded Tainted: G OE 6.10.0-rc3-netnext+ #8[ 4371.403302] Hardware name: HPE ProLiant DL360 Gen10/ProLiant DL360 Gen10, BIOS U32 01/23/2021[ 4371.403460] Call Trace:[ 4371.403613] <TASK&gt;[ 4371.403758] dump_stack_lvl+0x4f/0x70[ 4371.403904] check_preemption_disabled+0xc1/0xe0[ 4371.404051] napi_skb_cache_put+0x16/0x80[ 4371.404199] ionic_tx_clean+0x18a/0x240 [ionic][ 4371.404354] ionic_tx_cq_service+0xc4/0x200 [ionic][ 4371.404505] ionic_tx_flush+0x15/0x70 [ionic][ 4371.404653] ? ionic_lif_qcq_deinit.isra.23+0x5b/0x70 [ionic][ 4371.404805] ionic_txrx_deinit+0x71/0x190 [ionic][ 4371.404956] ionic_reconfigure_queues+0x5f5/0xff0 [ionic][ 4371.405111] ionic_set_ringparam+0x2e8/0x3e0 [ionic][ 4371.405265] ethnl_set_rings+0x1f1/0x300[ 4371.405418] ethnl_default_set_doit+0xbb/0x160[ 4371.405571] genl_family_rcv_msg_doit+0xff/0x130 [...]I found that ionic_tx_clean() calls napi_consume_skb() which callsnapi_skb_cache_put(), but before that last call is the note /* Zero budget indicate non-NAPI context called us, like netpoll */and DEBUG_NET_WARN_ON_ONCE(!in_softirq());Those are pretty big hints that we re doing it wrong. We can pass acontext hint down through the calls to let ionic_tx_clean() know whatwe re doing so it can call napi_consume_skb() correctly. 2024年8月21日

影响产品

产品 状态
KY3.4-5A kernel Unaffected
KY3.5.2 kernel Unaffected
KY3.5.3 kernel Unaffected
V6 kernel Unaffected