Merge branch 'bpf-migrate-bpf_task_work-and-file-dynptr-to-kmalloc_nolock' Mykyta Yatsenko says: ==================== bpf: Migrate bpf_task_work and file dynptr to kmalloc_nolock Now that kmalloc can be used from NMI context via kmalloc_nolock(), migrate BPF internal allocations away from bpf_mem_alloc to use the standard slab allocator. Use kfree_rcu() for deferred freeing, which waits for a regular RCU grace period before the memory is reclaimed. Sleepable BPF programs hold rcu_read_lock_trace but not regular rcu_read_lock, so patch 1 adds explicit rcu_read_lock/unlock around the pointer-to-refcount window to prevent kfree_rcu from freeing memory while a sleepable program is still between reading the pointer and acquiring a reference. Patch 1 migrates bpf_task_work_ctx from bpf_mem_alloc/bpf_mem_free to kmalloc_nolock/kfree_rcu. Patch 2 migrates bpf_dynptr_file_impl from bpf_mem_alloc/bpf_mem_free to kmalloc_nolock/kfree. Signed-off-by: Mykyta Yatsenko <yatsenko@meta.com> --- Changes in v2: - Switch to scoped_guard in patch 1 (Kumar) - Remove rcu gp wait in patch 2 (Kumar) - Defer to irq_work when irqs disabled in patch 1 - use bpf_map_kmalloc_nolock() for bpf_task_work - use kmalloc_nolock() for file dynptr - Link to v1: https://lore.kernel.org/all/20260325-kmalloc_special-v1-0-269666afb1ea@meta.com/ ==================== Link: https://patch.msgid.link/20260330-kmalloc_special-v2-0-c90403f92ff0@meta.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>