v2 2026-09-10

s390 CIO 改用 kmalloc 分配 · v2

Mike Rapoport 清理 s390 CHSC/QDIO/CMF 等代码,用 kzalloc/kmalloc 和 __free(kfree) 替换手动分配初始化。

原始补丁链接

子 Patch(13)

1/13
s390/chsc: Use kzalloc() for CUBs
cub_alloc() 中 get_zeroed_page()/free_page() 改为 kzalloc()/kfree(),CUB 内存无需直取页分配器,避免类型转换并让 kfree 无需大小参数。
2/13
s390/chsc: Use kzalloc() for the SEI work area
chsc_init() 分配 SEI 工作区时用 kzalloc()/kfree() 替代 get_zeroed_page()/free_page(),简化 API 并免去类型转换。
3/13
s390/chsc_sch: Use kzalloc() for CHSC requests
chsc_sch 的 CHSC ioctl 处理器分配请求/响应区时改用 kzalloc()/kfree() 替代 get_zeroed_page()/free_page(),无需类型转换和释放时大小。
4/13
s390/chsc_sch: Use __free(kfree) for synchronous CHSC requests
同步 CHSC ioctl 的本地缓冲区改用 __free(kfree) 自动释放,清理标签改为提前返回,避免手工 kfree 遗漏;异步和 close 路径不变。
5/13
s390/cio: Use kzalloc() for CHSC work areas
chsc_init() 和 qdio_allocate() 的 CHSC work area 改用 kzalloc/kfree,并把 chsc_page 改成 void * 去掉强制转换,简化整页零内存的分配释放。
6/13
s390/cmf: Use kmalloc() for the CMB area
alloc_cmb() 为基本 CMB 分配共享测量块,改用 kmalloc/kfree;kmalloc 自然满足 32 字节对齐,避免按页取整,并在分配前拒绝空区域。
7/13
s390/idals: Use kmalloc() for IDAL data buffers
idal_buffer_alloc() 的 IDAL 数据块改用 kmalloc/kfree 替代按页分配,简化释放;因只保留 DMA 地址,用 kmemleak_ignore 防误报。
8/13
s390/qdio_main: Use kzalloc() for the IRQ structure
qdio_allocate() 的 QDIO irq 结构改用 kzalloc/kfree;结构现被 kmemleak 跟踪,删除 CCW 的 kmemleak 豁免,避免隐藏真实指针引用。
9/13
s390/qdio_main: Use kzalloc() for the QDR
qdio_allocate() 的 QDR 改用 kzalloc/kfree,替代 get_zeroed_page/free_page,消除整页分配带来的强制类型转换和按页释放。
10/13
s390/qdio_setup: Use kzalloc() for QDIO buffers
qdio_alloc_buffers() 的 QDIO 缓冲区改用 kzalloc/kfree,不再按整页零分配,统一 kmalloc 语义并简化释放路径。
11/13
s390/qdio_setup: Use kzalloc() for the storage list
__qdio_allocate_qs() 的 storage list 信息块改用 kzalloc/kfree,替代 __get_free_page/free_page,减少强转并保证零初始化。
12/13
s390/qdio_setup: Use kzalloc() for the SSQD request
qdio_setup_get_ssqd() 的 SSQD CHSC 请求块改用 kzalloc/kfree,替代 __get_free_page/free_page,简化释放并消除类型转换。
13/13
s390/scm: Use kmalloc() for SCM information
scm_update_information() 的 CHSC 响应缓冲区改用 kmalloc/kfree,并用 __free(kfree) 自动释放,去掉 __get_free_page 和手工 free_page。