This is a note to let you know that I've just added the patch titled bpf: Reject writes for PTR_TO_MAP_KEY in check_helper_mem_access to the 5.18-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: bpf-reject-writes-for-ptr_to_map_key-in-check_helper_mem_access.patch and it can be found in the queue-5.18 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 7b3552d3f9f6897851fc453b5131a967167e43c2 Mon Sep 17 00:00:00 2001 From: Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> Date: Sat, 19 Mar 2022 13:38:25 +0530 Subject: bpf: Reject writes for PTR_TO_MAP_KEY in check_helper_mem_access From: Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> commit 7b3552d3f9f6897851fc453b5131a967167e43c2 upstream. It is not permitted to write to PTR_TO_MAP_KEY, but the current code in check_helper_mem_access would allow for it, reject this case as well, as helpers taking ARG_PTR_TO_UNINIT_MEM also take PTR_TO_MAP_KEY. Fixes: 69c087ba6225 ("bpf: Add bpf_for_each_map_elem() helper") Signed-off-by: Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> Link: https://lore.kernel.org/r/20220319080827.73251-4-memxor@xxxxxxxxx Signed-off-by: Alexei Starovoitov <ast@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- kernel/bpf/verifier.c | 5 +++++ 1 file changed, 5 insertions(+) --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -4861,6 +4861,11 @@ static int check_helper_mem_access(struc return check_packet_access(env, regno, reg->off, access_size, zero_size_allowed); case PTR_TO_MAP_KEY: + if (meta && meta->raw_mode) { + verbose(env, "R%d cannot write into %s\n", regno, + reg_type_str(env, reg->type)); + return -EACCES; + } return check_mem_region_access(env, regno, reg->off, access_size, reg->map_ptr->key_size, false); case PTR_TO_MAP_VALUE: Patches currently in stable-queue which might be from memxor@xxxxxxxxx are queue-5.18/bpf-reject-writes-for-ptr_to_map_key-in-check_helper_mem_access.patch queue-5.18/bpf-do-write-access-check-for-kfunc-and-global-func.patch queue-5.18/bpf-check-ptr_to_mem-mem_rdonly-in-check_helper_mem_access.patch