summaryrefslogtreecommitdiffstats
path: root/net/atm/pppoatm.c
diff options
context:
space:
mode:
authorKrzysztof Mazur <krzysiek@podlesie.net>2012-11-06 23:16:58 +0100
committerDavid Woodhouse <David.Woodhouse@intel.com>2012-11-28 01:37:02 +0100
commit3b1a914595f3f9beb9e38ff3ddc7bdafa092ba22 (patch)
tree03acc4ae1063017d6986d149cd4ffe5140f3e63c /net/atm/pppoatm.c
parentatm: add owner of push() callback to atmvcc (diff)
downloadlinux-3b1a914595f3f9beb9e38ff3ddc7bdafa092ba22.tar.xz
linux-3b1a914595f3f9beb9e38ff3ddc7bdafa092ba22.zip
pppoatm: allow assign only on a connected socket
The pppoatm does not check if used vcc is in connected state, causing an Oops in pppoatm_send() when vcc->send() is called on not fully connected socket. Now pppoatm can be assigned only on connected sockets; otherwise -EINVAL error is returned. Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net> Cc: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'net/atm/pppoatm.c')
-rw-r--r--net/atm/pppoatm.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/atm/pppoatm.c b/net/atm/pppoatm.c
index 226dca989448..f27a07a3c546 100644
--- a/net/atm/pppoatm.c
+++ b/net/atm/pppoatm.c
@@ -406,6 +406,8 @@ static int pppoatm_ioctl(struct socket *sock, unsigned int cmd,
return -ENOIOCTLCMD;
if (!capable(CAP_NET_ADMIN))
return -EPERM;
+ if (sock->state != SS_CONNECTED)
+ return -EINVAL;
return pppoatm_assign_vcc(atmvcc, argp);
}
case PPPIOCGCHAN: