diff mbox

[v3,3/4] arm64: prevent potential circular header dependencies in asm/bug.h

Message ID 1455289046-21321-4-git-send-email-ard.biesheuvel@linaro.org
State Superseded
Headers show

Commit Message

Ard Biesheuvel Feb. 12, 2016, 2:57 p.m. UTC
Currently, using BUG_ON() in header files is cumbersome, due to the fact
that asm/bug.h transitively includes a lot of other header files, resulting
in the actual BUG_ON() invocation appearing before its definition in the
preprocessor input. So let's reverse the #include dependency between
asm/bug.h and asm/debug-monitors.h, by moving the definition of BUG_BRK_IMM
from the latter to the former. Also fix up one user of asm/debug-monitors.h
which relied on a transitive include.

Cc: Dave Martin <Dave.Martin@arm.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

---
 arch/arm64/include/asm/bug.h            | 2 +-
 arch/arm64/include/asm/debug-monitors.h | 2 +-
 arch/arm64/kvm/hyp/debug-sr.c           | 1 +
 3 files changed, 3 insertions(+), 2 deletions(-)

-- 
2.5.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Comments

Will Deacon Feb. 22, 2016, 6 p.m. UTC | #1
On Fri, Feb 12, 2016 at 03:57:25PM +0100, Ard Biesheuvel wrote:
> Currently, using BUG_ON() in header files is cumbersome, due to the fact

> that asm/bug.h transitively includes a lot of other header files, resulting

> in the actual BUG_ON() invocation appearing before its definition in the

> preprocessor input. So let's reverse the #include dependency between

> asm/bug.h and asm/debug-monitors.h, by moving the definition of BUG_BRK_IMM

> from the latter to the former. Also fix up one user of asm/debug-monitors.h

> which relied on a transitive include.

> 

> Cc: Dave Martin <Dave.Martin@arm.com>

> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

> ---

>  arch/arm64/include/asm/bug.h            | 2 +-

>  arch/arm64/include/asm/debug-monitors.h | 2 +-

>  arch/arm64/kvm/hyp/debug-sr.c           | 1 +

>  3 files changed, 3 insertions(+), 2 deletions(-)

> 

> diff --git a/arch/arm64/include/asm/bug.h b/arch/arm64/include/asm/bug.h

> index 4a748ce9ba1a..679d49221998 100644

> --- a/arch/arm64/include/asm/bug.h

> +++ b/arch/arm64/include/asm/bug.h

> @@ -18,7 +18,7 @@

>  #ifndef _ARCH_ARM64_ASM_BUG_H

>  #define _ARCH_ARM64_ASM_BUG_H

>  

> -#include <asm/debug-monitors.h>

> +#define BUG_BRK_IMM			0x800


I'd really like to keep all the BRK immediates together, otherwise it's
error-prone if/when we allocate new encodings. Maybe we could add a new
header file for them, if we really need to?

Alternatively, given that this is all behind DEBUG_VM, you could rewrite
the check as if (unlikely(...)) panic(...);

Will

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
diff mbox

Patch

diff --git a/arch/arm64/include/asm/bug.h b/arch/arm64/include/asm/bug.h
index 4a748ce9ba1a..679d49221998 100644
--- a/arch/arm64/include/asm/bug.h
+++ b/arch/arm64/include/asm/bug.h
@@ -18,7 +18,7 @@ 
 #ifndef _ARCH_ARM64_ASM_BUG_H
 #define _ARCH_ARM64_ASM_BUG_H
 
-#include <asm/debug-monitors.h>
+#define BUG_BRK_IMM			0x800
 
 #ifdef CONFIG_GENERIC_BUG
 #define HAVE_ARCH_BUG
diff --git a/arch/arm64/include/asm/debug-monitors.h b/arch/arm64/include/asm/debug-monitors.h
index 279c85b5ec09..e893a1fca9c2 100644
--- a/arch/arm64/include/asm/debug-monitors.h
+++ b/arch/arm64/include/asm/debug-monitors.h
@@ -20,6 +20,7 @@ 
 
 #include <linux/errno.h>
 #include <linux/types.h>
+#include <asm/bug.h>
 #include <asm/esr.h>
 #include <asm/insn.h>
 #include <asm/ptrace.h>
@@ -57,7 +58,6 @@ 
 #define FAULT_BRK_IMM			0x100
 #define KGDB_DYN_DBG_BRK_IMM		0x400
 #define KGDB_COMPILED_DBG_BRK_IMM	0x401
-#define BUG_BRK_IMM			0x800
 
 /*
  * BRK instruction encoding
diff --git a/arch/arm64/kvm/hyp/debug-sr.c b/arch/arm64/kvm/hyp/debug-sr.c
index c9c1e97501a9..2f8bca8af295 100644
--- a/arch/arm64/kvm/hyp/debug-sr.c
+++ b/arch/arm64/kvm/hyp/debug-sr.c
@@ -18,6 +18,7 @@ 
 #include <linux/compiler.h>
 #include <linux/kvm_host.h>
 
+#include <asm/debug-monitors.h>
 #include <asm/kvm_asm.h>
 #include <asm/kvm_mmu.h>