Skip to content

Commit 21d0798

Browse files
Zhen LeiRussell King (Oracle)
authored andcommitted
ARM: 9276/1: Refactor dump_instr()
1. Rename local variable 'val16' to 'tmp'. So that the processing statements of thumb and arm can be aligned. 2. Fix two sparse check warnings: (add __user for type conversion) warning: incorrect type in initializer (different address spaces) expected unsigned short [noderef] __user *register __p got unsigned short [usertype] * 3. Prepare for the next patch to avoid repeated judgment. Before: if (!user_mode(regs)) { if (thumb) else } else { if (thumb) else } After: if (thumb) { if (user_mode(regs)) else } else { if (user_mode(regs)) else } Signed-off-by: Zhen Lei <[email protected]> Signed-off-by: Russell King (Oracle) <[email protected]>
1 parent 59e2cf8 commit 21d0798

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

arch/arm/kernel/traps.c

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -178,19 +178,20 @@ static void dump_instr(const char *lvl, struct pt_regs *regs)
178178
for (i = -4; i < 1 + !!thumb; i++) {
179179
unsigned int val, bad;
180180

181-
if (!user_mode(regs)) {
182-
if (thumb) {
183-
u16 val16;
184-
bad = get_kernel_nofault(val16, &((u16 *)addr)[i]);
185-
val = val16;
186-
} else {
187-
bad = get_kernel_nofault(val, &((u32 *)addr)[i]);
188-
}
181+
if (thumb) {
182+
u16 tmp;
183+
184+
if (user_mode(regs))
185+
bad = get_user(tmp, &((u16 __user *)addr)[i]);
186+
else
187+
bad = get_kernel_nofault(tmp, &((u16 *)addr)[i]);
188+
189+
val = tmp;
189190
} else {
190-
if (thumb)
191-
bad = get_user(val, &((u16 *)addr)[i]);
191+
if (user_mode(regs))
192+
bad = get_user(val, &((u32 __user *)addr)[i]);
192193
else
193-
bad = get_user(val, &((u32 *)addr)[i]);
194+
bad = get_kernel_nofault(val, &((u32 *)addr)[i]);
194195
}
195196

196197
if (!bad)

0 commit comments

Comments
 (0)