From: broonie@kernel.org (Mark Brown)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] arm64: insn: Add return statements after BUG_ON()
Date: Tue, 16 Sep 2014 09:42:33 -0700 [thread overview]
Message-ID: <1410885753-25025-1-git-send-email-broonie@kernel.org> (raw)
Following a recent series of enhancements to the insn code the ARMv8
allnoconfig build has been generating a large number of warnings in the
form of:
arch/arm64/kernel/insn.c:689:8: warning: 'insn' may be used uninitialized in this function [-Wmaybe-uninitialized]
This is because BUG() and related macros can be compiled out so we get
execution paths which normally result in a panic compiling out to noops
instead.
I wasn't able to immediately identify a sensible return value to use in
these cases so just return 0 - this is all "should never happen" code so
hopefully it never has a practical impact.
Signed-off-by: Mark Brown <broonie@kernel.org>
---
arch/arm64/kernel/insn.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/arch/arm64/kernel/insn.c b/arch/arm64/kernel/insn.c
index 0668ee5..7af35f3 100644
--- a/arch/arm64/kernel/insn.c
+++ b/arch/arm64/kernel/insn.c
@@ -388,6 +388,7 @@ u32 __kprobes aarch64_insn_gen_branch_imm(unsigned long pc, unsigned long addr,
break;
default:
BUG_ON(1);
+ return 0;
}
return aarch64_insn_encode_immediate(AARCH64_INSN_IMM_26, insn,
@@ -413,6 +414,7 @@ u32 aarch64_insn_gen_comp_branch_imm(unsigned long pc, unsigned long addr,
break;
default:
BUG_ON(1);
+ return 0;
}
switch (variant) {
@@ -423,6 +425,7 @@ u32 aarch64_insn_gen_comp_branch_imm(unsigned long pc, unsigned long addr,
break;
default:
BUG_ON(1);
+ return 0;
}
insn = aarch64_insn_encode_register(AARCH64_INSN_REGTYPE_RT, insn, reg);
@@ -475,6 +478,7 @@ u32 aarch64_insn_gen_branch_reg(enum aarch64_insn_register reg,
break;
default:
BUG_ON(1);
+ return 0;
}
return aarch64_insn_encode_register(AARCH64_INSN_REGTYPE_RN, insn, reg);
@@ -497,6 +501,7 @@ u32 aarch64_insn_gen_load_store_reg(enum aarch64_insn_register reg,
break;
default:
BUG_ON(1);
+ return 0;
}
insn = aarch64_insn_encode_ldst_size(size, insn);
@@ -535,6 +540,7 @@ u32 aarch64_insn_gen_load_store_pair(enum aarch64_insn_register reg1,
break;
default:
BUG_ON(1);
+ return 0;
}
switch (variant) {
@@ -553,6 +559,7 @@ u32 aarch64_insn_gen_load_store_pair(enum aarch64_insn_register reg1,
break;
default:
BUG_ON(1);
+ return 0;
}
insn = aarch64_insn_encode_register(AARCH64_INSN_REGTYPE_RT, insn,
@@ -590,6 +597,7 @@ u32 aarch64_insn_gen_add_sub_imm(enum aarch64_insn_register dst,
break;
default:
BUG_ON(1);
+ return 0;
}
switch (variant) {
@@ -600,6 +608,7 @@ u32 aarch64_insn_gen_add_sub_imm(enum aarch64_insn_register dst,
break;
default:
BUG_ON(1);
+ return 0;
}
BUG_ON(imm & ~(SZ_4K - 1));
@@ -632,6 +641,7 @@ u32 aarch64_insn_gen_bitfield(enum aarch64_insn_register dst,
break;
default:
BUG_ON(1);
+ return 0;
}
switch (variant) {
@@ -644,6 +654,7 @@ u32 aarch64_insn_gen_bitfield(enum aarch64_insn_register dst,
break;
default:
BUG_ON(1);
+ return 0;
}
BUG_ON(immr & ~mask);
@@ -677,6 +688,7 @@ u32 aarch64_insn_gen_movewide(enum aarch64_insn_register dst,
break;
default:
BUG_ON(1);
+ return 0;
}
BUG_ON(imm & ~(SZ_64K - 1));
@@ -692,6 +704,7 @@ u32 aarch64_insn_gen_movewide(enum aarch64_insn_register dst,
break;
default:
BUG_ON(1);
+ return 0;
}
insn |= (shift >> 4) << 21;
@@ -725,6 +738,7 @@ u32 aarch64_insn_gen_add_sub_shifted_reg(enum aarch64_insn_register dst,
break;
default:
BUG_ON(1);
+ return 0;
}
switch (variant) {
@@ -737,6 +751,7 @@ u32 aarch64_insn_gen_add_sub_shifted_reg(enum aarch64_insn_register dst,
break;
default:
BUG_ON(1);
+ return 0;
}
@@ -769,6 +784,7 @@ u32 aarch64_insn_gen_data1(enum aarch64_insn_register dst,
break;
default:
BUG_ON(1);
+ return 0;
}
switch (variant) {
@@ -779,6 +795,7 @@ u32 aarch64_insn_gen_data1(enum aarch64_insn_register dst,
break;
default:
BUG_ON(1);
+ return 0;
}
insn = aarch64_insn_encode_register(AARCH64_INSN_REGTYPE_RD, insn, dst);
@@ -815,6 +832,7 @@ u32 aarch64_insn_gen_data2(enum aarch64_insn_register dst,
break;
default:
BUG_ON(1);
+ return 0;
}
switch (variant) {
@@ -825,6 +843,7 @@ u32 aarch64_insn_gen_data2(enum aarch64_insn_register dst,
break;
default:
BUG_ON(1);
+ return 0;
}
insn = aarch64_insn_encode_register(AARCH64_INSN_REGTYPE_RD, insn, dst);
@@ -852,6 +871,7 @@ u32 aarch64_insn_gen_data3(enum aarch64_insn_register dst,
break;
default:
BUG_ON(1);
+ return 0;
}
switch (variant) {
@@ -862,6 +882,7 @@ u32 aarch64_insn_gen_data3(enum aarch64_insn_register dst,
break;
default:
BUG_ON(1);
+ return 0;
}
insn = aarch64_insn_encode_register(AARCH64_INSN_REGTYPE_RD, insn, dst);
@@ -911,6 +932,7 @@ u32 aarch64_insn_gen_logical_shifted_reg(enum aarch64_insn_register dst,
break;
default:
BUG_ON(1);
+ return 0;
}
switch (variant) {
@@ -923,6 +945,7 @@ u32 aarch64_insn_gen_logical_shifted_reg(enum aarch64_insn_register dst,
break;
default:
BUG_ON(1);
+ return 0;
}
--
2.1.0
next reply other threads:[~2014-09-16 16:42 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-16 16:42 Mark Brown [this message]
2014-09-16 16:49 ` [PATCH] arm64: insn: Add return statements after BUG_ON() Will Deacon
2014-09-19 10:58 ` Catalin Marinas
2014-09-18 17:02 ` Catalin Marinas
2014-09-18 17:21 ` Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1410885753-25025-1-git-send-email-broonie@kernel.org \
--to=broonie@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox