v5
2026-10-29
semop数组计入memcg · v5
动态 semop 的 sops 数组改用 GFP_KERNEL_ACCOUNT 计入 memcg,并校验 SEMOPM,避免大数组绕过内存记账。
原始补丁链接
子 Patch(3)
1/3
ipc/sem: account dynamically allocated sops arrays to memcg
do_semtimedop() 对超过 SEMOPM_FAST 而动态分配的 sops 数组按调用者 memcg 记账,防止可调 SEMOPM 扩大未记账堆分配范围;实测每次 semop 增加约 2%~12% 开销。
2/3
ipc/sem: reject negative SEMOPM values
kernel.sem 写入先解析临时副本并校验 SEMOPM/SEMMNI 非负,持 per-namespace mutex 后发布,用 READ/WRITE_ONCE 访问 live 字段,避免负 SEMOPM 转无符号绕过 semop 操作数限制。
3/3
ipc/sem: remove obsolete SEMOPM fragmentation warning
更新 UAPI sem.h 注释,删除 SEMOPM>1000 可能因物理碎片失败的过时警告,改述编译默认值和运行时 sysctl;因 sops 已改用 kvmalloc 支持大 nsops。