0/1 已展开

LLM 分析

syzbot 自动化补丁测试失败通告

系列概况

  • 标题:Re: [syzbot] [mm?] BUG: sleeping function called from invalid context in kvm_mmu_notifier_invalidate_range_start
  • 作者:syzbot(内核 fuzzing 自动化机器人)
  • 版本:无(单封 syzbot 自动回信,非人为版本号)
  • 规模:1 封邮件
  • 修改文件:无可读上下文(提议补丁因冲突未应用)
  • 代码统计:N/A
  • Message-ID6a8847d5.dbb3a75c.13dd47.0017.GAE@google.com
  • 完整性:仅含 syzbot 状态通告,无人工讨论或 patch hunk 可见

补丁目的

本线程的根议题是 KVM 的 kvm_mmu_notifier_invalidate_range_start 路径在不该睡眠的上下文(典型为 RCU / atomic / 持 spinlock)里调用了可能睡眠的函数,从而触发 scheduler 子系统的 sleeping-from-invalid-context 告警。而这一封具体邮件的目的不是讲修复思路,而是 syzbot 在受命自动测试该提议补丁时回传一个 CI 失败信号:include/linux/kernel.h:70 处的 patch hunk 无法 apply。

旧流程的问题

提议补丁基于某个旧的内核 base,patch 的上下文行(特别是 kernel.h 第 70 行附近的 hunk)与 syzbot 当下取到的基线(commit 818bebeb,drm/xe flat CCS 改动)不匹配。结果是 git apply 直接拒绝,CI 拿不到 PASS/FAIL 信号。

新流程

报告者需要以 818bebeb 或更新 commit 为基底 rebase 提议补丁,确保 include/linux/kernel.h 处的 hunk 上下文能干净落到上游,再请 syzbot 重跑一次。重新提交后还应观察同一个 fuzz case 能否继续稳定复现 "sleeping in invalid context"。

关键实现

本邮件真正的内容就是一段错误回执,关键字段摘录如下:

failed to apply patch:
error: patch failed: include/linux/kernel.h:70
error: include/linux/kernel.h: patch does not apply
Tested on: commit: 818bebeb drm/xe: Don't hand out the flat CCS storage a..
git tree: upstream

由此可推出三个事实:

  • 提议补丁改动了 include/linux/kernel.h 附近的 hunk;
  • 测试基线是 818bebeb(一笔 drm/xe 改动),属于 mainline 上游;
  • git tree: upstream 表明没有切到 linux-next,所以冲突来自内核自身代码变更而非 next tree 的早期化变动。

类比

把 syzbot 想象成打印店的校对员:你交给他一份要"按行号贴到原文"的补丁,他先比对每个 hunk 上下文;如果原文已经改版,对应段落错位,他就直接退回,不给你继续打印。退回不代表论文写错,而是稿本对错了,作者必须先确认"我现在用的是哪一版稿子"再重新排版。

另一层更轻的类比:这就像数据库 migration 打不上 — 报错只说明 schema baseline 对不齐,不代表 SQL 本身不对。

Highlight:风险与注意点

  • 这封邮件不是对补丁正确性的技术 review,它是一份 CI 失败报告,需要维护者先 rebase 再重测。
  • kernel.h:70 周围通常是 __might_sleepmight_sleep_printlockdep_assert_* 这类宏,原始 bug 报告本身就高概率与 scheduler 的 sleeping 校验勾连。
  • 误读风险:不要把 "patch does not apply" 等价于 "补丁写错了";二者经常被混为一谈。
  • 跟进点:观察 rebase 后的版本是否仍能稳定复现 BUG: sleeping function called from invalid context,以及对应的 KVM MMU notifier lockdep trace。

一句话总结

syzbot 自动回信:提议的 KVM MMU notifier "sleeping in invalid context" 修复补丁无法 apply 到 include/linux/kernel.h:70,需要先 rebase 到 818bebeb 或更新 commit 后再请 syzbot 重测。