summaryrefslogtreecommitdiff
path: root/drivers/net/usb/cdc_ncm.c
diff options
context:
space:
mode:
authorJason Wang <jasowang@redhat.com>2016-05-19 05:36:51 (GMT)
committerDavid S. Miller <davem@davemloft.net>2016-05-20 23:28:37 (GMT)
commitaddf8fc4acb1cf79492ac64966f07178793cb3d7 (patch)
treec0e712a1e95d2413004aeffd14ac45627b287c92 /drivers/net/usb/cdc_ncm.c
parent7fd3c56d60e9919be6b1ef70524eeb28f140653b (diff)
downloadlinux-addf8fc4acb1cf79492ac64966f07178793cb3d7.tar.xz
tuntap: correctly wake up process during uninit
We used to check dev->reg_state against NETREG_REGISTERED after each time we are woke up. But after commit 9e641bdcfa4e ("net-tun: restructure tun_do_read for better sleep/wakeup efficiency"), it uses skb_recv_datagram() which does not check dev->reg_state. This will result if we delete a tun/tap device after a process is blocked in the reading. The device will wait for the reference count which was held by that process for ever. Fixes this by using RCV_SHUTDOWN which will be checked during sk_recv_datagram() before trying to wake up the process during uninit. Fixes: 9e641bdcfa4e ("net-tun: restructure tun_do_read for better sleep/wakeup efficiency") Cc: Eric Dumazet <edumazet@google.com> Cc: Xi Wang <xii@google.com> Cc: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Jason Wang <jasowang@redhat.com> Acked-by: Eric Dumazet <edumazet@google.com> Acked-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/usb/cdc_ncm.c')
0 files changed, 0 insertions, 0 deletions