patch "usb: renesas_usbhs: avoid NULL pointer derefernce in" added to usb-linus
Subsystems (2)
This is a note to let you know that I've just added the patch titled
usb: renesas_usbhs: avoid NULL pointer derefernce in
to my usb git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
in the usb-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
Quoted 1 line
From
894f2fc44f2f3f48c36c973b1123f6ab298be160Mon Sep 17 00:00:00 2001
From: Yoshihiro Shimoda <[email protected]>
Date: Thu, 10 Mar 2016 11:30:14 +0900
Subject: usb: renesas_usbhs: avoid NULL pointer derefernce in
usbhsf_pkt_handler()
When unexpected situation happened (e.g. tx/rx irq happened while DMAC is used), the usbhsf_pkt_handler() was possible to cause NULL pointer dereference like the followings:
Unable to handle kernel NULL pointer dereference at virtual address 00000000 pgd = c0004000 [00000000] *pgd=00000000 Internal error: Oops: 80000007 [#1] SMP ARM Modules linked in: usb_f_acm u_serial g_serial libcomposite CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.5.0-rc6-00842-gac57066-dirty #63 Hardware name: Generic R8A7790 (Flattened Device Tree) task: c0729c00 ti: c0724000 task.ti: c0724000 PC is at 0x0 LR is at usbhsf_pkt_handler+0xac/0x118 pc : [<00000000>] lr : [<c03257e0>] psr: 60000193
sp : c0725db8 ip : 00000000 fp : c0725df4
r10: 00000001 r9 : 00000193 r8 : ef3ccab4
r7 : ef3cca10 r6 : eea4586c r5 : 00000000 r4 : ef19ceb4 r3 : 00000000 r2 : 0000009c r1 : c0725dc4 r0 : ef19ceb4
This patch adds a condition to avoid the dereference.
--- drivers/usb/renesas_usbhs/fifo.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/usb/renesas_usbhs/fifo.c +2 -1
@@ -190,7 +190,8 @@ static int usbhsf_pkt_handler(struct usbhs_pipe *pipe, int type) goto __usbhs_pkt_handler_end; } - ret =func (pkt, &is_done); +if (likely (func)) + ret =func (pkt, &is_done);if (is_done)__usbhsf_pkt_del (pkt);
Signature · 1 line
2.8.0