summaryrefslogtreecommitdiff
path: root/arch/tile
diff options
context:
space:
mode:
authorColin Ian King <colin.king@canonical.com>2015-03-16 20:14:02 (GMT)
committerChris Metcalf <cmetcalf@ezchip.com>2015-04-17 16:58:41 (GMT)
commit9088616fb3c4e0d3ec4efb20378691066a218f9c (patch)
treee3b283916b166433376f50ade347470b3cdfa4c9 /arch/tile
parent5a3b4e8000c1ce476f5e8babd62c580457561f34 (diff)
downloadlinux-9088616fb3c4e0d3ec4efb20378691066a218f9c.tar.xz
arch: tile: fix null pointer dereference on pt_regs pointer
Cppcheck reports the following issue: [arch/tile/kernel/stack.c:116]: (error) Possible null pointer dereference: p In this case, on reporting on an odd fault, p is set to NULL and immediately afterwords p is dereferenced iff !kbt->profile is false. Rather than doing this check just return NULL rather than falling through to the potential null pointer dereference (since the original intentional outcome would be to return NULL anyhow) for this odd fault case. Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com> [tweaked lightly]
Diffstat (limited to 'arch/tile')
-rw-r--r--arch/tile/kernel/stack.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/arch/tile/kernel/stack.c b/arch/tile/kernel/stack.c
index 7ff5afd..c42dce5 100644
--- a/arch/tile/kernel/stack.c
+++ b/arch/tile/kernel/stack.c
@@ -108,14 +108,15 @@ static struct pt_regs *valid_fault_handler(struct KBacktraceIterator* kbt)
p->sp < PAGE_OFFSET && p->sp != 0) {
if (kbt->verbose)
pr_err(" <%s while in user mode>\n", fault);
- } else if (kbt->verbose) {
- pr_err(" (odd fault: pc %#lx, sp %#lx, ex1 %#lx?)\n",
- p->pc, p->sp, p->ex1);
- p = NULL;
+ } else {
+ if (kbt->verbose)
+ pr_err(" (odd fault: pc %#lx, sp %#lx, ex1 %#lx?)\n",
+ p->pc, p->sp, p->ex1);
+ return NULL;
}
- if (!kbt->profile || ((1ULL << p->faultnum) & QUEUED_INTERRUPTS) == 0)
- return p;
- return NULL;
+ if (kbt->profile && ((1ULL << p->faultnum) & QUEUED_INTERRUPTS) != 0)
+ return NULL;
+ return p;
}
/* Is the pc pointing to a sigreturn trampoline? */