Message ID | 1507169962-6653-2-git-send-email-acelan.kao@canonical.com |
---|---|
State | New |
Headers | show |
Series | r8152: fix the list rx_done may be used without initialization | expand |
Clean cherry-pick and positive test result, therefore:
Acked-by: Po-Hsu Lin <po-hsu.lin@canonical.com>
On 10/05/2017 04:19 AM, AceLan Kao wrote: > From: hayeswang <hayeswang@realtek.com> > > BugLink: http://bugs.launchpad.net/bugs/1720977 > > The list rx_done would be initialized when the linking on occurs. > Therefore, if a napi is scheduled without any linking on before, > the following kernel panic would happen. > > BUG: unable to handle kernel NULL pointer dereference at 000000000000008 > IP: [<ffffffffc085efde>] r8152_poll+0xe1e/0x1210 [r8152] > PGD 0 > Oops: 0002 [#1] SMP > > Signed-off-by: Hayes Wang <hayeswang@realtek.com> > Signed-off-by: David S. Miller <davem@davemloft.net> > (cherry picked from commit 98d068ab52b4b11d403995ed14154660797e7136) > Signed-off-by: AceLan Kao <acelan.kao@canonical.com> Trivial fix, good test results and SRU justification. Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com> > --- > drivers/net/usb/r8152.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c > index a921f86..dadea19 100644 > --- a/drivers/net/usb/r8152.c > +++ b/drivers/net/usb/r8152.c > @@ -1350,6 +1350,7 @@ static int alloc_all_mem(struct r8152 *tp) > spin_lock_init(&tp->rx_lock); > spin_lock_init(&tp->tx_lock); > INIT_LIST_HEAD(&tp->tx_free); > + INIT_LIST_HEAD(&tp->rx_done); > skb_queue_head_init(&tp->tx_queue); > skb_queue_head_init(&tp->rx_queue); > >
Applied to xenial and zesty master-next branches. Thanks. Cascardo. Applied-to: xenial/master-next Applied-to: zesty/master-next
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c index a921f86..dadea19 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -1350,6 +1350,7 @@ static int alloc_all_mem(struct r8152 *tp) spin_lock_init(&tp->rx_lock); spin_lock_init(&tp->tx_lock); INIT_LIST_HEAD(&tp->tx_free); + INIT_LIST_HEAD(&tp->rx_done); skb_queue_head_init(&tp->tx_queue); skb_queue_head_init(&tp->rx_queue);