今天最该看的一条是安全问题:有人发现无特权用户能通过 perf 的 tracepoint filter 把内核的 KASLR slide 读出来,附了能跑的 PoC;另一条,Rust 第一次伸进 mm 子系统—— 给 DAMON 写了一套抽象,结果撞上「Rust 还没有 sysfs 封装」这道硬墙。
🎬 今日导读
/ section📊 板块活跃度
/ column
数据截至 09-28 06:23 北京,近 24h 各板块真实计数:net 411 · DRM 118 · mm 80 · PCI 66 · Rust 51 · media 33 · fs 25 · block 13 · LSM 8 · arch 2 · rt 1 · virtio 0。 net 的量依旧最大,但今天最重的两条都不在量最大的板块——一条在 lkml(安全),一条在 mm(Rust 进新子系统)。
💡 今日头条
/ sectionperf 的 tracepoint filter 把内核基址漏给了无特权用户
kernel/trace/trace_events_filter.c 有一条路径没设防: 一个禁用的、只计数的 perf tracepoint 事件(exclude_kernel=1、 sample_type=0)本不该碰内核,但 PERF_EVENT_IOC_SET_FILTER 依然接受 .function 谓词。数值操作数会被送进 kallsyms_lookup_size_offset(), 于是「调用成功还是失败」本身就区分了「这个地址在不在内核镜像里」。 from_perf 标志:当 function 谓词来自 perf 时, 先走 perf_allow_tracepoint() 做权限检查。改动落在 trace_events_filter.c,+29/-10。 CONFIG_PHYSICAL_ALIGN 允许的最小值), 看哪次 ioctl 返回成功即可。上游默认 perf_event_paranoid=2 下就能复现。 /proc/kallsyms 得到的值一致。修复后这条路径要过权限检查,泄露面收窄。 perf_allow_tracepoint() 的语义边界——放行过宽会留下别的旁路,过严又可能挡住合法用法。 🔗 原文
Rust 第一次伸进 mm:DAMON 有了抽象层,却撞上「Rust 还没有 sysfs」
samples/damon/prcl.c 是它的主动回收示例: 盯住一个进程的虚拟地址空间,把冷区按 DAMOS_PAGEOUT 换出去。 include/linux/damon.h 生成 Rust 绑定; ② 在新的 rust::kernel::damon 里加一层薄安全封装(context / target / access pattern / quota / watermark / scheme,以及 start/stop),FFI 全部关在封装里、错误码走 kernel::Result;③ 把 prcl.c 移植成 samples/damon/rust_prcl.rs; ④ 补 MAINTAINERS。 target_pid、enabled)做控制接口,而 Rust 的 module param 目前只能在加载时设、不出现在 /sys/module/ 下, 且 mainline 与 rust-next 都还没有通用的 sysfs 封装。作者只好改用 debugfs (/sys/kernel/debug/rust_prcl/)。 damon_call() 回调反复上报工作集大小(wss), 这版只覆盖监控/回收主路径。 🔗 原文
📰 DRM 显示
/ column★ nova-core 命令队列重构到 v2:为 r000 双消息类型铺路
🔗 原文
★ Solomon SSD16xx 电子纸显示控制器:14 帖的完整新驱动
🔗 原文
更多动态
○ it6505 桥接芯片 DP 音频 + shared-DAI 修复到 v8(14 帖) 〔09-27 23:49〕
○ drm/imagination:修一批被 Sashiko 评审标出的既有 bug 〔09-27 16:27〕
○ Synx 全局同步框架讨论继续:与 dma-fence 的关系是焦点 〔09-28 01:19〕
📰 mm 内存管理
/ column★ device DAX 转向 section-based vmemmap 优化,到 v5
🔗 原文
★ 热页跟踪与晋升 v8:pghot 仍在密集讨论
🔗 原文
更多动态
○ mm/damon:quota goal 目标度量补集标志(RFC v4,7 帖) 〔09-27 21:05〕
○ hibernation:让 safe_copy_page 更健壮,并移除 debug_pagealloc 支持(v2,5 帖) 〔09-27 23:02〕
○ tools/mm/slabinfo:上报 sheaf 与 barn 统计 〔09-27 13:57〕
📰 PCI 总线
/ column★ 给「没有 AER 能力的设备」补上错误上报
PCI/DPC: Reinstate support for AER-incapable ports)—— 说明这条路径曾经有、后来在重构中丢了。 🔗 原文
更多动态
○ PCI fixes for v7.3 的 pull request 进入讨论 〔09-28 03:48〕
○ AMD IOMMU 64 位寻址下的存储损坏修复被合入(subset) 〔09-27 15:16〕
📰 net 网络
/ column今日动态
○ arm64:新增融合的 copy + 网络校验和实现——一次遍历同时完成拷贝与 checksum 〔09-28 02:44〕
○ 网络设备释放托管 IRQ 的时机修正:应在 netdev 释放之前(v2,7 帖) 〔09-27 23:30〕
○ 通用 PON 框架 RFC 讨论继续:无源光网络想进内核 〔09-27 22:30〕
○ ftgmac100:新增 AST2700 支持(5 帖) 〔09-27 17:39〕
📰 fs 文件系统
/ column今日动态
○ io_uring 想要 copy_file_range:新增 IORING_OP_COPY_FILE_RANGE(RFC) 〔09-27 17:48〕
○ errseq 会掩盖后续写回错误:两个补丁修 errseq_check_and_advance,并补并发自测 〔09-27 23:48〕
○ ntfs3:修目录权限与符号链接一致性(2 帖) 〔09-28 04:30〕
📰 Rust
/ column今日动态
○ rust: DropGuard 到 v4:把「析构时执行动作」抽象成类型,已在锁、block、serdev 上试点 〔09-27 18:45〕
○ rust_binder:新增事务缓冲区 tracepoints(4 帖) 〔09-27 20:56〕
○ rust: configfs 要求回调数据线程安全(v2) 〔09-27 22:18〕
○ rust: io:ResourceSize 改为 transparent newtype(v4) 〔09-28 02:11〕
📰 LSM / block / arch / rt / virtio
/ column今日动态
○ keys:修 ownership 变更期间的 key_user 生命周期与计费竞态(v3,2 帖) 〔09-28 00:25〕
○ dm-crypt 拆卸路径的 mempool_free_bulk 空指针解引用(6.8 → 7.0 回归) 〔09-27 16:56〕
○ block:让 blkdev_fallocate() 的 zeroout 可被信号打断 〔09-27 13:15〕
○ kbuild:vmlinux 用 --gc-sections 链接时保留 .modinfo 〔09-28 00:12〕
○ virtio-blk 内联加密到 v4:新增控制 virtqueue 〔09-25 22:01〕
📌 机制雷达:3 条跨域大改动
/ sectionRemove superseded ... skcipher)——新版走 AES-NI/VAES 路径, 旧的手写实现已成维护负担。 原文 sp_banks 数组切到通用 memblock。 让 sparc32 跟上其余架构的引导期内存模型。 原文 from_perf 概念,把「这条过滤表达式从哪来」变成权限判定的依据。 原文 📖 本期概念速查
/ sectionstruct page 数组所映射的虚拟内存区。 device DAX 场景下为整段设备内存预留 struct page 代价很大, section-based 优化改为按需建映射。 module_param_cb 让参数在 /sys/module/<mod>/parameters/ 下可读可写。 Rust 侧目前只支持加载时设定,这是本期 Rust DAMON 改用 debugfs 的直接原因。 如果对你有用,点个赞,或留言聊聊你最关心的板块。
数据来源:lore.kernel.org(全内核 13 列表)· 北京时间