diff options
Diffstat (limited to 'net/decnet/af_decnet.c')
-rw-r--r-- | net/decnet/af_decnet.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c index d6b93d19790f..ea3b6ee21fc9 100644 --- a/net/decnet/af_decnet.c +++ b/net/decnet/af_decnet.c | |||
@@ -155,7 +155,7 @@ static const struct proto_ops dn_proto_ops; | |||
155 | static DEFINE_RWLOCK(dn_hash_lock); | 155 | static DEFINE_RWLOCK(dn_hash_lock); |
156 | static struct hlist_head dn_sk_hash[DN_SK_HASH_SIZE]; | 156 | static struct hlist_head dn_sk_hash[DN_SK_HASH_SIZE]; |
157 | static struct hlist_head dn_wild_sk; | 157 | static struct hlist_head dn_wild_sk; |
158 | static atomic_t decnet_memory_allocated; | 158 | static atomic_long_t decnet_memory_allocated; |
159 | 159 | ||
160 | static int __dn_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen, int flags); | 160 | static int __dn_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen, int flags); |
161 | static int __dn_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen, int flags); | 161 | static int __dn_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen, int flags); |
@@ -829,7 +829,7 @@ static int dn_confirm_accept(struct sock *sk, long *timeo, gfp_t allocation) | |||
829 | return -EINVAL; | 829 | return -EINVAL; |
830 | 830 | ||
831 | scp->state = DN_CC; | 831 | scp->state = DN_CC; |
832 | scp->segsize_loc = dst_metric(__sk_dst_get(sk), RTAX_ADVMSS); | 832 | scp->segsize_loc = dst_metric_advmss(__sk_dst_get(sk)); |
833 | dn_send_conn_conf(sk, allocation); | 833 | dn_send_conn_conf(sk, allocation); |
834 | 834 | ||
835 | prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); | 835 | prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); |
@@ -908,7 +908,7 @@ static int __dn_connect(struct sock *sk, struct sockaddr_dn *addr, int addrlen, | |||
908 | struct socket *sock = sk->sk_socket; | 908 | struct socket *sock = sk->sk_socket; |
909 | struct dn_scp *scp = DN_SK(sk); | 909 | struct dn_scp *scp = DN_SK(sk); |
910 | int err = -EISCONN; | 910 | int err = -EISCONN; |
911 | struct flowi fl; | 911 | struct flowidn fld; |
912 | 912 | ||
913 | if (sock->state == SS_CONNECTED) | 913 | if (sock->state == SS_CONNECTED) |
914 | goto out; | 914 | goto out; |
@@ -947,18 +947,18 @@ static int __dn_connect(struct sock *sk, struct sockaddr_dn *addr, int addrlen, | |||
947 | memcpy(&scp->peer, addr, sizeof(struct sockaddr_dn)); | 947 | memcpy(&scp->peer, addr, sizeof(struct sockaddr_dn)); |
948 | 948 | ||
949 | err = -EHOSTUNREACH; | 949 | err = -EHOSTUNREACH; |
950 | memset(&fl, 0, sizeof(fl)); | 950 | memset(&fld, 0, sizeof(fld)); |
951 | fl.oif = sk->sk_bound_dev_if; | 951 | fld.flowidn_oif = sk->sk_bound_dev_if; |
952 | fl.fld_dst = dn_saddr2dn(&scp->peer); | 952 | fld.daddr = dn_saddr2dn(&scp->peer); |
953 | fl.fld_src = dn_saddr2dn(&scp->addr); | 953 | fld.saddr = dn_saddr2dn(&scp->addr); |
954 | dn_sk_ports_copy(&fl, scp); | 954 | dn_sk_ports_copy(&fld, scp); |
955 | fl.proto = DNPROTO_NSP; | 955 | fld.flowidn_proto = DNPROTO_NSP; |
956 | if (dn_route_output_sock(&sk->sk_dst_cache, &fl, sk, flags) < 0) | 956 | if (dn_route_output_sock(&sk->sk_dst_cache, &fld, sk, flags) < 0) |
957 | goto out; | 957 | goto out; |
958 | sk->sk_route_caps = sk->sk_dst_cache->dev->features; | 958 | sk->sk_route_caps = sk->sk_dst_cache->dev->features; |
959 | sock->state = SS_CONNECTING; | 959 | sock->state = SS_CONNECTING; |
960 | scp->state = DN_CI; | 960 | scp->state = DN_CI; |
961 | scp->segsize_loc = dst_metric(sk->sk_dst_cache, RTAX_ADVMSS); | 961 | scp->segsize_loc = dst_metric_advmss(sk->sk_dst_cache); |
962 | 962 | ||
963 | dn_nsp_send_conninit(sk, NSP_CI); | 963 | dn_nsp_send_conninit(sk, NSP_CI); |
964 | err = -EINPROGRESS; | 964 | err = -EINPROGRESS; |
@@ -1556,6 +1556,8 @@ static int __dn_getsockopt(struct socket *sock, int level,int optname, char __us | |||
1556 | if (r_len > sizeof(struct linkinfo_dn)) | 1556 | if (r_len > sizeof(struct linkinfo_dn)) |
1557 | r_len = sizeof(struct linkinfo_dn); | 1557 | r_len = sizeof(struct linkinfo_dn); |
1558 | 1558 | ||
1559 | memset(&link, 0, sizeof(link)); | ||
1560 | |||
1559 | switch(sock->state) { | 1561 | switch(sock->state) { |
1560 | case SS_CONNECTING: | 1562 | case SS_CONNECTING: |
1561 | link.idn_linkstate = LL_CONNECTING; | 1563 | link.idn_linkstate = LL_CONNECTING; |
@@ -1848,7 +1850,7 @@ unsigned dn_mss_from_pmtu(struct net_device *dev, int mtu) | |||
1848 | { | 1850 | { |
1849 | unsigned mss = 230 - DN_MAX_NSP_DATA_HEADER; | 1851 | unsigned mss = 230 - DN_MAX_NSP_DATA_HEADER; |
1850 | if (dev) { | 1852 | if (dev) { |
1851 | struct dn_dev *dn_db = dev->dn_ptr; | 1853 | struct dn_dev *dn_db = rcu_dereference_raw(dev->dn_ptr); |
1852 | mtu -= LL_RESERVED_SPACE(dev); | 1854 | mtu -= LL_RESERVED_SPACE(dev); |
1853 | if (dn_db->use_long) | 1855 | if (dn_db->use_long) |
1854 | mtu -= 21; | 1856 | mtu -= 21; |