Files
linux/include/linux
Leon Hwang fdad456cbc bpf: Fix updating attached freplace prog in prog_array map
The commit f7866c3587 ("bpf: Fix null pointer dereference in resolve_prog_type() for BPF_PROG_TYPE_EXT")
fixed a NULL pointer dereference panic, but didn't fix the issue that
fails to update attached freplace prog to prog_array map.

Since commit 1c123c567f ("bpf: Resolve fext program type when checking map compatibility"),
freplace prog and its target prog are able to tail call each other.

And the commit 3aac1ead5e ("bpf: Move prog->aux->linked_prog and trampoline into bpf_link on attach")
sets prog->aux->dst_prog as NULL after attaching freplace prog to its
target prog.

After loading freplace the prog_array's owner type is BPF_PROG_TYPE_SCHED_CLS.
Then, after attaching freplace its prog->aux->dst_prog is NULL.
Then, while updating freplace in prog_array the bpf_prog_map_compatible()
incorrectly returns false because resolve_prog_type() returns
BPF_PROG_TYPE_EXT instead of BPF_PROG_TYPE_SCHED_CLS.
After this patch the resolve_prog_type() returns BPF_PROG_TYPE_SCHED_CLS
and update to prog_array can succeed.

Fixes: f7866c3587 ("bpf: Fix null pointer dereference in resolve_prog_type() for BPF_PROG_TYPE_EXT")
Cc: Toke Høiland-Jørgensen <toke@redhat.com>
Cc: Martin KaFai Lau <martin.lau@kernel.org>
Acked-by: Yonghong Song <yonghong.song@linux.dev>
Signed-off-by: Leon Hwang <leon.hwang@linux.dev>
Link: https://lore.kernel.org/r/20240728114612.48486-2-leon.hwang@linux.dev
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2024-08-12 15:25:49 -07:00
..
2024-03-19 16:11:42 +01:00
2024-01-18 15:21:00 -08:00
2024-05-27 13:39:51 +02:00
2024-04-24 11:06:26 -07:00
2024-04-25 20:55:49 -07:00
2023-12-20 19:26:32 -05:00
2024-05-02 20:35:57 +02:00
2024-03-11 15:37:23 -07:00
2024-04-29 16:28:07 -07:00
2024-07-03 19:29:59 -07:00
2024-07-08 01:51:05 -06:00
2023-12-15 16:25:55 -08:00
2024-06-24 18:29:20 +02:00
2024-04-23 09:03:37 +09:00
2024-06-11 12:57:49 -05:00
2024-02-20 14:22:55 -05:00
2024-02-20 14:22:51 -05:00
2024-03-12 23:08:29 -07:00
2024-05-27 11:08:31 +02:00
2024-04-15 16:03:24 -04:00
2024-06-28 10:36:45 +02:00
2024-05-19 14:36:17 -07:00
2024-07-03 19:29:52 -07:00
2024-05-27 16:50:03 +02:00
2024-02-28 19:36:39 -08:00
2024-02-14 11:14:40 +01:00
2023-12-20 19:26:31 -05:00
2023-12-20 19:26:31 -05:00
2024-06-24 22:24:56 -07:00
2024-07-03 19:30:23 -07:00
2024-02-17 16:20:41 +01:00
2024-06-05 19:19:26 -07:00
2023-12-20 19:26:30 -05:00
2024-05-03 10:44:42 +01:00
2024-07-10 12:14:54 -07:00
2024-07-31 09:57:18 -07:00
2024-07-08 13:47:27 -04:00
2024-06-24 22:25:02 -07:00
2024-03-26 11:07:20 -07:00
2024-06-28 09:52:05 +02:00
2023-12-20 19:26:31 -05:00
2024-03-13 12:53:53 -07:00
2024-03-13 12:53:53 -07:00
2023-12-20 19:26:31 -05:00
2023-12-20 19:26:31 -05:00
2023-12-20 19:26:30 -05:00
2024-07-10 17:52:47 +02:00
2023-12-20 19:26:32 -05:00
2024-04-02 18:03:32 -07:00
2023-12-27 11:49:56 -05:00
2023-12-20 19:26:31 -05:00
2024-03-08 12:05:10 +01:00
2024-04-03 09:59:38 +01:00
2023-12-20 19:26:32 -05:00
2023-12-20 19:26:32 -05:00
2023-12-20 19:26:32 -05:00
2024-02-15 12:17:28 -05:00
2024-04-09 10:53:44 +02:00
2024-07-02 18:59:33 -07:00
2024-05-04 18:57:21 +02:00
2024-07-10 07:59:03 +02:00
2024-04-08 11:49:02 +01:00
2023-12-20 19:26:31 -05:00
2023-12-08 12:02:37 +01:00
2024-05-06 12:05:00 +02:00
2023-12-20 19:26:30 -05:00
2024-04-07 02:42:36 -04:00
2024-06-24 18:16:44 +01:00
2024-02-09 12:07:48 +00:00
2024-04-25 20:55:48 -07:00