今天两条大改动都指向同一件事:内核看不见的资源。 Dave Hansen 用 24 个补丁让内核自己跑上影子栈; 另一条 RFC 要把手机和车载上那些不记账的 dma-buf 图形内存 拉进 memcg。
📊 板块活跃度
/ column
数据截至 10-22 06:23 北京,近 24h 各板块真实计数:net 657 · DRM 309 · mm 300 · fs 213 · PCI 148 · media 122 · LSM 103 · arch 98 · block 68 · Rust 57 · rt 18 · virtio 0。net 依然最高,但今天是安全修复与 skb 清理的密集日; PCI、block、Rust 也在同一天集中出现 7.4 合并窗口的拉取请求。
🎬 今日导读
/ section💡 今日头条
/ section内核第一次给自己也上影子栈
thread_info 旁切出,借 vmap 栈已有的 4K 别名建立特殊权限映射;异常影子栈复用 CEA 基础设施;SSP(影子栈指针)按线程保存并随上下文切换。 🔗 原文
dma-buf 内存终于要进 memcg 记账
dma-buf 是 GPU、相机、显示之间共享缓冲区的统一抽象, dma-heap 负责分配。这块内存由分配它的进程持有,但默认不计入任何 memcg—— cgroup 的内存限额对图形缓冲区基本不生效。 memory.current 看不出来。 __GFP_ACCOUNT,而是在 struct dma_buf 上外挂一个 MEMCG_DMABUF 计数,所有记账收敛到单一路径, 并把 system heap 的 __GFP_ACCOUNT 去掉以免重复计数。 DMA_HEAP_IOCTL_ALLOC 新增 charge_fd, 接受 pidfd 或 cgroupfd 指定目标 cgroup;新 ioctl DMA_BUF_IOCTL_XFER_CHARGE 可在分配后转移记账, 覆盖 SurfaceFlinger 到 gralloc 的双跳分配。另加 LSM/SELinux 钩子。 🔗 原文
📰 media 视频采集
/ column★ Camera & ISP 面对面会议:V4L2 要能容忍一颗坏 sensor
.detect() 通过 V4L2 control 和 uevent 暴露状态; RGB IR——用 group ID control 在 VIDIOC_S_EXT_CTRLS 里选流, 并新增 I2C 时序事件 API;多上下文——NXP neoisp、Qualcomm OPE/IFE 都有需求; 共享 media graph——进一步重设计,让 V4L2 只对 media device 操作, 不再把 video device 和 subdev 暴露给用户态。 🔗 原文
★ camss 把 streams 开关提到 SoC 层,顺手启用 SC7280
camss 是 Qualcomm 摄像头的 V4L2 驱动。streams API 让一个 subdev 同时服务多路流,Gjorgji 的 0/8 系列正在打基础;这 4 个补丁是 叠在上面的适配与修复。 set_fmt 增加了 const struct v4l2_subdev_client_info * 参数后签名对不上,先修;把 streams_enable 从每个 CSIPHY/CSID 挪到 per-SoC 的 struct camss_resources,SM8250 从 14 处赋值 变成 1 处;SC7280 因此只需一行启用;最后修 pad 数量,否则整组补丁一加, camss 直接 probe 失败(-EINVAL)。 🔗 原文
📰 DRM 显示
/ column★ xe 要把挂死的 GPU 彻底隔离在硬件之外
-ECANCELED; 永久 wedge 返回 -ENOTRECOVERABLE,且先发布阻塞状态、 signal 掉待处理的 GT fence,再排空已有读者。隔离完成后丢 page fault、 停 SVM 垃圾回收、关显示、停中断、清 PCI bus mastering,并把后续 CPU 缺页映射到每个 BO 的 dummy page。 🔗 原文
★ amdgpu SVM 不再另起炉灶,改用 xe 那套公共核心
amdkfd/kfd_svm.c 里,是 KFD 私有实现。 drm_gpusvm 与 drm_pagemap 核心——也就是 xe 已经在用的那套页迁移基础设施。 Phase 1 只做单 GPU、XNACK 开启;锁定相关补丁直接建立在 Christian König 的 amdgpu VM 重构之上,没有那组前置补丁就编不过。 🔗 原文
📰 mm 内存管理
/ column★ 虚拟 swap 空间 v6:让 swap 槽不再等于磁盘槽位
memory.stat 的 vswap 槽计数,把 swapfile 上限收到 8TB, 并把集群描述符的 xarray 换成 vmalloc 稀疏数组的 RFC 作为第 12 个补丁。 🔗 原文
★ zram 拆开每 CPU 的读流与写流,治优先级反转
🔗 原文
📰 net 网络
/ column★ TCP 认证绕过:只编译 MD5 时,AO 包被当成合法数据
tcp_inbound_hash() 在 TCP-MD5 或 TCP-AO 任一启用时, 都会解析两种选项。问题出在「只启用其中一种」的配置里。 tcp_inbound_ao_hash() 的空实现,而它返回 SKB_NOT_DROPPED_YET——等于告诉上层「没问题」。于是要求 MD5 认证的 socket 会接受未认证数据。反过来只编译 AO 时,MD5 包也是同样 下场。修复只有两行:两个禁用态实现改为返回对应的 drop reason。 Fixes: 标签并 Cc stable,说明旧内核也需要回移植。 🔗 原文
★ skb 校验和不能再拿 0 当失败
skb_checksum() 与 skb_crc32c() 遇到 skb 数据不够时返回 0。但 0 本身就是 合法校验和,调用者无法区分「算出来是 0」和「根本没算完」。 skb_checksum_full() 与 skb_crc32c_full(),核心用户按失败处理; skb_copy_and_csum_bits() 也改成报告错误; skb_segment() 在遍历 frag_list 时逐个成员检查, 而不是先多扫一遍。 🔗 原文
📰 fs 文件系统
/ column★ 一个卡住的 mount,不该拖死整台机器的 sync
sget_fc() 就挂上了全局链表,但要等 vfs_get_tree() 置上 SB_BORN 才可用。 这中间 super_lock() 会不可中断地等。 sync()、drop_caches、 Q_SYNC 卡死,ustat()、quotactl()、 BLKFLSBUF 也一起被拖住,而且 SIGKILL 杀不掉。 sync()、drop_caches、 Q_SYNC)直接跳过还没 BORN 的 superblock——文件系统还没挂上, 不可能有数据要写回。针对具体 superblock 的路径仍然等待,但改成可被信号 打断。SELinux、冻结、紧急 remount 等路径不动。它接在另一组 「stuck unmount」补丁之上。 🔗 原文
★ CAP_SETFCAP 与 user namespace:堵上 setns 和 ptrace 两条绕路
db2e718a4798 要求映射 uid 0 的用户命名空间必须由带 CAP_SETFCAP 的任务创建,但它只检查创建者。 setns() 进去、PTRACE_ATTACH 挂上去、 写 uid_map,或者在 idmapped mount 上动手脚,最终仍能为祖先的 root 用户写 file capability。 setfcap_level, 表示创建者的 CAP_SETFCAP 能覆盖到多高。能映射祖先 root 的命名空间, 只允许 CAP_SETFCAP 同样够高的任务 setns 或 attach;uid_map 写入和 security.capability 的检查改为按命名空间而不是按 cred 判定。 相比 v2,普通的 0 到 100000 容器映射重新放行。 🔗 原文
📌 机制雷达:3 条跨域大改动
/ section/sys/kernel/security/kap,用 mkdir 建 igroup,像 cgroup。 原文 7.4 合并窗口的拉取请求
○ [GIT PULL] PCI changes for v7.4 〔10-22 06:43〕
○ [GIT PULL] Block updates for 7.4-rc 〔10-21 22:43〕
○ [GIT PULL] Landlock update for v7.4-rc1 〔10-22 00:25〕
○ [GIT PULL] KEYS: changes for v7.4-rc1 〔10-21 22:22〕
○ [GIT PULL] rust-i2c-next for 7.4 〔10-22 00:52〕
○ [GIT PULL] HID for 7.4 merge window 〔10-22 04:25〕
○ [GIT PULL] kunit next update for Linux 7.4-rc1 〔10-22 04:12〕
○ [GIT PULL] kselftest next update for Linux 7.4-rc1 〔10-22 03:34〕
更多跨领域动态
○ [PATCH 0/2] virtio_blk: add FUA write support 〔10-21 13:52〕
○ [PATCH net v4 0/3] netconsole: fix target enable race and configfs read locking 〔10-21 22:19〕
○ [PATCH net v4 0/7] more virtio-net csum hardening 〔10-21 15:50〕
○ [PATCH 0/2] mm/zswap: distinguish incompressible pages from compressor failures 〔10-22 04:57〕
○ [PATCH 0/6] fs: fixes for statmount() short buffers and listmount()/listns() cursors 〔10-21 19:47〕
○ [PATCH v4 0/6] Add Greybus Sotfsvc and UART Node drivers 〔10-21 19:38〕
○ [PATCH 00/18] riscv: add initial support for Zhihe A210 and Melon Pi 〔10-22 03:53〕
📖 本期概念速查
/ section如果对你有用,点个赞,或转给需要的朋友。
数据来源:lore.kernel.org(全内核 13 列表)· 北京时间