Commit a761cebf authored by Russell King's avatar Russell King

ARM: Fix build warning in arch/arm/mm/alignment.c

Fix this harmless build warning:

arch/arm/mm/alignment.c: In function 'do_alignment':
arch/arm/mm/alignment.c:749:21: warning: 'offset.un' may be used uninitialized in this function

This is caused by the compiler not being able to properly analyse the
code to prove that offset.un is assigned in every case.  The case it
struggles with is where we assign the handler from the Thumb parser -
do_alignment_t32_to_handler().  As this starts by zeroing this variable
via a pointer, move it into the calling function.  This fixes the
warning.
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent a42c3629
...@@ -699,7 +699,6 @@ do_alignment_t32_to_handler(unsigned long *pinstr, struct pt_regs *regs, ...@@ -699,7 +699,6 @@ do_alignment_t32_to_handler(unsigned long *pinstr, struct pt_regs *regs,
unsigned long instr = *pinstr; unsigned long instr = *pinstr;
u16 tinst1 = (instr >> 16) & 0xffff; u16 tinst1 = (instr >> 16) & 0xffff;
u16 tinst2 = instr & 0xffff; u16 tinst2 = instr & 0xffff;
poffset->un = 0;
switch (tinst1 & 0xffe0) { switch (tinst1 & 0xffe0) {
/* A6.3.5 Load/Store multiple */ /* A6.3.5 Load/Store multiple */
...@@ -854,9 +853,10 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) ...@@ -854,9 +853,10 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
break; break;
case 0x08000000: /* ldm or stm, or thumb-2 32bit instruction */ case 0x08000000: /* ldm or stm, or thumb-2 32bit instruction */
if (thumb2_32b) if (thumb2_32b) {
offset.un = 0;
handler = do_alignment_t32_to_handler(&instr, regs, &offset); handler = do_alignment_t32_to_handler(&instr, regs, &offset);
else } else
handler = do_alignment_ldmstm; handler = do_alignment_ldmstm;
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment