v3
2026-09-16
s390 CIO 改用 kmalloc 分配 · v3
v3 清理 s390 CHSC/QDIO/CMF 等分配,改用 kzalloc/kmalloc 和 __free(kfree),简化释放。
原始补丁链接
子 Patch(13)
1/13
s390/chsc: Use kzalloc() for CUBs
cub_alloc() 的 CUB 及扩展块改用 kzalloc()/kfree(),替代 get_zeroed_page()/free_page(),去掉类型转换且释放无需记录大小。
2/13
s390/chsc: Use kzalloc() for the SEI work area
chsc_init() 的 SEI 工作区改用 kzalloc()/kfree(),替代 get_zeroed_page()/free_page(),简化分配释放且不损失快路径性能。
3/13
s390/chsc_sch: Use kzalloc() for CHSC requests
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),删除 cleanup 标签并提前返回;异步和 close 路径不变。
5/13
s390/cio: Use kzalloc() for CHSC work areas
chsc_init() 与 qdio_allocate() 的 CHSC 工作区改用 kzalloc()/kfree(),并把 qdio_irq.chsc_page 改为 void * 以去掉强制转换。
6/13
s390/cmf: Use kmalloc() for the CMB area
alloc_cmb() 的 CMB 区改用 kmalloc()/kfree();其 32 字节对齐由 kmalloc 保证,并先拒绝空区域,避免按页取整和类型转换。
7/13
s390/idals: Use kmalloc() for IDAL data buffers
idal_buffer_alloc() 的 IDAL 数据缓冲改用 kmalloc()/kfree(),并让 kmemleak 忽略这些块,因为仅保留其 DMA 地址,替代按页分配。
8/13
s390/qdio_main: Use kzalloc() for the IRQ structure
qdio_allocate() 的 QDIO irq 结构改用 kzalloc()/kfree(),并移除 CCW 的 kmemleak 豁免,因 irq 结构可被跟踪并指向 CCW。
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(),替代 get_zeroed_page()/free_page(),无需强制转换且释放不传大小。
11/13
s390/qdio_setup: Use kmalloc() for the storage list
__qdio_allocate_qs() 的存储列表信息块改用 kmalloc()/kfree(),替代 __get_free_page()/free_page(),简化分配释放。
12/13
s390/qdio_setup: Use kmalloc() for the SSQD request
qdio_setup_get_ssqd() 的 SSQD CHSC 请求块改用 kmalloc()/kfree(),替代 __get_free_page()/free_page(),简化错误路径。
13/13
s390/scm: Use kmalloc() for SCM information
scm_update_information() 的 SCM 信息响应缓冲改用 kmalloc()/__free(kfree),替代 __get_free_page()/free_page(),自动释放并简化错误路径。