Skip to content

Commit 7c82ffa

Browse files
Gustavo Padovansfrothwell
Gustavo Padovan
authored andcommitted
drivers/misc/ti-st/st_core.c: fix NULL dereference on protocol type check
If the type we receive is greater than ST_MAX_CHANNELS we can't rely on type as vector index since we would be accessing unknown memory when we use the type as index. Unable to handle kernel NULL pointer dereference at virtual address 0000001b pgd = c0004000 [0000001b] *pgd=00000000 Internal error: Oops: 17 [#1] PREEMPT SMP ARM Modules linked in: btwilink wl12xx wlcore mac80211 cfg80211 rfcomm bnep bluo CPU: 0 Tainted: G W (3.4.0+ #15) PC is at st_int_recv+0x278/0x344 LR is at get_parent_ip+0x14/0x30 pc : [<c03b01a8>] lr : [<c007273c>] psr: 200f0193 sp : dc631ed0 ip : e3e21c24 fp : dc631f04 r10: 00000000 r9 : 600f0113 r8 : 0000003f r7 : e3e21b14 r6 : 00000067 r5 : e2e49c1c r4 : e3e21a80 r3 : 00000001 r2 : 00000001 r1 : 00000001 r0 : 600f0113 Flags: nzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel Control: 10c5387d Table: 9c50004a DAC: 00000015 Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
1 parent b2c96d9 commit 7c82ffa

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/misc/ti-st/st_core.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ void st_int_recv(void *disc_data,
343343
/* Unknow packet? */
344344
default:
345345
type = *ptr;
346-
if (st_gdata->list[type] == NULL) {
346+
if (type >= ST_MAX_CHANNELS || st_gdata->list[type] == NULL) {
347347
pr_err("chip/interface misbehavior dropping"
348348
" frame starting with 0x%02x", type);
349349
goto done;

0 commit comments

Comments
 (0)