Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mm: mmap_lock: fix disabling preemption directly

Commit 832b50725373 ("mm: mmap_lock: use local locks instead of
disabling preemption") fixed a bug by using local locks.

But commit d01079f3d0c0 ("mm/mmap_lock: remove dead code for
!CONFIG_TRACING configurations") changed those lines back to the
original version.

I guess it was introduced by fixing conflicts.

Link: https://lkml.kernel.org/r/20210720074228.76342-1-songmuchun@bytedance.com
Fixes: d01079f3d0c0 ("mm/mmap_lock: remove dead code for !CONFIG_TRACING configurations")
Signed-off-by: Muchun Song <songmuchun@bytedance.com>
Acked-by: Mel Gorman <mgorman@techsingularity.net>
Reviewed-by: Yang Shi <shy828301@gmail.com>
Reviewed-by: Pankaj Gupta <pankaj.gupta@ionos.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Muchun Song and committed by
Linus Torvalds
e904c2cc af642374

+2 -2
+2 -2
mm/mmap_lock.c
··· 156 156 #define TRACE_MMAP_LOCK_EVENT(type, mm, ...) \ 157 157 do { \ 158 158 const char *memcg_path; \ 159 - preempt_disable(); \ 159 + local_lock(&memcg_paths.lock); \ 160 160 memcg_path = get_mm_memcg_path(mm); \ 161 161 trace_mmap_lock_##type(mm, \ 162 162 memcg_path != NULL ? memcg_path : "", \ 163 163 ##__VA_ARGS__); \ 164 164 if (likely(memcg_path != NULL)) \ 165 165 put_memcg_path_buf(); \ 166 - preempt_enable(); \ 166 + local_unlock(&memcg_paths.lock); \ 167 167 } while (0) 168 168 169 169 #else /* !CONFIG_MEMCG */