BugLink: https://bugs.launchpad.net/bugs/2051644
[ Upstream commit 24e90b9e34f9e039f56b5f25f6e6eb92cdd8f4b3 ]
Because do_vcc_ioctl() accesses sk->sk_receive_queue
without holding a sk->sk_receive_queue.lock, it can
cause a race with vcc_recvmsg().
A use-after-free for skb occurs with the following flow.
```
do_vcc_ioctl() -> skb_peek()
vcc_recvmsg() -> skb_recv_datagram() -> skb_free_datagram()
```
Add sk->sk_receive_queue.lock to do_vcc_ioctl() to fix this issue.
Fixes:
|
||
|---|---|---|
| .. | ||
| Kconfig | ||
| Makefile | ||
| addr.c | ||
| addr.h | ||
| atm_misc.c | ||
| atm_sysfs.c | ||
| br2684.c | ||
| clip.c | ||
| common.c | ||
| common.h | ||
| ioctl.c | ||
| lec.c | ||
| lec.h | ||
| lec_arpc.h | ||
| mpc.c | ||
| mpc.h | ||
| mpoa_caches.c | ||
| mpoa_caches.h | ||
| mpoa_proc.c | ||
| pppoatm.c | ||
| proc.c | ||
| protocols.h | ||
| pvc.c | ||
| raw.c | ||
| resources.c | ||
| resources.h | ||
| signaling.c | ||
| signaling.h | ||
| svc.c | ||