FAILED: patch "[PATCH] bpf: Fix possible race in inc_misses_counter" failed to apply to 5.15-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 0e3135d3bfa5dfb658145238d2bc723a8e30c3a3 Mon Sep 17 00:00:00 2001
From: He Fengqing <[email protected]>
Date: Sat, 22 Jan 2022 10:29:36 +0000
Subject: [PATCH] bpf: Fix possible race in inc_misses_counter
It seems inc_misses_counter() suffers from same issue fixed in the commit d979617aa84d ("bpf: Fixes possible race in update_prog_stats() for 32bit arches"):
As it can run while interrupts are enabled, it could
be re-entered and the u64_stats syncp could be mangled.
kernel/bpf/trampoline.c +3 -2
@@ -550,11 +550,12 @@ static __always_inline u64 notrace bpf_prog_start_time(void) static void notrace inc_misses_counter(struct bpf_prog *prog) {struct bpf_prog_stats *stats; +unsigned int flags; stats =this_cpu_ptr (prog->stats); -u64_stats_update_begin (&stats->syncp); + flags =u64_stats_update_begin_irqsave (&stats->syncp);u64_stats_inc (&stats->misses); -u64_stats_update_end (&stats->syncp); +u64_stats_update_end_irqrestore (&stats->syncp, flags); }/* The logic is similar to bpf_prog_run(), but with an explicit