X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Fdecnet%2Faf_decnet.c;h=056bac657275f87d7a1ae0ecc120e228d80eb589;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=c08a80fd380db6fdf1ab660799d828d842778b6c;hpb=9213980e6a70d8473e0ffd4b39ab5b6caaba9ff5;p=linux-2.6.git diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c index c08a80fd3..056bac657 100644 --- a/net/decnet/af_decnet.c +++ b/net/decnet/af_decnet.c @@ -151,7 +151,7 @@ static void dn_keepalive(struct sock *sk); static kmem_cache_t *dn_sk_cachep; static struct proto_ops dn_proto_ops; -static rwlock_t dn_hash_lock = RW_LOCK_UNLOCKED; +static DEFINE_RWLOCK(dn_hash_lock); static struct hlist_head dn_sk_hash[DN_SK_HASH_SIZE]; static struct hlist_head dn_wild_sk; @@ -246,7 +246,7 @@ static void dn_unhash_sock_bh(struct sock *sk) write_unlock_bh(&dn_hash_lock); } -struct hlist_head *listen_hash(struct sockaddr_dn *addr) +static struct hlist_head *listen_hash(struct sockaddr_dn *addr) { int i; unsigned hash = addr->sdn_objnum; @@ -447,7 +447,7 @@ static void dn_destruct(struct sock *sk) dst_release(xchg(&sk->sk_dst_cache, NULL)); } -struct sock *dn_alloc_sock(struct socket *sock, int gfp) +static struct sock *dn_alloc_sock(struct socket *sock, int gfp) { struct dn_scp *scp; struct sock *sk = sk_alloc(PF_DECnet, gfp, sizeof(struct dn_sock), @@ -578,7 +578,6 @@ int dn_destroy_timer(struct sock *sk) if (sk->sk_socket) return 0; - dn_stop_fast_timer(sk); /* unlikely, but possible that this is runninng */ if ((jiffies - scp->stamp) >= (HZ * decnet_time_wait)) { dn_unhash_sock(sk); sock_put(sk); @@ -631,7 +630,6 @@ disc_reject: default: printk(KERN_DEBUG "DECnet: dn_destroy_sock passed socket in invalid state\n"); case DN_O: - dn_stop_fast_timer(sk); dn_stop_slow_timer(sk); dn_unhash_sock_bh(sk); @@ -1075,7 +1073,7 @@ static int dn_accept(struct socket *sock, struct socket *newsock, int flags) skb = dn_wait_for_connect(sk, &timeo); if (IS_ERR(skb)) { release_sock(sk); - return PTR_ERR(sk); + return PTR_ERR(skb); } } @@ -1723,7 +1721,7 @@ static int dn_recvmsg(struct kiocb *iocb, struct socket *sock, goto out; if (signal_pending(current)) { - rv = -ERESTARTSYS; + rv = sock_intr_errno(timeo); goto out; } @@ -1957,7 +1955,7 @@ static int dn_sendmsg(struct kiocb *iocb, struct socket *sock, goto out; if (signal_pending(current)) { - err = -ERESTARTSYS; + err = sock_intr_errno(timeo); goto out; } @@ -1992,7 +1990,7 @@ static int dn_sendmsg(struct kiocb *iocb, struct socket *sock, /* * Get a suitably sized skb. */ - skb = dn_alloc_send_skb(sk, &len, flags & MSG_DONTWAIT, &err); + skb = dn_alloc_send_skb(sk, &len, flags & MSG_DONTWAIT, timeo, &err); if (err) break;