Commit d523dc7b authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux

Pull arm64 fix from Catalin Marinas:
 "Fix uninitialised variable warning (from smatch) in the arm64 compat
  alignment fixup code"

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
  arm64: compat: Work around uninitialized variable warning
parents a1e6fff3 32d85999
...@@ -314,36 +314,32 @@ int do_compat_alignment_fixup(unsigned long addr, struct pt_regs *regs) ...@@ -314,36 +314,32 @@ int do_compat_alignment_fixup(unsigned long addr, struct pt_regs *regs)
int (*handler)(unsigned long addr, u32 instr, struct pt_regs *regs); int (*handler)(unsigned long addr, u32 instr, struct pt_regs *regs);
unsigned int type; unsigned int type;
u32 instr = 0; u32 instr = 0;
u16 tinstr = 0;
int isize = 4; int isize = 4;
int thumb2_32b = 0; int thumb2_32b = 0;
int fault;
instrptr = instruction_pointer(regs); instrptr = instruction_pointer(regs);
if (compat_thumb_mode(regs)) { if (compat_thumb_mode(regs)) {
__le16 __user *ptr = (__le16 __user *)(instrptr & ~1); __le16 __user *ptr = (__le16 __user *)(instrptr & ~1);
u16 tinstr, tinst2;
fault = alignment_get_thumb(regs, ptr, &tinstr); if (alignment_get_thumb(regs, ptr, &tinstr))
if (!fault) { return 1;
if (IS_T32(tinstr)) {
/* Thumb-2 32-bit */ if (IS_T32(tinstr)) { /* Thumb-2 32-bit */
u16 tinst2; if (alignment_get_thumb(regs, ptr + 1, &tinst2))
fault = alignment_get_thumb(regs, ptr + 1, &tinst2); return 1;
instr = ((u32)tinstr << 16) | tinst2; instr = ((u32)tinstr << 16) | tinst2;
thumb2_32b = 1; thumb2_32b = 1;
} else { } else {
isize = 2; isize = 2;
instr = thumb2arm(tinstr); instr = thumb2arm(tinstr);
}
} }
} else { } else {
fault = alignment_get_arm(regs, (__le32 __user *)instrptr, &instr); if (alignment_get_arm(regs, (__le32 __user *)instrptr, &instr))
return 1;
} }
if (fault)
return 1;
switch (CODING_BITS(instr)) { switch (CODING_BITS(instr)) {
case 0x00000000: /* 3.13.4 load/store instruction extensions */ case 0x00000000: /* 3.13.4 load/store instruction extensions */
if (LDSTHD_I_BIT(instr)) if (LDSTHD_I_BIT(instr))
......
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