100 Star 60 Fork 240

src-openEuler / kernel

 / 详情

CVE-2024-26976

已完成
CVE和安全问题 拥有者
创建于  
2024-05-01 14:37

一、漏洞信息
漏洞编号:CVE-2024-26976
漏洞归属组件:kernel
漏洞归属的版本:4.19.140,4.19.194,4.19.90,5.10.0,6.1.0,6.1.14,6.1.19,6.1.5,6.1.6,6.1.8,6.4.0,6.6.0
CVSS V2.0分值:
BaseScore:0.0 Low
Vector:CVSS:2.0/
漏洞简述:
In the Linux kernel, the following vulnerability has been resolved:KVM: Always flush async #PF workqueue when vCPU is being destroyedAlways flush the per-vCPU async #PF workqueue when a vCPU is clearing itscompletion queue, e.g. when a VM and all its vCPUs is being destroyed.KVM must ensure that none of its workqueue callbacks is running when thelast reference to the KVM module is put. Gifting a reference to theassociated VM prevents the workqueue callback from dereferencing freedvCPU/VM memory, but does not prevent the KVM module from being unloadedbefore the callback completes.Drop the misguided VM refcount gifting, as calling kvm_put_kvm() fromasync_pf_execute() if kvm_put_kvm() flushes the async #PF workqueue willresult in deadlock. async_pf_execute() can t return until kvm_put_kvm()finishes, and kvm_put_kvm() can t return until async_pf_execute() finishes: WARNING: CPU: 8 PID: 251 at virt/kvm/kvm_main.c:1435 kvm_put_kvm+0x2d/0x320 [kvm] Modules linked in: vhost_net vhost vhost_iotlb tap kvm_intel kvm irqbypass CPU: 8 PID: 251 Comm: kworker/8:1 Tainted: G W 6.6.0-rc1-e7af8d17224a-x86/gmem-vm #119 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 Workqueue: events async_pf_execute [kvm] RIP: 0010:kvm_put_kvm+0x2d/0x320 [kvm] Call Trace: async_pf_execute+0x198/0x260 [kvm] process_one_work+0x145/0x2d0 worker_thread+0x27e/0x3a0 kthread+0xba/0xe0 ret_from_fork+0x2d/0x50 ret_from_fork_asm+0x11/0x20 ---[ end trace 0000000000000000 ]--- INFO: task kworker/8:1:251 blocked for more than 120 seconds. Tainted: G W 6.6.0-rc1-e7af8d17224a-x86/gmem-vm #119 echo 0 > /proc/sys/kernel/hung_task_timeout_secs disables this message. task:kworker/8:1 state:D stack:0 pid:251 ppid:2 flags:0x00004000 Workqueue: events async_pf_execute [kvm] Call Trace: __schedule+0x33f/0xa40 schedule+0x53/0xc0 schedule_timeout+0x12a/0x140 __wait_for_common+0x8d/0x1d0 __flush_work.isra.0+0x19f/0x2c0 kvm_clear_async_pf_completion_queue+0x129/0x190 [kvm] kvm_arch_destroy_vm+0x78/0x1b0 [kvm] kvm_put_kvm+0x1c1/0x320 [kvm] async_pf_execute+0x198/0x260 [kvm] process_one_work+0x145/0x2d0 worker_thread+0x27e/0x3a0 kthread+0xba/0xe0 ret_from_fork+0x2d/0x50 ret_from_fork_asm+0x11/0x20 If kvm_clear_async_pf_completion_queue() actually flushes the workqueue,then there s no need to gift async_pf_execute() a reference because allinvocations of async_pf_execute() will be forced to complete before thevCPU and its VM are destroyed/freed. And that in turn fixes the moduleunloading bug as __fput() won t do module_put() on the last vCPU referenceuntil the vCPU has been freed, e.g. if closing the vCPU file also puts thelast reference to the KVM module.Note that kvm_check_async_pf_completion() may also take the work item offthe completion queue and so also needs to flush the work queue, as thework will not be seen by kvm_clear_async_pf_completion_queue(). Waitingon the workqueue could theoretically delay a vCPU due to waiting for thework to complete, but that s a very, very small chance, and likely a verysmall delay. kvm_arch_async_page_present_queued() unconditionally makes anew request, i.e. will effectively delay entering the guest, so theremaining work is really just: trace_kvm_async_pf_completed(addr, cr2_or_gpa); __kvm_vcpu_wake_up(vcpu); mmput(mm);and mmput() can t drop the last reference to the page tables if the vCPU isstill alive, i.e. the vCPU won t get stuck tearing down page tables.Add a helper to do the flushing, specifically to deal with wakeup all work items, as they aren t actually work items, i.e. are never placed in aworkqueue. Trying to flush a bogus workqueue entry rightly makes__flush_work() complain (kudos to whoever added that sanity check).Note, commit 5f6de5cbebee ( KVM: Prevent module exit until al---truncated---
漏洞公开时间:2024-05-01 14:15:14
漏洞创建时间:2024-05-01 14:37:15
漏洞详情参考链接:
https://nvd.nist.gov/vuln/detail/CVE-2024-26976

更多参考(点击展开)
参考来源 参考链接 来源链接
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/3d75b8aa5c29058a512db29da7cbee8052724157
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/4f3a3bce428fb439c66a578adc447afce7b4a750
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/82e25cc1c2e93c3023da98be282322fc08b61ffb
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/83d3c5e309611ef593e2fcb78444fc8ceedf9bac
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/a75afe480d4349c524d9c659b1a5a544dbc39a98
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/ab2c2f5d9576112ad22cfd3798071cb74693b1f5
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/b54478d20375874aeee257744dedfd3e413432ff
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/caa9af2e27c275e089d702cfbaaece3b42bca31b
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/f8730d6335e5f43d09151fca1f0f41922209a264
suse_bugzilla http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2024-26976 https://bugzilla.suse.com/show_bug.cgi?id=1223635
suse_bugzilla https://www.cve.org/CVERecord?id=CVE-2024-26976 https://bugzilla.suse.com/show_bug.cgi?id=1223635
suse_bugzilla https://git.kernel.org/stable/c/3d75b8aa5c29058a512db29da7cbee8052724157 https://bugzilla.suse.com/show_bug.cgi?id=1223635
suse_bugzilla https://git.kernel.org/stable/c/4f3a3bce428fb439c66a578adc447afce7b4a750 https://bugzilla.suse.com/show_bug.cgi?id=1223635
suse_bugzilla https://git.kernel.org/stable/c/82e25cc1c2e93c3023da98be282322fc08b61ffb https://bugzilla.suse.com/show_bug.cgi?id=1223635
suse_bugzilla https://git.kernel.org/stable/c/83d3c5e309611ef593e2fcb78444fc8ceedf9bac https://bugzilla.suse.com/show_bug.cgi?id=1223635
suse_bugzilla https://git.kernel.org/stable/c/a75afe480d4349c524d9c659b1a5a544dbc39a98 https://bugzilla.suse.com/show_bug.cgi?id=1223635
suse_bugzilla https://git.kernel.org/stable/c/ab2c2f5d9576112ad22cfd3798071cb74693b1f5 https://bugzilla.suse.com/show_bug.cgi?id=1223635
suse_bugzilla https://git.kernel.org/stable/c/b54478d20375874aeee257744dedfd3e413432ff https://bugzilla.suse.com/show_bug.cgi?id=1223635
suse_bugzilla https://git.kernel.org/stable/c/caa9af2e27c275e089d702cfbaaece3b42bca31b https://bugzilla.suse.com/show_bug.cgi?id=1223635
suse_bugzilla https://git.kernel.org/stable/c/f8730d6335e5f43d09151fca1f0f41922209a264 https://bugzilla.suse.com/show_bug.cgi?id=1223635
suse_bugzilla https://git.kernel.org/pub/scm/linux/security/vulns.git/plain/cve/published/2024/CVE-2024-26976.mbox https://bugzilla.suse.com/show_bug.cgi?id=1223635
suse_bugzilla https://bugzilla.redhat.com/show_bug.cgi?id=2278350 https://bugzilla.suse.com/show_bug.cgi?id=1223635
ubuntu https://www.cve.org/CVERecord?id=CVE-2024-26976 https://ubuntu.com/security/CVE-2024-26976
ubuntu https://git.kernel.org/linus/3d75b8aa5c29058a512db29da7cbee8052724157 (6.9-rc1) https://ubuntu.com/security/CVE-2024-26976
ubuntu https://git.kernel.org/stable/c/ab2c2f5d9576112ad22cfd3798071cb74693b1f5 https://ubuntu.com/security/CVE-2024-26976
ubuntu https://git.kernel.org/stable/c/82e25cc1c2e93c3023da98be282322fc08b61ffb https://ubuntu.com/security/CVE-2024-26976
ubuntu https://git.kernel.org/stable/c/f8730d6335e5f43d09151fca1f0f41922209a264 https://ubuntu.com/security/CVE-2024-26976
ubuntu https://git.kernel.org/stable/c/83d3c5e309611ef593e2fcb78444fc8ceedf9bac https://ubuntu.com/security/CVE-2024-26976
ubuntu https://git.kernel.org/stable/c/b54478d20375874aeee257744dedfd3e413432ff https://ubuntu.com/security/CVE-2024-26976
ubuntu https://git.kernel.org/stable/c/a75afe480d4349c524d9c659b1a5a544dbc39a98 https://ubuntu.com/security/CVE-2024-26976
ubuntu https://git.kernel.org/stable/c/4f3a3bce428fb439c66a578adc447afce7b4a750 https://ubuntu.com/security/CVE-2024-26976
ubuntu https://git.kernel.org/stable/c/caa9af2e27c275e089d702cfbaaece3b42bca31b https://ubuntu.com/security/CVE-2024-26976
ubuntu https://git.kernel.org/stable/c/3d75b8aa5c29058a512db29da7cbee8052724157 https://ubuntu.com/security/CVE-2024-26976
ubuntu https://nvd.nist.gov/vuln/detail/CVE-2024-26976 https://ubuntu.com/security/CVE-2024-26976
ubuntu https://launchpad.net/bugs/cve/CVE-2024-26976 https://ubuntu.com/security/CVE-2024-26976
ubuntu https://security-tracker.debian.org/tracker/CVE-2024-26976 https://ubuntu.com/security/CVE-2024-26976
debian https://security-tracker.debian.org/tracker/CVE-2024-26976

漏洞分析指导链接:
https://gitee.com/openeuler/cve-manager/blob/master/cve-vulner-manager/doc/md/manual.md
漏洞数据来源:
openBrain开源漏洞感知系统
漏洞补丁信息:

详情(点击展开)
影响的包 修复版本 修复补丁 问题引入补丁 来源
linux https://git.kernel.org/linus/3d75b8aa5c29058a512db29da7cbee8052724157 https://git.kernel.org/linus/af585b921e5d1e919947c4b1164b59507fe7cd7b ubuntu

二、漏洞分析结构反馈
影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:KVM: Always flush async #PF workqueue when vCPU is being destroyedAlways flush the per-vCPU async #PF workqueue when a vCPU is clearing itscompletion queue, e.g. when a VM and all its vCPUs is being destroyed.KVM must ensure that none of its workqueue callbacks is running when thelast reference to the KVM module is put. Gifting a reference to theassociated VM prevents the workqueue callback from dereferencing freedvCPU/VM memory, but does not prevent the KVM module from being unloadedbefore the callback completes.Drop the misguided VM refcount gifting, as calling kvm_put_kvm() fromasync_pf_execute() if kvm_put_kvm() flushes the async #PF workqueue willresult in deadlock. async_pf_execute() can t return until kvm_put_kvm()finishes, and kvm_put_kvm() can t return until async_pf_execute() finishes: WARNING: CPU: 8 PID: 251 at virt/kvm/kvm_main.c:1435 kvm_put_kvm+0x2d/0x320 [kvm] Modules linked in: vhost_net vhost vhost_iotlb tap kvm_intel kvm irqbypass CPU: 8 PID: 251 Comm: kworker/8:1 Tainted: G W 6.6.0-rc1-e7af8d17224a-x86/gmem-vm #119 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 Workqueue: events async_pf_execute [kvm] RIP: 0010:kvm_put_kvm+0x2d/0x320 [kvm] Call Trace: async_pf_execute+0x198/0x260 [kvm] process_one_work+0x145/0x2d0 worker_thread+0x27e/0x3a0 kthread+0xba/0xe0 ret_from_fork+0x2d/0x50 ret_from_fork_asm+0x11/0x20 ---[ end trace 0000000000000000 ]--- INFO: task kworker/8:1:251 blocked for more than 120 seconds. Tainted: G W 6.6.0-rc1-e7af8d17224a-x86/gmem-vm #119 echo 0 > /proc/sys/kernel/hung_task_timeout_secs disables this message. task:kworker/8:1 state:D stack:0 pid:251 ppid:2 flags:0x00004000 Workqueue: events async_pf_execute [kvm] Call Trace: __schedule+0x33f/0xa40 schedule+0x53/0xc0 schedule_timeout+0x12a/0x140 __wait_for_common+0x8d/0x1d0 __flush_work.isra.0+0x19f/0x2c0 kvm_clear_async_pf_completion_queue+0x129/0x190 [kvm] kvm_arch_destroy_vm+0x78/0x1b0 [kvm] kvm_put_kvm+0x1c1/0x320 [kvm] async_pf_execute+0x198/0x260 [kvm] process_one_work+0x145/0x2d0 worker_thread+0x27e/0x3a0 kthread+0xba/0xe0 ret_from_fork+0x2d/0x50 ret_from_fork_asm+0x11/0x20 If kvm_clear_async_pf_completion_queue() actually flushes the workqueue,then there s no need to gift async_pf_execute() a reference because allinvocations of async_pf_execute() will be forced to complete before thevCPU and its VM are destroyed/freed. And that in turn fixes the moduleunloading bug as __fput() won t do module_put() on the last vCPU referenceuntil the vCPU has been freed, e.g. if closing the vCPU file also puts thelast reference to the KVM module.Note that kvm_check_async_pf_completion() may also take the work item offthe completion queue and so also needs to flush the work queue, as thework will not be seen by kvm_clear_async_pf_completion_queue(). Waitingon the workqueue could theoretically delay a vCPU due to waiting for thework to complete, but that s a very, very small chance, and likely a verysmall delay. kvm_arch_async_page_present_queued() unconditionally makes anew request, i.e. will effectively delay entering the guest, so theremaining work is really just: trace_kvm_async_pf_completed(addr, cr2_or_gpa); __kvm_vcpu_wake_up(vcpu); mmput(mm);and mmput() can t drop the last reference to the page tables if the vCPU isstill alive, i.e. the vCPU won t get stuck tearing down page tables.Add a helper to do the flushing, specifically to deal with wakeup all work items, as they aren t actually work items, i.e. are never placed in aworkqueue. Trying to flush a bogus workqueue entry rightly makes__flush_work() complain (kudos to whoever added that sanity check).Note, commit 5f6de5cbebee ( KVM: Prevent module exit until al---truncated---
openEuler评分:
5.5
Vector:CVSS:2.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP1(4.19.90):受影响
2.openEuler-20.03-LTS-SP4:受影响
3.openEuler-22.03-LTS(5.10.0):受影响
4.openEuler-22.03-LTS-SP1(5.10.0):受影响
5.openEuler-22.03-LTS-SP2(5.10.0):受影响
6.openEuler-22.03-LTS-SP3:受影响
7.openEuler-22.03-LTS-SP4:不受影响
8.master(6.1.0):不受影响
9.openEuler-22.03-LTS-Next(5.10.0):不受影响
10.openEuler-24.03-LTS(6.6.0):不受影响
11.openEuler-24.03-LTS-Next(6.6.0):不受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP1(4.19.90):否
2.openEuler-20.03-LTS-SP4:否
3.openEuler-22.03-LTS(5.10.0):否
4.openEuler-22.03-LTS-SP1(5.10.0):否
5.openEuler-22.03-LTS-SP2(5.10.0):否
6.openEuler-22.03-LTS-SP3:否
7.master(6.1.0):否
8.openEuler-22.03-LTS-Next(5.10.0):否
9.openEuler-24.03-LTS(6.6.0):否
10.openEuler-24.03-LTS-Next(6.6.0):否
11.openEuler-22.03-LTS-SP4:否

三、漏洞修复
安全公告链接:https://www.openeuler.org/zh/security/safety-bulletin/detail/?id=openEuler-SA-2024-1682

评论 (19)

openeuler-ci-bot 创建了CVE和安全问题
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
展开全部操作日志

Hi openeuler-ci-bot, welcome to the openEuler Community.
I'm the Bot here serving you. You can find the instructions on how to interact with me at Here.
If you have any questions, please contact the SIG: Kernel, and any of the maintainers.

@YangYingliang ,@jiaoff ,@AlexGuo ,@hanjun-guo ,@woqidaideshi ,@Jackie Liu ,@Zhang Yi ,@colyli ,@ThunderTown ,@htforge ,@Chiqijun ,@冷嘲啊 ,@zhujianwei001 ,@kylin-mayukun ,@wangxiongfeng ,@Kefeng ,@SuperSix173 ,@WangShaoBo ,@Zheng Zucheng ,@陈结松
issue处理注意事项:
1. 当前issue受影响的分支提交pr时, 须在pr描述中填写当前issue编号进行关联, 否则无法关闭当前issue;
2. 模板内容需要填写完整, 无论是受影响或者不受影响都需要填写完整内容,未引入的分支不需要填写, 否则无法关闭当前issue;
3. 以下为模板中需要填写完整的内容, 请复制到评论区回复, 注: 内容的标题名称(影响性分析说明, openEuler评分, 受影响版本排查(受影响/不受影响), 修复是否涉及abi变化(是/否))不能省略,省略后cve-manager将无法正常解析填写内容.


影响性分析说明:

openEuler评分: (评分和向量)

受影响版本排查(受影响/不受影响):
1.master(6.1.0):
2.openEuler-20.03-LTS-SP1(4.19.90):
3.openEuler-20.03-LTS-SP4(4.19.90):
4.openEuler-22.03-LTS(5.10.0):
5.openEuler-22.03-LTS-Next(5.10.0):
6.openEuler-22.03-LTS-SP1(5.10.0):
7.openEuler-22.03-LTS-SP2(5.10.0):
8.openEuler-22.03-LTS-SP3(5.10.0):
9.openEuler-24.03-LTS:
10.openEuler-24.03-LTS-Next:

修复是否涉及abi变化(是/否):
1.master(6.1.0):
2.openEuler-20.03-LTS-SP1(4.19.90):
3.openEuler-20.03-LTS-SP4(4.19.90):
4.openEuler-22.03-LTS(5.10.0):
5.openEuler-22.03-LTS-Next(5.10.0):
6.openEuler-22.03-LTS-SP1(5.10.0):
7.openEuler-22.03-LTS-SP2(5.10.0):
8.openEuler-22.03-LTS-SP3(5.10.0):
9.openEuler-24.03-LTS:
10.openEuler-24.03-LTS-Next:


issue处理具体操作请参考:
https://gitee.com/openeuler/cve-manager/blob/master/cve-vulner-manager/doc/md/manual.md
pr关联issue具体操作请参考:
https://gitee.com/help/articles/4142

openeuler-ci-bot 添加了
 
sig/Kernel
标签
参考网址 关联pr 状态 补丁链接
https://nvd.nist.gov/vuln/detail/CVE-2024-26976 None None https://git.kernel.org/stable/c/4f3a3bce428fb439c66a578adc447afce7b4a750
https://git.kernel.org/stable/c/b54478d20375874aeee257744dedfd3e413432ff
https://git.kernel.org/stable/c/caa9af2e27c275e089d702cfbaaece3b42bca31b
https://git.kernel.org/stable/c/a75afe480d4349c524d9c659b1a5a544dbc39a98
https://git.kernel.org/stable/c/83d3c5e309611ef593e2fcb78444fc8ceedf9bac
https://git.kernel.org/stable/c/3d75b8aa5c29058a512db29da7cbee8052724157
https://git.kernel.org/stable/c/82e25cc1c2e93c3023da98be282322fc08b61ffb
https://git.kernel.org/stable/c/f8730d6335e5f43d09151fca1f0f41922209a264
https://git.kernel.org/stable/c/ab2c2f5d9576112ad22cfd3798071cb74693b1f5
https://ubuntu.com/security/CVE-2024-26976 None None https://discourse.ubuntu.com/c/ubuntu-pro
https://www.opencve.io/cve/CVE-2024-26976 None None https://git.kernel.org/stable/c/4f3a3bce428fb439c66a578adc447afce7b4a750
https://git.kernel.org/stable/c/b54478d20375874aeee257744dedfd3e413432ff
https://git.kernel.org/stable/c/caa9af2e27c275e089d702cfbaaece3b42bca31b
https://git.kernel.org/stable/c/a75afe480d4349c524d9c659b1a5a544dbc39a98
https://git.kernel.org/stable/c/83d3c5e309611ef593e2fcb78444fc8ceedf9bac
https://git.kernel.org/stable/c/3d75b8aa5c29058a512db29da7cbee8052724157
https://git.kernel.org/stable/c/82e25cc1c2e93c3023da98be282322fc08b61ffb
https://git.kernel.org/stable/c/f8730d6335e5f43d09151fca1f0f41922209a264
https://git.kernel.org/stable/c/ab2c2f5d9576112ad22cfd3798071cb74693b1f5
https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2024-26976
https://security-tracker.debian.org/tracker/CVE-2024-26976 None None https://git.kernel.org/linus/3d75b8aa5c29058a512db29da7cbee8052724157

说明:补丁链接仅供初步排查参考,实际可用性请人工再次确认,补丁下载验证可使用CVE补丁工具
若补丁不准确,烦请在此issue下评论 '/report-patch 参考网址 补丁链接1,补丁链接2' 反馈正确信息,便于我们不断优化工具,不胜感激。
如 /report-patch https://security-tracker.debian.org/tracker/CVE-2021-3997 https://github.com/systemd/systemd/commit/5b1cf7a9be37e20133c0208005274ce4a5b5c6a1

openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
ci-robot 通过openeuler/kernel Pull Request !6855任务状态待办的 修改为已完成

@ci-robot 请确认分支: master,openEuler-20.03-LTS-SP1,openEuler-20.03-LTS-SP4,openEuler-22.03-LTS,openEuler-22.03-LTS-Next,openEuler-22.03-LTS-SP1,openEuler-22.03-LTS-SP2,openEuler-22.03-LTS-SP3,openEuler-24.03-LTS,openEuler-24.03-LTS-Next 受影响/不受影响.
请确认分支信息是否填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 任务状态已完成 修改为待办的
openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
openeuler-ci-bot 移除了
 
sig/Kernel
标签
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
openeuler-ci-bot 添加了
 
sig/Kernel
标签
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
郭梦琪 任务状态待办的 修改为已完成
openeuler-ci-bot 任务状态已完成 修改为待办的

@郭梦琪 请确认分支: master,openEuler-20.03-LTS-SP1,openEuler-20.03-LTS-SP4,openEuler-22.03-LTS,openEuler-22.03-LTS-Next,openEuler-22.03-LTS-SP1,openEuler-22.03-LTS-SP2,openEuler-22.03-LTS-SP3,openEuler-24.03-LTS,openEuler-24.03-LTS-Next 受影响/不受影响.
请确认分支信息是否填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
openeuler-ci-bot 移除了
 
sig/Kernel
标签
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
openeuler-ci-bot 添加了
 
sig/Kernel
标签
openeuler-ci-bot 修改了描述
郭梦琪 任务状态待办的 修改为已完成

@郭梦琪 请确认分支: master,openEuler-20.03-LTS-SP1,openEuler-20.03-LTS-SP4,openEuler-22.03-LTS,openEuler-22.03-LTS-Next,openEuler-22.03-LTS-SP1,openEuler-22.03-LTS-SP2,openEuler-22.03-LTS-SP3,openEuler-24.03-LTS,openEuler-24.03-LTS-Next 受影响/不受影响.
请确认分支信息是否填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 任务状态已完成 修改为待办的
openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
openeuler-ci-bot 移除了
 
sig/Kernel
标签
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
openeuler-ci-bot 添加了
 
sig/Kernel
标签
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
郭梦琪 任务状态待办的 修改为已完成
openeuler-ci-bot 任务状态已完成 修改为待办的

@郭梦琪 请确认分支: master,openEuler-20.03-LTS-SP1,openEuler-20.03-LTS-SP4,openEuler-22.03-LTS,openEuler-22.03-LTS-Next,openEuler-22.03-LTS-SP1,openEuler-22.03-LTS-SP2,openEuler-22.03-LTS-SP3,openEuler-24.03-LTS,openEuler-24.03-LTS-Next 受影响/不受影响.
请确认分支信息是否填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
openeuler-ci-bot 移除了
 
sig/Kernel
标签
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
openeuler-ci-bot 添加了
 
sig/Kernel
标签
ci-robot 通过openeuler/kernel Pull Request !7104任务状态待办的 修改为已完成
openeuler-ci-bot 任务状态已完成 修改为待办的

@ci-robot 请确认分支: master,openEuler-20.03-LTS-SP1,openEuler-20.03-LTS-SP4,openEuler-22.03-LTS,openEuler-22.03-LTS-Next,openEuler-22.03-LTS-SP1,openEuler-22.03-LTS-SP2,openEuler-22.03-LTS-SP3,openEuler-24.03-LTS,openEuler-24.03-LTS-Next 受影响/不受影响.
请确认分支信息是否填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
openeuler-ci-bot 移除了
 
sig/Kernel
标签
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
openeuler-ci-bot 添加了
 
sig/Kernel
标签
郭梦琪 任务状态待办的 修改为已完成
openeuler-ci-bot 任务状态已完成 修改为待办的

@郭梦琪 请确认分支: master,openEuler-20.03-LTS-SP1,openEuler-20.03-LTS-SP4,openEuler-22.03-LTS,openEuler-22.03-LTS-Next,openEuler-22.03-LTS-SP1,openEuler-22.03-LTS-SP2,openEuler-22.03-LTS-SP3,openEuler-24.03-LTS,openEuler-24.03-LTS-Next 受影响/不受影响.
请确认分支信息是否填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
openeuler-ci-bot 移除了
 
sig/Kernel
标签
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
openeuler-ci-bot 添加了
 
sig/Kernel
标签
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
zhangchangzhong 通过src-openeuler/kernel Pull Request !1571任务状态待办的 修改为已完成
openeuler-ci-bot 任务状态已完成 修改为待办的

@zhangchangzhong 请确认分支: master,openEuler-20.03-LTS-SP1,openEuler-20.03-LTS-SP4,openEuler-22.03-LTS,openEuler-22.03-LTS-Next,openEuler-22.03-LTS-SP1,openEuler-22.03-LTS-SP2,openEuler-22.03-LTS-SP3,openEuler-24.03-LTS,openEuler-24.03-LTS-Next 受影响/不受影响.
请确认分支信息是否填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
openeuler-ci-bot 移除了
 
sig/Kernel
标签
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
openeuler-ci-bot 添加了
 
sig/Kernel
标签
chenyi 通过src-openeuler/kernel Pull Request !1572任务状态待办的 修改为已完成
openeuler-ci-bot 任务状态已完成 修改为待办的

@chenyi 请确认分支: master,openEuler-20.03-LTS-SP1,openEuler-20.03-LTS-SP4,openEuler-22.03-LTS,openEuler-22.03-LTS-Next,openEuler-22.03-LTS-SP1,openEuler-22.03-LTS-SP2,openEuler-22.03-LTS-SP3,openEuler-24.03-LTS,openEuler-24.03-LTS-Next 受影响/不受影响.
请确认分支信息是否填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
openeuler-ci-bot 移除了
 
sig/Kernel
标签
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
openeuler-ci-bot 添加了
 
sig/Kernel
标签
zhangjialin 通过src-openeuler/kernel Pull Request !1573任务状态待办的 修改为已完成
openeuler-ci-bot 任务状态已完成 修改为待办的

@zhangjialin 请确认分支: master,openEuler-20.03-LTS-SP1,openEuler-20.03-LTS-SP4,openEuler-22.03-LTS,openEuler-22.03-LTS-Next,openEuler-22.03-LTS-SP1,openEuler-22.03-LTS-SP2,openEuler-22.03-LTS-SP3,openEuler-24.03-LTS,openEuler-24.03-LTS-Next 受影响/不受影响.
请确认分支信息是否填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
openeuler-ci-bot 移除了
 
sig/Kernel
标签
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
openeuler-ci-bot 添加了
 
sig/Kernel
标签
openeuler-ci-bot 修改了描述
openeuler-sync-bot 通过openeuler/kernel Pull Request !7019任务状态待办的 修改为已完成
openeuler-ci-bot 任务状态已完成 修改为待办的

@openeuler-sync-bot 请确认分支: master,openEuler-20.03-LTS-SP1,openEuler-20.03-LTS-SP4,openEuler-22.03-LTS,openEuler-22.03-LTS-Next,openEuler-22.03-LTS-SP1,openEuler-22.03-LTS-SP2,openEuler-22.03-LTS-SP3,openEuler-24.03-LTS,openEuler-24.03-LTS-Next 受影响/不受影响.
请确认分支信息是否填写完整,否则将无法关闭当前issue.

openeuler-sync-bot 通过openeuler/kernel Pull Request !7020任务状态待办的 修改为已完成
openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
openeuler-ci-bot 移除了
 
sig/Kernel
标签
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
openeuler-ci-bot 添加了
 
sig/Kernel
标签
openeuler-ci-bot 任务状态已完成 修改为待办的

@openeuler-sync-bot 请确认分支: master,openEuler-20.03-LTS-SP1,openEuler-20.03-LTS-SP4,openEuler-22.03-LTS,openEuler-22.03-LTS-Next,openEuler-22.03-LTS-SP1,openEuler-22.03-LTS-SP2,openEuler-22.03-LTS-SP3,openEuler-24.03-LTS,openEuler-24.03-LTS-Next 受影响/不受影响.
请确认分支信息是否填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
openeuler-ci-bot 移除了
 
sig/Kernel
标签
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
openeuler-ci-bot 添加了
 
sig/Kernel
标签
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
zhangjialin 通过src-openeuler/kernel Pull Request !1592任务状态待办的 修改为已完成
openeuler-ci-bot 任务状态已完成 修改为待办的

@zhangjialin 请确认分支: master,openEuler-20.03-LTS-SP1,openEuler-20.03-LTS-SP4,openEuler-22.03-LTS,openEuler-22.03-LTS-Next,openEuler-22.03-LTS-SP1,openEuler-22.03-LTS-SP2,openEuler-22.03-LTS-SP3,openEuler-22.03-LTS-SP4,openEuler-24.03-LTS,openEuler-24.03-LTS-Next 受影响/不受影响.
请确认分支信息是否填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
openeuler-ci-bot 移除了
 
sig/Kernel
标签
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
openeuler-ci-bot 添加了
 
sig/Kernel
标签
zhangjialin 通过src-openeuler/kernel Pull Request !1591任务状态待办的 修改为已完成
openeuler-ci-bot 任务状态已完成 修改为待办的

@zhangjialin 请确认分支: master,openEuler-20.03-LTS-SP1,openEuler-20.03-LTS-SP4,openEuler-22.03-LTS,openEuler-22.03-LTS-Next,openEuler-22.03-LTS-SP1,openEuler-22.03-LTS-SP2,openEuler-22.03-LTS-SP3,openEuler-22.03-LTS-SP4,openEuler-24.03-LTS,openEuler-24.03-LTS-Next 受影响/不受影响.
请确认分支信息是否填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
openeuler-ci-bot 移除了
 
sig/Kernel
标签
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
openeuler-ci-bot 添加了
 
sig/Kernel
标签
zhangjialin 通过src-openeuler/kernel Pull Request !1593任务状态待办的 修改为已完成
openeuler-ci-bot 任务状态已完成 修改为待办的

@zhangjialin 请确认分支: master,openEuler-20.03-LTS-SP1,openEuler-20.03-LTS-SP4,openEuler-22.03-LTS,openEuler-22.03-LTS-Next,openEuler-22.03-LTS-SP1,openEuler-22.03-LTS-SP2,openEuler-22.03-LTS-SP3,openEuler-22.03-LTS-SP4,openEuler-24.03-LTS,openEuler-24.03-LTS-Next 受影响/不受影响.
请确认分支信息是否填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
openeuler-ci-bot 移除了
 
sig/Kernel
标签
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
openeuler-ci-bot 添加了
 
sig/Kernel
标签
openeuler-ci-bot 修改了描述
zhangjialin 通过src-openeuler/kernel Pull Request !1588任务状态待办的 修改为已完成
openeuler-ci-bot 任务状态已完成 修改为待办的

@zhangjialin 请确认分支: master,openEuler-20.03-LTS-SP1,openEuler-20.03-LTS-SP4,openEuler-22.03-LTS,openEuler-22.03-LTS-Next,openEuler-22.03-LTS-SP1,openEuler-22.03-LTS-SP2,openEuler-22.03-LTS-SP3,openEuler-22.03-LTS-SP4,openEuler-24.03-LTS,openEuler-24.03-LTS-Next 受影响/不受影响.
请确认分支信息是否填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
openeuler-ci-bot 移除了
 
sig/Kernel
标签
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
openeuler-ci-bot 添加了
 
sig/Kernel
标签
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述
openeuler-ci-bot 修改了描述

CVE-2024-26976

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

KVM: Always flush async #PF workqueue when vCPU is being destroyed

Always flush the per-vCPU async #PF workqueue when a vCPU is clearing its
completion queue, e.g. when a VM and all its vCPUs is being destroyed.
KVM must ensure that none of its workqueue callbacks is running when the
last reference to the KVM module is put. Gifting a reference to the
associated VM prevents the workqueue callback from dereferencing freed
vCPU/VM memory, but does not prevent the KVM module from being unloaded
before the callback completes.

Drop the misguided VM refcount gifting, as calling kvm_put_kvm() from
async_pf_execute() if kvm_put_kvm() flushes the async #PF workqueue will
result in deadlock. async_pf_execute() can't return until kvm_put_kvm()
finishes, and kvm_put_kvm() can't return until async_pf_execute() finishes:

WARNING: CPU: 8 PID: 251 at virt/kvm/kvm_main.c:1435 kvm_put_kvm+0x2d/0x320 [kvm]
Modules linked in: vhost_net vhost vhost_iotlb tap kvm_intel kvm irqbypass
CPU: 8 PID: 251 Comm: kworker/8:1 Tainted: G W 6.6.0-rc1-e7af8d17224a-x86/gmem-vm #119
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
Workqueue: events async_pf_execute [kvm]
RIP: 0010:kvm_put_kvm+0x2d/0x320 [kvm]
Call Trace:

async_pf_execute+0x198/0x260 [kvm]
process_one_work+0x145/0x2d0
worker_thread+0x27e/0x3a0
kthread+0xba/0xe0
ret_from_fork+0x2d/0x50
ret_from_fork_asm+0x11/0x20

---[ end trace 0000000000000000 ]---
INFO: task kworker/8:1:251 blocked for more than 120 seconds.
Tainted: G W 6.6.0-rc1-e7af8d17224a-x86/gmem-vm #119
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:kworker/8:1 state:D stack:0 pid:251 ppid:2 flags:0x00004000
Workqueue: events async_pf_execute [kvm]
Call Trace:

__schedule+0x33f/0xa40
schedule+0x53/0xc0
schedule_timeout+0x12a/0x140
__wait_for_common+0x8d/0x1d0
__flush_work.isra.0+0x19f/0x2c0
kvm_clear_async_pf_completion_queue+0x129/0x190 [kvm]
kvm_arch_destroy_vm+0x78/0x1b0 [kvm]
kvm_put_kvm+0x1c1/0x320 [kvm]
async_pf_execute+0x198/0x260 [kvm]
process_one_work+0x145/0x2d0
worker_thread+0x27e/0x3a0
kthread+0xba/0xe0
ret_from_fork+0x2d/0x50
ret_from_fork_asm+0x11/0x20

If kvm_clear_async_pf_completion_queue() actually flushes the workqueue,
then there's no need to gift async_pf_execute() a reference because all
invocations of async_pf_execute() will be forced to complete before the
vCPU and its VM are destroyed/freed. And that in turn fixes the module
unloading bug as __fput() won't do module_put() on the last vCPU reference
until the vCPU has been freed, e.g. if closing the vCPU file also puts the
last reference to the KVM module.

Note that kvm_check_async_pf_completion() may also take the work item off
the completion queue and so also needs to flush the work queue, as the
work will not be seen by kvm_clear_async_pf_completion_queue(). Waiting
on the workqueue could theoretically delay a vCPU due to waiting for the
work to complete, but that's a very, very small chance, and likely a very
small delay. kvm_arch_async_page_present_queued() unconditionally makes a
new request, i.e. will effectively delay entering the guest, so the
remaining work is really just:

    trace_kvm_async_pf_completed(addr, cr2_or_gpa);

    __kvm_vcpu_wake_up(vcpu);

    mmput(mm);

and mmput() can't drop the last reference to the page tables if the vCPU is
still alive, i.e. the vCPU won't get stuck tearing down page tables.

Add a helper to do the flushing, specifically to deal with "wakeup all"
work items, as they aren't actually work items, i.e. are never placed in a
workqueue. Trying to flush a bogus workqueue entry rightly makes
__flush_work() complain (kudos to whoever added that sanity check).

Note, commit 5f6de5cbebee ("KVM: Prevent module exit until al
---truncated---

openEuler评分:(评分和向量)
5.5
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP1:受影响
2.openEuler-20.03-LTS-SP4:受影响
3.openEuler-22.03-LTS:受影响
4.openEuler-22.03-LTS-SP1:受影响
5.openEuler-22.03-LTS-SP2:受影响
6.openEuler-22.03-LTS-SP3:受影响
7.openEuler-22.03-LTS-SP4:不受影响
8.master(6.1.0):不受影响
9.openEuler-22.03-LTS-Next:不受影响
10.openEuler-24.03-LTS:不受影响
11.openEuler-24.03-LTS-Next:不受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP1(4.19.90):否
2.openEuler-20.03-LTS-SP4:否
3.openEuler-22.03-LTS:否
4.openEuler-22.03-LTS-SP1:否
5.openEuler-22.03-LTS-SP2:否
6.openEuler-22.03-LTS-SP3:否
7.master(6.1.0):否
8.openEuler-22.03-LTS-Next:否
9.openEuler-24.03-LTS:否
10.openEuler-24.03-LTS-Next:否
11.openEuler-22.03-LTS-SP4:否

===========================================================

openeuler-ci-bot 修改了描述
郭梦琪 任务状态待办的 修改为已完成
openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
openeuler-ci-bot 移除了
 
sig/Kernel
标签
openeuler-ci-bot 添加了
 
CVE/FIXED
标签
openeuler-ci-bot 添加了
 
sig/Kernel
标签
openeuler-ci-bot 修改了描述

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(2)
5329419 openeuler ci bot 1632792936
1
https://gitee.com/src-openeuler/kernel.git
git@gitee.com:src-openeuler/kernel.git
src-openeuler
kernel
kernel

搜索帮助