2021-07-20 07:45:46

by Muchun Song

[permalink] [raw]
Subject: [PATCH] mm: mmap_lock: fix disabling preemption directly

The commit 832b50725373 ("mm: mmap_lock: use local locks instead of
disabling preemption") fix a bug by using local locks. But commit
d01079f3d0c0 ("mm/mmap_lock: remove dead code for !CONFIG_TRACING
configurations") changes those lines to original version. I guess
it is introduced by the conflicts fixing on merging.

Fixes: d01079f3d0c0 ("mm/mmap_lock: remove dead code for !CONFIG_TRACING configurations")
Signed-off-by: Muchun Song <[email protected]>
---
mm/mmap_lock.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c
index f5852a058ce0..1854850b4b89 100644
--- a/mm/mmap_lock.c
+++ b/mm/mmap_lock.c
@@ -156,14 +156,14 @@ static inline void put_memcg_path_buf(void)
#define TRACE_MMAP_LOCK_EVENT(type, mm, ...) \
do { \
const char *memcg_path; \
- preempt_disable(); \
+ local_lock(&memcg_paths.lock); \
memcg_path = get_mm_memcg_path(mm); \
trace_mmap_lock_##type(mm, \
memcg_path != NULL ? memcg_path : "", \
##__VA_ARGS__); \
if (likely(memcg_path != NULL)) \
put_memcg_path_buf(); \
- preempt_enable(); \
+ local_unlock(&memcg_paths.lock); \
} while (0)

#else /* !CONFIG_MEMCG */
--
2.11.0


2021-07-20 09:42:38

by Mel Gorman

[permalink] [raw]
Subject: Re: [PATCH] mm: mmap_lock: fix disabling preemption directly

On Tue, Jul 20, 2021 at 03:42:28PM +0800, Muchun Song wrote:
> The commit 832b50725373 ("mm: mmap_lock: use local locks instead of
> disabling preemption") fix a bug by using local locks. But commit
> d01079f3d0c0 ("mm/mmap_lock: remove dead code for !CONFIG_TRACING
> configurations") changes those lines to original version. I guess
> it is introduced by the conflicts fixing on merging.
>
> Fixes: d01079f3d0c0 ("mm/mmap_lock: remove dead code for !CONFIG_TRACING configurations")
> Signed-off-by: Muchun Song <[email protected]>

Acked-by: Mel Gorman <[email protected]>

--
Mel Gorman
SUSE Labs

2021-07-20 21:01:18

by Yang Shi

[permalink] [raw]
Subject: Re: [PATCH] mm: mmap_lock: fix disabling preemption directly

On Tue, Jul 20, 2021 at 12:43 AM Muchun Song <[email protected]> wrote:
>
> The commit 832b50725373 ("mm: mmap_lock: use local locks instead of
> disabling preemption") fix a bug by using local locks. But commit
> d01079f3d0c0 ("mm/mmap_lock: remove dead code for !CONFIG_TRACING
> configurations") changes those lines to original version. I guess
> it is introduced by the conflicts fixing on merging.
>
> Fixes: d01079f3d0c0 ("mm/mmap_lock: remove dead code for !CONFIG_TRACING configurations")
> Signed-off-by: Muchun Song <[email protected]>

Reviewed-by: Yang Shi <[email protected]>

> ---
> mm/mmap_lock.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c
> index f5852a058ce0..1854850b4b89 100644
> --- a/mm/mmap_lock.c
> +++ b/mm/mmap_lock.c
> @@ -156,14 +156,14 @@ static inline void put_memcg_path_buf(void)
> #define TRACE_MMAP_LOCK_EVENT(type, mm, ...) \
> do { \
> const char *memcg_path; \
> - preempt_disable(); \
> + local_lock(&memcg_paths.lock); \
> memcg_path = get_mm_memcg_path(mm); \
> trace_mmap_lock_##type(mm, \
> memcg_path != NULL ? memcg_path : "", \
> ##__VA_ARGS__); \
> if (likely(memcg_path != NULL)) \
> put_memcg_path_buf(); \
> - preempt_enable(); \
> + local_unlock(&memcg_paths.lock); \
> } while (0)
>
> #else /* !CONFIG_MEMCG */
> --
> 2.11.0
>

2021-07-20 21:58:27

by Pankaj Gupta

[permalink] [raw]
Subject: Re: [PATCH] mm: mmap_lock: fix disabling preemption directly

> The commit 832b50725373 ("mm: mmap_lock: use local locks instead of
> disabling preemption") fix a bug by using local locks. But commit
> d01079f3d0c0 ("mm/mmap_lock: remove dead code for !CONFIG_TRACING
> configurations") changes those lines to original version. I guess
> it is introduced by the conflicts fixing on merging.
>
> Fixes: d01079f3d0c0 ("mm/mmap_lock: remove dead code for !CONFIG_TRACING configurations")
> Signed-off-by: Muchun Song <[email protected]>
> ---
> mm/mmap_lock.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c
> index f5852a058ce0..1854850b4b89 100644
> --- a/mm/mmap_lock.c
> +++ b/mm/mmap_lock.c
> @@ -156,14 +156,14 @@ static inline void put_memcg_path_buf(void)
> #define TRACE_MMAP_LOCK_EVENT(type, mm, ...) \
> do { \
> const char *memcg_path; \
> - preempt_disable(); \
> + local_lock(&memcg_paths.lock); \
> memcg_path = get_mm_memcg_path(mm); \
> trace_mmap_lock_##type(mm, \
> memcg_path != NULL ? memcg_path : "", \
> ##__VA_ARGS__); \
> if (likely(memcg_path != NULL)) \
> put_memcg_path_buf(); \
> - preempt_enable(); \
> + local_unlock(&memcg_paths.lock); \
> } while (0)
>
> #else /* !CONFIG_MEMCG */

Reviewed-by: Pankaj Gupta <[email protected]>