diff options
Diffstat (limited to 'net')
| -rw-r--r-- | net/appletalk/ddp.c | 1 | ||||
| -rw-r--r-- | net/can/raw.c | 1 | ||||
| -rw-r--r-- | net/core/gen_estimator.c | 12 | ||||
| -rw-r--r-- | net/core/gen_stats.c | 11 | ||||
| -rw-r--r-- | net/dccp/proto.c | 1 | ||||
| -rw-r--r-- | net/econet/af_econet.c | 1 | ||||
| -rw-r--r-- | net/ieee802154/af_ieee802154.c | 8 | ||||
| -rw-r--r-- | net/ieee802154/dgram.c | 14 | ||||
| -rw-r--r-- | net/ieee802154/raw.c | 14 | ||||
| -rw-r--r-- | net/ipv4/ip_gre.c | 2 | ||||
| -rw-r--r-- | net/irda/af_irda.c | 1 | ||||
| -rw-r--r-- | net/mac80211/agg-tx.c | 8 | ||||
| -rw-r--r-- | net/netfilter/xt_RATEEST.c | 2 | ||||
| -rw-r--r-- | net/netrom/af_netrom.c | 1 | ||||
| -rw-r--r-- | net/netrom/nr_route.c | 21 | ||||
| -rw-r--r-- | net/phonet/pn_dev.c | 2 | ||||
| -rw-r--r-- | net/rose/af_rose.c | 1 | ||||
| -rw-r--r-- | net/sched/sch_atm.c | 2 | ||||
| -rw-r--r-- | net/sched/sch_cbq.c | 2 | ||||
| -rw-r--r-- | net/sched/sch_drr.c | 2 | ||||
| -rw-r--r-- | net/sched/sch_hfsc.c | 2 | ||||
| -rw-r--r-- | net/sched/sch_htb.c | 2 | ||||
| -rw-r--r-- | net/sctp/protocol.c | 1 | ||||
| -rw-r--r-- | net/xfrm/xfrm_hash.h | 2 |
24 files changed, 84 insertions, 30 deletions
diff --git a/net/appletalk/ddp.c b/net/appletalk/ddp.c index bfbe13786bb4..875eda5dbad7 100644 --- a/net/appletalk/ddp.c +++ b/net/appletalk/ddp.c | |||
| @@ -1238,6 +1238,7 @@ static int atalk_getname(struct socket *sock, struct sockaddr *uaddr, | |||
| 1238 | return -ENOBUFS; | 1238 | return -ENOBUFS; |
| 1239 | 1239 | ||
| 1240 | *uaddr_len = sizeof(struct sockaddr_at); | 1240 | *uaddr_len = sizeof(struct sockaddr_at); |
| 1241 | memset(&sat.sat_zero, 0, sizeof(sat.sat_zero)); | ||
| 1241 | 1242 | ||
| 1242 | if (peer) { | 1243 | if (peer) { |
| 1243 | if (sk->sk_state != TCP_ESTABLISHED) | 1244 | if (sk->sk_state != TCP_ESTABLISHED) |
diff --git a/net/can/raw.c b/net/can/raw.c index f4cc44548bda..db3152df7d2b 100644 --- a/net/can/raw.c +++ b/net/can/raw.c | |||
| @@ -401,6 +401,7 @@ static int raw_getname(struct socket *sock, struct sockaddr *uaddr, | |||
| 401 | if (peer) | 401 | if (peer) |
| 402 | return -EOPNOTSUPP; | 402 | return -EOPNOTSUPP; |
| 403 | 403 | ||
| 404 | memset(addr, 0, sizeof(*addr)); | ||
| 404 | addr->can_family = AF_CAN; | 405 | addr->can_family = AF_CAN; |
| 405 | addr->can_ifindex = ro->ifindex; | 406 | addr->can_ifindex = ro->ifindex; |
| 406 | 407 | ||
diff --git a/net/core/gen_estimator.c b/net/core/gen_estimator.c index 78e5bfc454ae..493775f4f2f1 100644 --- a/net/core/gen_estimator.c +++ b/net/core/gen_estimator.c | |||
| @@ -81,7 +81,7 @@ | |||
| 81 | struct gen_estimator | 81 | struct gen_estimator |
| 82 | { | 82 | { |
| 83 | struct list_head list; | 83 | struct list_head list; |
| 84 | struct gnet_stats_basic *bstats; | 84 | struct gnet_stats_basic_packed *bstats; |
| 85 | struct gnet_stats_rate_est *rate_est; | 85 | struct gnet_stats_rate_est *rate_est; |
| 86 | spinlock_t *stats_lock; | 86 | spinlock_t *stats_lock; |
| 87 | int ewma_log; | 87 | int ewma_log; |
| @@ -165,7 +165,7 @@ static void gen_add_node(struct gen_estimator *est) | |||
| 165 | } | 165 | } |
| 166 | 166 | ||
| 167 | static | 167 | static |
| 168 | struct gen_estimator *gen_find_node(const struct gnet_stats_basic *bstats, | 168 | struct gen_estimator *gen_find_node(const struct gnet_stats_basic_packed *bstats, |
| 169 | const struct gnet_stats_rate_est *rate_est) | 169 | const struct gnet_stats_rate_est *rate_est) |
| 170 | { | 170 | { |
| 171 | struct rb_node *p = est_root.rb_node; | 171 | struct rb_node *p = est_root.rb_node; |
| @@ -202,7 +202,7 @@ struct gen_estimator *gen_find_node(const struct gnet_stats_basic *bstats, | |||
| 202 | * | 202 | * |
| 203 | * NOTE: Called under rtnl_mutex | 203 | * NOTE: Called under rtnl_mutex |
| 204 | */ | 204 | */ |
| 205 | int gen_new_estimator(struct gnet_stats_basic *bstats, | 205 | int gen_new_estimator(struct gnet_stats_basic_packed *bstats, |
| 206 | struct gnet_stats_rate_est *rate_est, | 206 | struct gnet_stats_rate_est *rate_est, |
| 207 | spinlock_t *stats_lock, | 207 | spinlock_t *stats_lock, |
| 208 | struct nlattr *opt) | 208 | struct nlattr *opt) |
| @@ -262,7 +262,7 @@ static void __gen_kill_estimator(struct rcu_head *head) | |||
| 262 | * | 262 | * |
| 263 | * NOTE: Called under rtnl_mutex | 263 | * NOTE: Called under rtnl_mutex |
| 264 | */ | 264 | */ |
| 265 | void gen_kill_estimator(struct gnet_stats_basic *bstats, | 265 | void gen_kill_estimator(struct gnet_stats_basic_packed *bstats, |
| 266 | struct gnet_stats_rate_est *rate_est) | 266 | struct gnet_stats_rate_est *rate_est) |
| 267 | { | 267 | { |
| 268 | struct gen_estimator *e; | 268 | struct gen_estimator *e; |
| @@ -292,7 +292,7 @@ EXPORT_SYMBOL(gen_kill_estimator); | |||
| 292 | * | 292 | * |
| 293 | * Returns 0 on success or a negative error code. | 293 | * Returns 0 on success or a negative error code. |
| 294 | */ | 294 | */ |
| 295 | int gen_replace_estimator(struct gnet_stats_basic *bstats, | 295 | int gen_replace_estimator(struct gnet_stats_basic_packed *bstats, |
| 296 | struct gnet_stats_rate_est *rate_est, | 296 | struct gnet_stats_rate_est *rate_est, |
| 297 | spinlock_t *stats_lock, struct nlattr *opt) | 297 | spinlock_t *stats_lock, struct nlattr *opt) |
| 298 | { | 298 | { |
| @@ -308,7 +308,7 @@ EXPORT_SYMBOL(gen_replace_estimator); | |||
| 308 | * | 308 | * |
| 309 | * Returns true if estimator is active, and false if not. | 309 | * Returns true if estimator is active, and false if not. |
| 310 | */ | 310 | */ |
| 311 | bool gen_estimator_active(const struct gnet_stats_basic *bstats, | 311 | bool gen_estimator_active(const struct gnet_stats_basic_packed *bstats, |
| 312 | const struct gnet_stats_rate_est *rate_est) | 312 | const struct gnet_stats_rate_est *rate_est) |
| 313 | { | 313 | { |
| 314 | ASSERT_RTNL(); | 314 | ASSERT_RTNL(); |
diff --git a/net/core/gen_stats.c b/net/core/gen_stats.c index c3d0ffeac243..8569310268ab 100644 --- a/net/core/gen_stats.c +++ b/net/core/gen_stats.c | |||
| @@ -106,16 +106,21 @@ gnet_stats_start_copy(struct sk_buff *skb, int type, spinlock_t *lock, | |||
| 106 | * if the room in the socket buffer was not sufficient. | 106 | * if the room in the socket buffer was not sufficient. |
| 107 | */ | 107 | */ |
| 108 | int | 108 | int |
| 109 | gnet_stats_copy_basic(struct gnet_dump *d, struct gnet_stats_basic *b) | 109 | gnet_stats_copy_basic(struct gnet_dump *d, struct gnet_stats_basic_packed *b) |
| 110 | { | 110 | { |
| 111 | if (d->compat_tc_stats) { | 111 | if (d->compat_tc_stats) { |
| 112 | d->tc_stats.bytes = b->bytes; | 112 | d->tc_stats.bytes = b->bytes; |
| 113 | d->tc_stats.packets = b->packets; | 113 | d->tc_stats.packets = b->packets; |
| 114 | } | 114 | } |
| 115 | 115 | ||
| 116 | if (d->tail) | 116 | if (d->tail) { |
| 117 | return gnet_stats_copy(d, TCA_STATS_BASIC, b, sizeof(*b)); | 117 | struct gnet_stats_basic sb; |
| 118 | 118 | ||
| 119 | memset(&sb, 0, sizeof(sb)); | ||
| 120 | sb.bytes = b->bytes; | ||
| 121 | sb.packets = b->packets; | ||
| 122 | return gnet_stats_copy(d, TCA_STATS_BASIC, &sb, sizeof(sb)); | ||
| 123 | } | ||
| 119 | return 0; | 124 | return 0; |
| 120 | } | 125 | } |
| 121 | 126 | ||
diff --git a/net/dccp/proto.c b/net/dccp/proto.c index 3281013ce038..1bca9205104e 100644 --- a/net/dccp/proto.c +++ b/net/dccp/proto.c | |||
| @@ -1159,6 +1159,7 @@ static void __exit dccp_fini(void) | |||
| 1159 | kmem_cache_destroy(dccp_hashinfo.bind_bucket_cachep); | 1159 | kmem_cache_destroy(dccp_hashinfo.bind_bucket_cachep); |
| 1160 | dccp_ackvec_exit(); | 1160 | dccp_ackvec_exit(); |
| 1161 | dccp_sysctl_exit(); | 1161 | dccp_sysctl_exit(); |
| 1162 | percpu_counter_destroy(&dccp_orphan_count); | ||
| 1162 | } | 1163 | } |
| 1163 | 1164 | ||
| 1164 | module_init(dccp_init); | 1165 | module_init(dccp_init); |
diff --git a/net/econet/af_econet.c b/net/econet/af_econet.c index 2e1f836d4240..f0bbc57926cd 100644 --- a/net/econet/af_econet.c +++ b/net/econet/af_econet.c | |||
| @@ -520,6 +520,7 @@ static int econet_getname(struct socket *sock, struct sockaddr *uaddr, | |||
| 520 | if (peer) | 520 | if (peer) |
| 521 | return -EOPNOTSUPP; | 521 | return -EOPNOTSUPP; |
| 522 | 522 | ||
| 523 | memset(sec, 0, sizeof(*sec)); | ||
| 523 | mutex_lock(&econet_mutex); | 524 | mutex_lock(&econet_mutex); |
| 524 | 525 | ||
| 525 | sk = sock->sk; | 526 | sk = sock->sk; |
diff --git a/net/ieee802154/af_ieee802154.c b/net/ieee802154/af_ieee802154.c index 3bb6bdb1dac1..af661805b9fa 100644 --- a/net/ieee802154/af_ieee802154.c +++ b/net/ieee802154/af_ieee802154.c | |||
| @@ -136,7 +136,7 @@ static int ieee802154_dev_ioctl(struct sock *sk, struct ifreq __user *arg, | |||
| 136 | unsigned int cmd) | 136 | unsigned int cmd) |
| 137 | { | 137 | { |
| 138 | struct ifreq ifr; | 138 | struct ifreq ifr; |
| 139 | int ret = -EINVAL; | 139 | int ret = -ENOIOCTLCMD; |
| 140 | struct net_device *dev; | 140 | struct net_device *dev; |
| 141 | 141 | ||
| 142 | if (copy_from_user(&ifr, arg, sizeof(struct ifreq))) | 142 | if (copy_from_user(&ifr, arg, sizeof(struct ifreq))) |
| @@ -146,8 +146,10 @@ static int ieee802154_dev_ioctl(struct sock *sk, struct ifreq __user *arg, | |||
| 146 | 146 | ||
| 147 | dev_load(sock_net(sk), ifr.ifr_name); | 147 | dev_load(sock_net(sk), ifr.ifr_name); |
| 148 | dev = dev_get_by_name(sock_net(sk), ifr.ifr_name); | 148 | dev = dev_get_by_name(sock_net(sk), ifr.ifr_name); |
| 149 | if (dev->type == ARPHRD_IEEE802154 || | 149 | |
| 150 | dev->type == ARPHRD_IEEE802154_PHY) | 150 | if ((dev->type == ARPHRD_IEEE802154 || |
| 151 | dev->type == ARPHRD_IEEE802154_PHY) && | ||
| 152 | dev->netdev_ops->ndo_do_ioctl) | ||
| 151 | ret = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, cmd); | 153 | ret = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, cmd); |
| 152 | 154 | ||
| 153 | if (!ret && copy_to_user(arg, &ifr, sizeof(struct ifreq))) | 155 | if (!ret && copy_to_user(arg, &ifr, sizeof(struct ifreq))) |
diff --git a/net/ieee802154/dgram.c b/net/ieee802154/dgram.c index 14d39840dd62..ba8b214dda8f 100644 --- a/net/ieee802154/dgram.c +++ b/net/ieee802154/dgram.c | |||
| @@ -377,6 +377,18 @@ int ieee802154_dgram_deliver(struct net_device *dev, struct sk_buff *skb) | |||
| 377 | return ret; | 377 | return ret; |
| 378 | } | 378 | } |
| 379 | 379 | ||
| 380 | static int dgram_getsockopt(struct sock *sk, int level, int optname, | ||
| 381 | char __user *optval, int __user *optlen) | ||
| 382 | { | ||
| 383 | return -EOPNOTSUPP; | ||
| 384 | } | ||
| 385 | |||
| 386 | static int dgram_setsockopt(struct sock *sk, int level, int optname, | ||
| 387 | char __user *optval, int __user optlen) | ||
| 388 | { | ||
| 389 | return -EOPNOTSUPP; | ||
| 390 | } | ||
| 391 | |||
| 380 | struct proto ieee802154_dgram_prot = { | 392 | struct proto ieee802154_dgram_prot = { |
| 381 | .name = "IEEE-802.15.4-MAC", | 393 | .name = "IEEE-802.15.4-MAC", |
| 382 | .owner = THIS_MODULE, | 394 | .owner = THIS_MODULE, |
| @@ -391,5 +403,7 @@ struct proto ieee802154_dgram_prot = { | |||
| 391 | .connect = dgram_connect, | 403 | .connect = dgram_connect, |
| 392 | .disconnect = dgram_disconnect, | 404 | .disconnect = dgram_disconnect, |
| 393 | .ioctl = dgram_ioctl, | 405 | .ioctl = dgram_ioctl, |
| 406 | .getsockopt = dgram_getsockopt, | ||
| 407 | .setsockopt = dgram_setsockopt, | ||
| 394 | }; | 408 | }; |
| 395 | 409 | ||
diff --git a/net/ieee802154/raw.c b/net/ieee802154/raw.c index fca44d59f97e..9315977c4c61 100644 --- a/net/ieee802154/raw.c +++ b/net/ieee802154/raw.c | |||
| @@ -238,6 +238,18 @@ void ieee802154_raw_deliver(struct net_device *dev, struct sk_buff *skb) | |||
| 238 | read_unlock(&raw_lock); | 238 | read_unlock(&raw_lock); |
| 239 | } | 239 | } |
| 240 | 240 | ||
| 241 | static int raw_getsockopt(struct sock *sk, int level, int optname, | ||
| 242 | char __user *optval, int __user *optlen) | ||
| 243 | { | ||
| 244 | return -EOPNOTSUPP; | ||
| 245 | } | ||
| 246 | |||
| 247 | static int raw_setsockopt(struct sock *sk, int level, int optname, | ||
| 248 | char __user *optval, int __user optlen) | ||
| 249 | { | ||
| 250 | return -EOPNOTSUPP; | ||
| 251 | } | ||
| 252 | |||
| 241 | struct proto ieee802154_raw_prot = { | 253 | struct proto ieee802154_raw_prot = { |
| 242 | .name = "IEEE-802.15.4-RAW", | 254 | .name = "IEEE-802.15.4-RAW", |
| 243 | .owner = THIS_MODULE, | 255 | .owner = THIS_MODULE, |
| @@ -250,5 +262,7 @@ struct proto ieee802154_raw_prot = { | |||
| 250 | .unhash = raw_unhash, | 262 | .unhash = raw_unhash, |
| 251 | .connect = raw_connect, | 263 | .connect = raw_connect, |
| 252 | .disconnect = raw_disconnect, | 264 | .disconnect = raw_disconnect, |
| 265 | .getsockopt = raw_getsockopt, | ||
| 266 | .setsockopt = raw_setsockopt, | ||
| 253 | }; | 267 | }; |
| 254 | 268 | ||
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index cb4a0f4bd5e5..82c11dd10a62 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c | |||
| @@ -951,7 +951,7 @@ static int ipgre_tunnel_bind_dev(struct net_device *dev) | |||
| 951 | addend += 4; | 951 | addend += 4; |
| 952 | } | 952 | } |
| 953 | dev->needed_headroom = addend + hlen; | 953 | dev->needed_headroom = addend + hlen; |
| 954 | mtu -= dev->hard_header_len - addend; | 954 | mtu -= dev->hard_header_len + addend; |
| 955 | 955 | ||
| 956 | if (mtu < 68) | 956 | if (mtu < 68) |
| 957 | mtu = 68; | 957 | mtu = 68; |
diff --git a/net/irda/af_irda.c b/net/irda/af_irda.c index 80cf29aae096..50b43c57d5d8 100644 --- a/net/irda/af_irda.c +++ b/net/irda/af_irda.c | |||
| @@ -715,6 +715,7 @@ static int irda_getname(struct socket *sock, struct sockaddr *uaddr, | |||
| 715 | struct sock *sk = sock->sk; | 715 | struct sock *sk = sock->sk; |
| 716 | struct irda_sock *self = irda_sk(sk); | 716 | struct irda_sock *self = irda_sk(sk); |
| 717 | 717 | ||
| 718 | memset(&saddr, 0, sizeof(saddr)); | ||
| 718 | if (peer) { | 719 | if (peer) { |
| 719 | if (sk->sk_state != TCP_ESTABLISHED) | 720 | if (sk->sk_state != TCP_ESTABLISHED) |
| 720 | return -ENOTCONN; | 721 | return -ENOTCONN; |
diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c index 9e5762ad307d..a24e59816b93 100644 --- a/net/mac80211/agg-tx.c +++ b/net/mac80211/agg-tx.c | |||
| @@ -381,6 +381,14 @@ static void ieee80211_agg_splice_packets(struct ieee80211_local *local, | |||
| 381 | &local->hw, queue, | 381 | &local->hw, queue, |
| 382 | IEEE80211_QUEUE_STOP_REASON_AGGREGATION); | 382 | IEEE80211_QUEUE_STOP_REASON_AGGREGATION); |
| 383 | 383 | ||
| 384 | if (!(sta->ampdu_mlme.tid_state_tx[tid] & HT_ADDBA_REQUESTED_MSK)) | ||
| 385 | return; | ||
| 386 | |||
| 387 | if (WARN(!sta->ampdu_mlme.tid_tx[tid], | ||
| 388 | "TID %d gone but expected when splicing aggregates from" | ||
| 389 | "the pending queue\n", tid)) | ||
| 390 | return; | ||
| 391 | |||
| 384 | if (!skb_queue_empty(&sta->ampdu_mlme.tid_tx[tid]->pending)) { | 392 | if (!skb_queue_empty(&sta->ampdu_mlme.tid_tx[tid]->pending)) { |
| 385 | spin_lock_irqsave(&local->queue_stop_reason_lock, flags); | 393 | spin_lock_irqsave(&local->queue_stop_reason_lock, flags); |
| 386 | /* mark queue as pending, it is stopped already */ | 394 | /* mark queue as pending, it is stopped already */ |
diff --git a/net/netfilter/xt_RATEEST.c b/net/netfilter/xt_RATEEST.c index 43f5676b1af4..d80b8192e0d4 100644 --- a/net/netfilter/xt_RATEEST.c +++ b/net/netfilter/xt_RATEEST.c | |||
| @@ -74,7 +74,7 @@ static unsigned int | |||
| 74 | xt_rateest_tg(struct sk_buff *skb, const struct xt_target_param *par) | 74 | xt_rateest_tg(struct sk_buff *skb, const struct xt_target_param *par) |
| 75 | { | 75 | { |
| 76 | const struct xt_rateest_target_info *info = par->targinfo; | 76 | const struct xt_rateest_target_info *info = par->targinfo; |
| 77 | struct gnet_stats_basic *stats = &info->est->bstats; | 77 | struct gnet_stats_basic_packed *stats = &info->est->bstats; |
| 78 | 78 | ||
| 79 | spin_lock_bh(&info->est->lock); | 79 | spin_lock_bh(&info->est->lock); |
| 80 | stats->bytes += skb->len; | 80 | stats->bytes += skb->len; |
diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c index ce51ce012cda..ce1a34b99c23 100644 --- a/net/netrom/af_netrom.c +++ b/net/netrom/af_netrom.c | |||
| @@ -847,6 +847,7 @@ static int nr_getname(struct socket *sock, struct sockaddr *uaddr, | |||
| 847 | sax->fsa_ax25.sax25_family = AF_NETROM; | 847 | sax->fsa_ax25.sax25_family = AF_NETROM; |
| 848 | sax->fsa_ax25.sax25_ndigis = 1; | 848 | sax->fsa_ax25.sax25_ndigis = 1; |
| 849 | sax->fsa_ax25.sax25_call = nr->user_addr; | 849 | sax->fsa_ax25.sax25_call = nr->user_addr; |
| 850 | memset(sax->fsa_digipeater, 0, sizeof(sax->fsa_digipeater)); | ||
| 850 | sax->fsa_digipeater[0] = nr->dest_addr; | 851 | sax->fsa_digipeater[0] = nr->dest_addr; |
| 851 | *uaddr_len = sizeof(struct full_sockaddr_ax25); | 852 | *uaddr_len = sizeof(struct full_sockaddr_ax25); |
| 852 | } else { | 853 | } else { |
diff --git a/net/netrom/nr_route.c b/net/netrom/nr_route.c index e943c16552a2..4eb1ac9a7679 100644 --- a/net/netrom/nr_route.c +++ b/net/netrom/nr_route.c | |||
| @@ -630,23 +630,23 @@ out: | |||
| 630 | return dev; | 630 | return dev; |
| 631 | } | 631 | } |
| 632 | 632 | ||
| 633 | static ax25_digi *nr_call_to_digi(int ndigis, ax25_address *digipeaters) | 633 | static ax25_digi *nr_call_to_digi(ax25_digi *digi, int ndigis, |
| 634 | ax25_address *digipeaters) | ||
| 634 | { | 635 | { |
| 635 | static ax25_digi ax25_digi; | ||
| 636 | int i; | 636 | int i; |
| 637 | 637 | ||
| 638 | if (ndigis == 0) | 638 | if (ndigis == 0) |
| 639 | return NULL; | 639 | return NULL; |
| 640 | 640 | ||
| 641 | for (i = 0; i < ndigis; i++) { | 641 | for (i = 0; i < ndigis; i++) { |
| 642 | ax25_digi.calls[i] = digipeaters[i]; | 642 | digi->calls[i] = digipeaters[i]; |
| 643 | ax25_digi.repeated[i] = 0; | 643 | digi->repeated[i] = 0; |
| 644 | } | 644 | } |
| 645 | 645 | ||
| 646 | ax25_digi.ndigi = ndigis; | 646 | digi->ndigi = ndigis; |
| 647 | ax25_digi.lastrepeat = -1; | 647 | digi->lastrepeat = -1; |
| 648 | 648 | ||
| 649 | return &ax25_digi; | 649 | return digi; |
| 650 | } | 650 | } |
| 651 | 651 | ||
| 652 | /* | 652 | /* |
| @@ -656,6 +656,7 @@ int nr_rt_ioctl(unsigned int cmd, void __user *arg) | |||
| 656 | { | 656 | { |
| 657 | struct nr_route_struct nr_route; | 657 | struct nr_route_struct nr_route; |
| 658 | struct net_device *dev; | 658 | struct net_device *dev; |
| 659 | ax25_digi digi; | ||
| 659 | int ret; | 660 | int ret; |
| 660 | 661 | ||
| 661 | switch (cmd) { | 662 | switch (cmd) { |
| @@ -673,13 +674,15 @@ int nr_rt_ioctl(unsigned int cmd, void __user *arg) | |||
| 673 | ret = nr_add_node(&nr_route.callsign, | 674 | ret = nr_add_node(&nr_route.callsign, |
| 674 | nr_route.mnemonic, | 675 | nr_route.mnemonic, |
| 675 | &nr_route.neighbour, | 676 | &nr_route.neighbour, |
| 676 | nr_call_to_digi(nr_route.ndigis, nr_route.digipeaters), | 677 | nr_call_to_digi(&digi, nr_route.ndigis, |
| 678 | nr_route.digipeaters), | ||
| 677 | dev, nr_route.quality, | 679 | dev, nr_route.quality, |
| 678 | nr_route.obs_count); | 680 | nr_route.obs_count); |
| 679 | break; | 681 | break; |
| 680 | case NETROM_NEIGH: | 682 | case NETROM_NEIGH: |
| 681 | ret = nr_add_neigh(&nr_route.callsign, | 683 | ret = nr_add_neigh(&nr_route.callsign, |
| 682 | nr_call_to_digi(nr_route.ndigis, nr_route.digipeaters), | 684 | nr_call_to_digi(&digi, nr_route.ndigis, |
| 685 | nr_route.digipeaters), | ||
| 683 | dev, nr_route.quality); | 686 | dev, nr_route.quality); |
| 684 | break; | 687 | break; |
| 685 | default: | 688 | default: |
diff --git a/net/phonet/pn_dev.c b/net/phonet/pn_dev.c index b0d6ddd82a9d..c2b77a698695 100644 --- a/net/phonet/pn_dev.c +++ b/net/phonet/pn_dev.c | |||
| @@ -96,7 +96,7 @@ struct net_device *phonet_device_get(struct net *net) | |||
| 96 | { | 96 | { |
| 97 | struct phonet_device_list *pndevs = phonet_device_list(net); | 97 | struct phonet_device_list *pndevs = phonet_device_list(net); |
| 98 | struct phonet_device *pnd; | 98 | struct phonet_device *pnd; |
| 99 | struct net_device *dev; | 99 | struct net_device *dev = NULL; |
| 100 | 100 | ||
| 101 | spin_lock_bh(&pndevs->lock); | 101 | spin_lock_bh(&pndevs->lock); |
| 102 | list_for_each_entry(pnd, &pndevs->list, list) { | 102 | list_for_each_entry(pnd, &pndevs->list, list) { |
diff --git a/net/rose/af_rose.c b/net/rose/af_rose.c index f0a76f6bca71..e5f478ca3d61 100644 --- a/net/rose/af_rose.c +++ b/net/rose/af_rose.c | |||
| @@ -954,6 +954,7 @@ static int rose_getname(struct socket *sock, struct sockaddr *uaddr, | |||
| 954 | struct rose_sock *rose = rose_sk(sk); | 954 | struct rose_sock *rose = rose_sk(sk); |
| 955 | int n; | 955 | int n; |
| 956 | 956 | ||
| 957 | memset(srose, 0, sizeof(*srose)); | ||
| 957 | if (peer != 0) { | 958 | if (peer != 0) { |
| 958 | if (sk->sk_state != TCP_ESTABLISHED) | 959 | if (sk->sk_state != TCP_ESTABLISHED) |
| 959 | return -ENOTCONN; | 960 | return -ENOTCONN; |
diff --git a/net/sched/sch_atm.c b/net/sched/sch_atm.c index 2a8b83af7c47..ab82f145f689 100644 --- a/net/sched/sch_atm.c +++ b/net/sched/sch_atm.c | |||
| @@ -49,7 +49,7 @@ struct atm_flow_data { | |||
| 49 | struct socket *sock; /* for closing */ | 49 | struct socket *sock; /* for closing */ |
| 50 | u32 classid; /* x:y type ID */ | 50 | u32 classid; /* x:y type ID */ |
| 51 | int ref; /* reference count */ | 51 | int ref; /* reference count */ |
| 52 | struct gnet_stats_basic bstats; | 52 | struct gnet_stats_basic_packed bstats; |
| 53 | struct gnet_stats_queue qstats; | 53 | struct gnet_stats_queue qstats; |
| 54 | struct atm_flow_data *next; | 54 | struct atm_flow_data *next; |
| 55 | struct atm_flow_data *excess; /* flow for excess traffic; | 55 | struct atm_flow_data *excess; /* flow for excess traffic; |
diff --git a/net/sched/sch_cbq.c b/net/sched/sch_cbq.c index 23a167670fd5..d5798e17a832 100644 --- a/net/sched/sch_cbq.c +++ b/net/sched/sch_cbq.c | |||
| @@ -128,7 +128,7 @@ struct cbq_class | |||
| 128 | long avgidle; | 128 | long avgidle; |
| 129 | long deficit; /* Saved deficit for WRR */ | 129 | long deficit; /* Saved deficit for WRR */ |
| 130 | psched_time_t penalized; | 130 | psched_time_t penalized; |
| 131 | struct gnet_stats_basic bstats; | 131 | struct gnet_stats_basic_packed bstats; |
| 132 | struct gnet_stats_queue qstats; | 132 | struct gnet_stats_queue qstats; |
| 133 | struct gnet_stats_rate_est rate_est; | 133 | struct gnet_stats_rate_est rate_est; |
| 134 | struct tc_cbq_xstats xstats; | 134 | struct tc_cbq_xstats xstats; |
diff --git a/net/sched/sch_drr.c b/net/sched/sch_drr.c index 7597fe146866..12b2fb04b29b 100644 --- a/net/sched/sch_drr.c +++ b/net/sched/sch_drr.c | |||
| @@ -22,7 +22,7 @@ struct drr_class { | |||
| 22 | unsigned int refcnt; | 22 | unsigned int refcnt; |
| 23 | unsigned int filter_cnt; | 23 | unsigned int filter_cnt; |
| 24 | 24 | ||
| 25 | struct gnet_stats_basic bstats; | 25 | struct gnet_stats_basic_packed bstats; |
| 26 | struct gnet_stats_queue qstats; | 26 | struct gnet_stats_queue qstats; |
| 27 | struct gnet_stats_rate_est rate_est; | 27 | struct gnet_stats_rate_est rate_est; |
| 28 | struct list_head alist; | 28 | struct list_head alist; |
diff --git a/net/sched/sch_hfsc.c b/net/sched/sch_hfsc.c index 362c2811b2df..dad0144423da 100644 --- a/net/sched/sch_hfsc.c +++ b/net/sched/sch_hfsc.c | |||
| @@ -116,7 +116,7 @@ struct hfsc_class | |||
| 116 | struct Qdisc_class_common cl_common; | 116 | struct Qdisc_class_common cl_common; |
| 117 | unsigned int refcnt; /* usage count */ | 117 | unsigned int refcnt; /* usage count */ |
| 118 | 118 | ||
| 119 | struct gnet_stats_basic bstats; | 119 | struct gnet_stats_basic_packed bstats; |
| 120 | struct gnet_stats_queue qstats; | 120 | struct gnet_stats_queue qstats; |
| 121 | struct gnet_stats_rate_est rate_est; | 121 | struct gnet_stats_rate_est rate_est; |
| 122 | unsigned int level; /* class level in hierarchy */ | 122 | unsigned int level; /* class level in hierarchy */ |
diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c index 88cd02626621..ec4d46399d59 100644 --- a/net/sched/sch_htb.c +++ b/net/sched/sch_htb.c | |||
| @@ -74,7 +74,7 @@ enum htb_cmode { | |||
| 74 | struct htb_class { | 74 | struct htb_class { |
| 75 | struct Qdisc_class_common common; | 75 | struct Qdisc_class_common common; |
| 76 | /* general class parameters */ | 76 | /* general class parameters */ |
| 77 | struct gnet_stats_basic bstats; | 77 | struct gnet_stats_basic_packed bstats; |
| 78 | struct gnet_stats_queue qstats; | 78 | struct gnet_stats_queue qstats; |
| 79 | struct gnet_stats_rate_est rate_est; | 79 | struct gnet_stats_rate_est rate_est; |
| 80 | struct tc_htb_xstats xstats; /* our special stats */ | 80 | struct tc_htb_xstats xstats; /* our special stats */ |
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c index 79cbd47f4df7..a76da657244a 100644 --- a/net/sctp/protocol.c +++ b/net/sctp/protocol.c | |||
| @@ -160,6 +160,7 @@ static void sctp_proc_exit(void) | |||
| 160 | remove_proc_entry("sctp", init_net.proc_net); | 160 | remove_proc_entry("sctp", init_net.proc_net); |
| 161 | } | 161 | } |
| 162 | #endif | 162 | #endif |
| 163 | percpu_counter_destroy(&sctp_sockets_allocated); | ||
| 163 | } | 164 | } |
| 164 | 165 | ||
| 165 | /* Private helper to extract ipv4 address and stash them in | 166 | /* Private helper to extract ipv4 address and stash them in |
diff --git a/net/xfrm/xfrm_hash.h b/net/xfrm/xfrm_hash.h index d401dc8f05ed..e5195c99f71e 100644 --- a/net/xfrm/xfrm_hash.h +++ b/net/xfrm/xfrm_hash.h | |||
| @@ -16,7 +16,7 @@ static inline unsigned int __xfrm6_addr_hash(xfrm_address_t *addr) | |||
| 16 | 16 | ||
| 17 | static inline unsigned int __xfrm4_daddr_saddr_hash(xfrm_address_t *daddr, xfrm_address_t *saddr) | 17 | static inline unsigned int __xfrm4_daddr_saddr_hash(xfrm_address_t *daddr, xfrm_address_t *saddr) |
| 18 | { | 18 | { |
| 19 | return ntohl(daddr->a4 ^ saddr->a4); | 19 | return ntohl(daddr->a4 + saddr->a4); |
| 20 | } | 20 | } |
| 21 | 21 | ||
| 22 | static inline unsigned int __xfrm6_daddr_saddr_hash(xfrm_address_t *daddr, xfrm_address_t *saddr) | 22 | static inline unsigned int __xfrm6_daddr_saddr_hash(xfrm_address_t *daddr, xfrm_address_t *saddr) |
