The mutex mm->context->lock for init_mm is not initialized for init_mm.
This wasn't a problem because it remained unused. This changed however
since commit
4fc19708b165c ("x86/alternatives: Initialize temporary mm for patching")
Initialize the mutex for init_mm.
Fixes: 4fc19708b165c ("x86/alternatives: Initialize temporary mm for patching")
Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
---
The rwsem `ldt_usr_sem' is also not initialized for init_mm. No idea if
we want this.
arch/x86/include/asm/mmu.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/x86/include/asm/mmu.h b/arch/x86/include/asm/mmu.h
index 5ff3e8af2c205..e78c7db878018 100644
--- a/arch/x86/include/asm/mmu.h
+++ b/arch/x86/include/asm/mmu.h
@@ -59,6 +59,7 @@ typedef struct {
#define INIT_MM_CONTEXT(mm) \
.context = { \
.ctx_id = 1, \
+ .lock = __MUTEX_INITIALIZER(mm.context.lock), \
}
void leave_mm(int cpu);
--
2.20.1
> On Jul 1, 2019, at 10:33 AM, Sebastian Andrzej Siewior <[email protected]> wrote:
>
> The mutex mm->context->lock for init_mm is not initialized for init_mm.
> This wasn't a problem because it remained unused. This changed however
> since commit
> 4fc19708b165c ("x86/alternatives: Initialize temporary mm for patching")
>
> Initialize the mutex for init_mm.
>
> Fixes: 4fc19708b165c ("x86/alternatives: Initialize temporary mm for patching")
> Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
> ---
>
> The rwsem `ldt_usr_sem' is also not initialized for init_mm. No idea if
> we want this.
I cannot see why not (but it would need to depend on CONFIG_MODIFY_LDT_SYSCALL)
>
> arch/x86/include/asm/mmu.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/x86/include/asm/mmu.h b/arch/x86/include/asm/mmu.h
> index 5ff3e8af2c205..e78c7db878018 100644
> --- a/arch/x86/include/asm/mmu.h
> +++ b/arch/x86/include/asm/mmu.h
> @@ -59,6 +59,7 @@ typedef struct {
> #define INIT_MM_CONTEXT(mm) \
> .context = { \
> .ctx_id = 1, \
> + .lock = __MUTEX_INITIALIZER(mm.context.lock), \
Sorry for my mistake. Thanks for fixing it up. I find it useful to know how
the problem was found or what the impact was - helps me sometimes to avoid
causing similar bugs in the future.
Reviewed-by: Nadav Amit <[email protected]>
Commit-ID: 32232b350d7cd93cdc65fe5a453e6a40b539e9f9
Gitweb: https://git.kernel.org/tip/32232b350d7cd93cdc65fe5a453e6a40b539e9f9
Author: Sebastian Andrzej Siewior <[email protected]>
AuthorDate: Mon, 1 Jul 2019 19:33:54 +0200
Committer: Thomas Gleixner <[email protected]>
CommitDate: Wed, 3 Jul 2019 10:25:04 +0200
x86/ldt: Initialize the context lock for init_mm
The mutex mm->context->lock for init_mm is not initialized for init_mm.
This wasn't a problem because it remained unused. This changed however
since commit
4fc19708b165c ("x86/alternatives: Initialize temporary mm for patching")
Initialize the mutex for init_mm.
Fixes: 4fc19708b165c ("x86/alternatives: Initialize temporary mm for patching")
Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Reviewed-by: Nadav Amit <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Andy Lutomirski <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
---
arch/x86/include/asm/mmu.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/x86/include/asm/mmu.h b/arch/x86/include/asm/mmu.h
index 5ff3e8af2c20..e78c7db87801 100644
--- a/arch/x86/include/asm/mmu.h
+++ b/arch/x86/include/asm/mmu.h
@@ -59,6 +59,7 @@ typedef struct {
#define INIT_MM_CONTEXT(mm) \
.context = { \
.ctx_id = 1, \
+ .lock = __MUTEX_INITIALIZER(mm.context.lock), \
}
void leave_mm(int cpu);
Commit-ID: 39ca5fb4920a96eeab478be2cfa6a2369fef6b02
Gitweb: https://git.kernel.org/tip/39ca5fb4920a96eeab478be2cfa6a2369fef6b02
Author: Sebastian Andrzej Siewior <[email protected]>
AuthorDate: Mon, 1 Jul 2019 19:33:54 +0200
Committer: Ingo Molnar <[email protected]>
CommitDate: Tue, 9 Jul 2019 13:57:27 +0200
x86/ldt: Initialize the context lock for init_mm
The mutex mm->context->lock for init_mm is not initialized for init_mm.
This wasn't a problem because it remained unused. This changed however
since commit
4fc19708b165c ("x86/alternatives: Initialize temporary mm for patching")
Initialize the mutex for init_mm.
Fixes: 4fc19708b165c ("x86/alternatives: Initialize temporary mm for patching")
Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Reviewed-by: Nadav Amit <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Andy Lutomirski <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
---
arch/x86/include/asm/mmu.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/x86/include/asm/mmu.h b/arch/x86/include/asm/mmu.h
index 5ff3e8af2c20..e78c7db87801 100644
--- a/arch/x86/include/asm/mmu.h
+++ b/arch/x86/include/asm/mmu.h
@@ -59,6 +59,7 @@ typedef struct {
#define INIT_MM_CONTEXT(mm) \
.context = { \
.ctx_id = 1, \
+ .lock = __MUTEX_INITIALIZER(mm.context.lock), \
}
void leave_mm(int cpu);