X-Git-Url: http://git.agner.ch/gitweb/?p=linux-drm-fsl-dcu.git;a=blobdiff_plain;f=net%2Fatm%2Fsvc.c;h=876ec7b47a2f7a8eff8b3882f7e69e9b32cac9ea;hp=08e46052a3e4a896714254fce4a6c46702152d7c;hb=958b7f37ee0fb2846c8d44310a68ae9605614ff9;hpb=5d2a22079c825669d91a3a200332f1053b4b61b0 diff --git a/net/atm/svc.c b/net/atm/svc.c index 08e46052a3e4..876ec7b47a2f 100644 --- a/net/atm/svc.c +++ b/net/atm/svc.c @@ -89,7 +89,7 @@ static int svc_release(struct socket *sock) clear_bit(ATM_VF_READY, &vcc->flags); /* VCC pointer is used as a reference, so we must not free it (thereby subjecting it to re-use) before all pending connections - are closed */ + are closed */ svc_disconnect(vcc); vcc_release(sock); } @@ -144,7 +144,7 @@ static int svc_bind(struct socket *sock,struct sockaddr *sockaddr, error = -EUNATCH; goto out; } - if (!sk->sk_err) + if (!sk->sk_err) set_bit(ATM_VF_BOUND,&vcc->flags); error = -sk->sk_err; out: @@ -229,7 +229,7 @@ static int svc_connect(struct socket *sock,struct sockaddr *sockaddr, * This is tricky: * Kernel ---close--> Demon * Kernel <--close--- Demon - * or + * or * Kernel ---close--> Demon * Kernel <--error--- Demon * or @@ -302,6 +302,7 @@ static int svc_listen(struct socket *sock,int backlog) error = -EINVAL; goto out; } + vcc_insert_socket(sk); set_bit(ATM_VF_WAITING, &vcc->flags); prepare_to_wait(sk->sk_sleep, &wait, TASK_UNINTERRUPTIBLE); sigd_enq(vcc,as_listen,NULL,NULL,&vcc->local); @@ -469,13 +470,13 @@ static int svc_setsockopt(struct socket *sock, int level, int optname, } set_bit(ATM_VF_HASSAP, &vcc->flags); break; - case SO_MULTIPOINT: + case SO_MULTIPOINT: if (level != SOL_ATM || optlen != sizeof(int)) { error = -EINVAL; goto out; } - if (get_user(value, (int __user *) optval)) { - error = -EFAULT; + if (get_user(value, (int __user *) optval)) { + error = -EFAULT; goto out; } if (value == 1) { @@ -485,7 +486,7 @@ static int svc_setsockopt(struct socket *sock, int level, int optname, } else { error = -EINVAL; } - break; + break; default: error = vcc_setsockopt(sock, level, optname, optval, optlen); @@ -538,7 +539,7 @@ static int svc_addparty(struct socket *sock, struct sockaddr *sockaddr, set_bit(ATM_VF_WAITING, &vcc->flags); prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE); sigd_enq(vcc, as_addparty, NULL, NULL, - (struct sockaddr_atmsvc *) sockaddr); + (struct sockaddr_atmsvc *) sockaddr); if (flags & O_NONBLOCK) { finish_wait(sk->sk_sleep, &wait); error = -EINPROGRESS; @@ -586,33 +587,33 @@ out: static int svc_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) { - int error, ep_ref; - struct sockaddr_atmsvc sa; + int error, ep_ref; + struct sockaddr_atmsvc sa; struct atm_vcc *vcc = ATM_SD(sock); - + switch (cmd) { - case ATM_ADDPARTY: - if (!test_bit(ATM_VF_SESSION, &vcc->flags)) - return -EINVAL; - if (copy_from_user(&sa, (void __user *) arg, sizeof(sa))) + case ATM_ADDPARTY: + if (!test_bit(ATM_VF_SESSION, &vcc->flags)) + return -EINVAL; + if (copy_from_user(&sa, (void __user *) arg, sizeof(sa))) return -EFAULT; - error = svc_addparty(sock, (struct sockaddr *) &sa, sizeof(sa), 0); - break; - case ATM_DROPPARTY: - if (!test_bit(ATM_VF_SESSION, &vcc->flags)) - return -EINVAL; - if (copy_from_user(&ep_ref, (void __user *) arg, sizeof(int))) + error = svc_addparty(sock, (struct sockaddr *) &sa, sizeof(sa), 0); + break; + case ATM_DROPPARTY: + if (!test_bit(ATM_VF_SESSION, &vcc->flags)) + return -EINVAL; + if (copy_from_user(&ep_ref, (void __user *) arg, sizeof(int))) return -EFAULT; - error = svc_dropparty(sock, ep_ref); - break; - default: + error = svc_dropparty(sock, ep_ref); + break; + default: error = vcc_ioctl(sock, cmd, arg); } return error; } -static struct proto_ops svc_proto_ops = { +static const struct proto_ops svc_proto_ops = { .family = PF_ATMSVC, .owner = THIS_MODULE,