diff options
| -rw-r--r-- | MAINTAINERS | 14 | ||||
| -rw-r--r-- | drivers/net/bonding/bond_main.c | 2 | ||||
| -rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 10 | ||||
| -rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c | 2 | ||||
| -rw-r--r-- | drivers/s390/net/qeth_l2_main.c | 11 | ||||
| -rw-r--r-- | drivers/s390/net/qeth_l3_main.c | 11 | ||||
| -rw-r--r-- | drivers/s390/net/smsgiucv.c | 2 | ||||
| -rw-r--r-- | net/8021q/vlan_core.c | 9 | ||||
| -rw-r--r-- | net/ipv6/addrconf.c | 15 | ||||
| -rw-r--r-- | net/sctp/sm_sideeffect.c | 3 |
10 files changed, 55 insertions, 24 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index e39e9da359a0..41c53491db60 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -5019,6 +5019,20 @@ F: net/ipv6/ | |||
| 5019 | F: include/net/ip* | 5019 | F: include/net/ip* |
| 5020 | F: arch/x86/net/* | 5020 | F: arch/x86/net/* |
| 5021 | 5021 | ||
| 5022 | NETWORKING [IPSEC] | ||
| 5023 | M: Steffen Klassert <steffen.klassert@secunet.com> | ||
| 5024 | M: Herbert Xu <herbert@gondor.apana.org.au> | ||
| 5025 | M: "David S. Miller" <davem@davemloft.net> | ||
| 5026 | L: netdev@vger.kernel.org | ||
| 5027 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git | ||
| 5028 | S: Maintained | ||
| 5029 | F: net/xfrm/ | ||
| 5030 | F: net/key/ | ||
| 5031 | F: net/ipv4/xfrm* | ||
| 5032 | F: net/ipv6/xfrm* | ||
| 5033 | F: include/uapi/linux/xfrm.h | ||
| 5034 | F: include/net/xfrm.h | ||
| 5035 | |||
| 5022 | NETWORKING [LABELED] (NetLabel, CIPSO, Labeled IPsec, SECMARK) | 5036 | NETWORKING [LABELED] (NetLabel, CIPSO, Labeled IPsec, SECMARK) |
| 5023 | M: Paul Moore <paul@paul-moore.com> | 5037 | M: Paul Moore <paul@paul-moore.com> |
| 5024 | L: netdev@vger.kernel.org | 5038 | L: netdev@vger.kernel.org |
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index b721902bb6b4..b2530b002125 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c | |||
| @@ -1519,7 +1519,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev) | |||
| 1519 | /* no need to lock since we're protected by rtnl_lock */ | 1519 | /* no need to lock since we're protected by rtnl_lock */ |
| 1520 | if (slave_dev->features & NETIF_F_VLAN_CHALLENGED) { | 1520 | if (slave_dev->features & NETIF_F_VLAN_CHALLENGED) { |
| 1521 | pr_debug("%s: NETIF_F_VLAN_CHALLENGED\n", slave_dev->name); | 1521 | pr_debug("%s: NETIF_F_VLAN_CHALLENGED\n", slave_dev->name); |
| 1522 | if (bond_vlan_used(bond)) { | 1522 | if (vlan_uses_dev(bond_dev)) { |
| 1523 | pr_err("%s: Error: cannot enslave VLAN challenged slave %s on VLAN enabled bond %s\n", | 1523 | pr_err("%s: Error: cannot enslave VLAN challenged slave %s on VLAN enabled bond %s\n", |
| 1524 | bond_dev->name, slave_dev->name, bond_dev->name); | 1524 | bond_dev->name, slave_dev->name, bond_dev->name); |
| 1525 | return -EPERM; | 1525 | return -EPERM; |
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c index 24220992413f..4833b6a9031c 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | |||
| @@ -2957,9 +2957,13 @@ netdev_tx_t bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 2957 | skb_shinfo(skb)->nr_frags + | 2957 | skb_shinfo(skb)->nr_frags + |
| 2958 | BDS_PER_TX_PKT + | 2958 | BDS_PER_TX_PKT + |
| 2959 | NEXT_CNT_PER_TX_PKT(MAX_BDS_PER_TX_PKT))) { | 2959 | NEXT_CNT_PER_TX_PKT(MAX_BDS_PER_TX_PKT))) { |
| 2960 | bnx2x_fp_qstats(bp, txdata->parent_fp)->driver_xoff++; | 2960 | /* Handle special storage cases separately */ |
| 2961 | netif_tx_stop_queue(txq); | 2961 | if (txdata->tx_ring_size != 0) { |
| 2962 | BNX2X_ERR("BUG! Tx ring full when queue awake!\n"); | 2962 | BNX2X_ERR("BUG! Tx ring full when queue awake!\n"); |
| 2963 | bnx2x_fp_qstats(bp, txdata->parent_fp)->driver_xoff++; | ||
| 2964 | netif_tx_stop_queue(txq); | ||
| 2965 | } | ||
| 2966 | |||
| 2963 | return NETDEV_TX_BUSY; | 2967 | return NETDEV_TX_BUSY; |
| 2964 | } | 2968 | } |
| 2965 | 2969 | ||
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c index 71971a161bd1..614981c02264 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c | |||
| @@ -126,7 +126,7 @@ static inline int bnx2x_exe_queue_add(struct bnx2x *bp, | |||
| 126 | /* Check if this request is ok */ | 126 | /* Check if this request is ok */ |
| 127 | rc = o->validate(bp, o->owner, elem); | 127 | rc = o->validate(bp, o->owner, elem); |
| 128 | if (rc) { | 128 | if (rc) { |
| 129 | BNX2X_ERR("Preamble failed: %d\n", rc); | 129 | DP(BNX2X_MSG_SP, "Preamble failed: %d\n", rc); |
| 130 | goto free_and_exit; | 130 | goto free_and_exit; |
| 131 | } | 131 | } |
| 132 | } | 132 | } |
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c index 2db409330c21..e67e0258aec5 100644 --- a/drivers/s390/net/qeth_l2_main.c +++ b/drivers/s390/net/qeth_l2_main.c | |||
| @@ -1141,11 +1141,12 @@ static int qeth_l2_recover(void *ptr) | |||
| 1141 | dev_info(&card->gdev->dev, | 1141 | dev_info(&card->gdev->dev, |
| 1142 | "Device successfully recovered!\n"); | 1142 | "Device successfully recovered!\n"); |
| 1143 | else { | 1143 | else { |
| 1144 | rtnl_lock(); | 1144 | if (rtnl_trylock()) { |
| 1145 | dev_close(card->dev); | 1145 | dev_close(card->dev); |
| 1146 | rtnl_unlock(); | 1146 | rtnl_unlock(); |
| 1147 | dev_warn(&card->gdev->dev, "The qeth device driver " | 1147 | dev_warn(&card->gdev->dev, "The qeth device driver " |
| 1148 | "failed to recover an error on the device\n"); | 1148 | "failed to recover an error on the device\n"); |
| 1149 | } | ||
| 1149 | } | 1150 | } |
| 1150 | qeth_clear_thread_start_bit(card, QETH_RECOVER_THREAD); | 1151 | qeth_clear_thread_start_bit(card, QETH_RECOVER_THREAD); |
| 1151 | qeth_clear_thread_running_bit(card, QETH_RECOVER_THREAD); | 1152 | qeth_clear_thread_running_bit(card, QETH_RECOVER_THREAD); |
diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c index 4cd310cb5bdf..5ba390658498 100644 --- a/drivers/s390/net/qeth_l3_main.c +++ b/drivers/s390/net/qeth_l3_main.c | |||
| @@ -3510,11 +3510,12 @@ static int qeth_l3_recover(void *ptr) | |||
| 3510 | dev_info(&card->gdev->dev, | 3510 | dev_info(&card->gdev->dev, |
| 3511 | "Device successfully recovered!\n"); | 3511 | "Device successfully recovered!\n"); |
| 3512 | else { | 3512 | else { |
| 3513 | rtnl_lock(); | 3513 | if (rtnl_trylock()) { |
| 3514 | dev_close(card->dev); | 3514 | dev_close(card->dev); |
| 3515 | rtnl_unlock(); | 3515 | rtnl_unlock(); |
| 3516 | dev_warn(&card->gdev->dev, "The qeth device driver " | 3516 | dev_warn(&card->gdev->dev, "The qeth device driver " |
| 3517 | "failed to recover an error on the device\n"); | 3517 | "failed to recover an error on the device\n"); |
| 3518 | } | ||
| 3518 | } | 3519 | } |
| 3519 | qeth_clear_thread_start_bit(card, QETH_RECOVER_THREAD); | 3520 | qeth_clear_thread_start_bit(card, QETH_RECOVER_THREAD); |
| 3520 | qeth_clear_thread_running_bit(card, QETH_RECOVER_THREAD); | 3521 | qeth_clear_thread_running_bit(card, QETH_RECOVER_THREAD); |
diff --git a/drivers/s390/net/smsgiucv.c b/drivers/s390/net/smsgiucv.c index 207b7d742443..d8f990b6b332 100644 --- a/drivers/s390/net/smsgiucv.c +++ b/drivers/s390/net/smsgiucv.c | |||
| @@ -157,7 +157,7 @@ static int smsg_pm_restore_thaw(struct device *dev) | |||
| 157 | #ifdef CONFIG_PM_DEBUG | 157 | #ifdef CONFIG_PM_DEBUG |
| 158 | printk(KERN_WARNING "smsg_pm_restore_thaw\n"); | 158 | printk(KERN_WARNING "smsg_pm_restore_thaw\n"); |
| 159 | #endif | 159 | #endif |
| 160 | if (smsg_path && iucv_path_connected) { | 160 | if (smsg_path && !iucv_path_connected) { |
| 161 | memset(smsg_path, 0, sizeof(*smsg_path)); | 161 | memset(smsg_path, 0, sizeof(*smsg_path)); |
| 162 | smsg_path->msglim = 255; | 162 | smsg_path->msglim = 255; |
| 163 | smsg_path->flags = 0; | 163 | smsg_path->flags = 0; |
diff --git a/net/8021q/vlan_core.c b/net/8021q/vlan_core.c index fbbf1fa00940..65e06abe023f 100644 --- a/net/8021q/vlan_core.c +++ b/net/8021q/vlan_core.c | |||
| @@ -366,6 +366,13 @@ EXPORT_SYMBOL(vlan_vids_del_by_dev); | |||
| 366 | 366 | ||
| 367 | bool vlan_uses_dev(const struct net_device *dev) | 367 | bool vlan_uses_dev(const struct net_device *dev) |
| 368 | { | 368 | { |
| 369 | return rtnl_dereference(dev->vlan_info) ? true : false; | 369 | struct vlan_info *vlan_info; |
| 370 | |||
| 371 | ASSERT_RTNL(); | ||
| 372 | |||
| 373 | vlan_info = rtnl_dereference(dev->vlan_info); | ||
| 374 | if (!vlan_info) | ||
| 375 | return false; | ||
| 376 | return vlan_info->grp.nr_vlan_devs ? true : false; | ||
| 370 | } | 377 | } |
| 371 | EXPORT_SYMBOL(vlan_uses_dev); | 378 | EXPORT_SYMBOL(vlan_uses_dev); |
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index d7c56f8a5b4e..0424e4e27414 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
| @@ -3064,14 +3064,15 @@ static struct inet6_ifaddr *if6_get_first(struct seq_file *seq, loff_t pos) | |||
| 3064 | struct hlist_node *n; | 3064 | struct hlist_node *n; |
| 3065 | hlist_for_each_entry_rcu_bh(ifa, n, &inet6_addr_lst[state->bucket], | 3065 | hlist_for_each_entry_rcu_bh(ifa, n, &inet6_addr_lst[state->bucket], |
| 3066 | addr_lst) { | 3066 | addr_lst) { |
| 3067 | if (!net_eq(dev_net(ifa->idev->dev), net)) | ||
| 3068 | continue; | ||
| 3067 | /* sync with offset */ | 3069 | /* sync with offset */ |
| 3068 | if (p < state->offset) { | 3070 | if (p < state->offset) { |
| 3069 | p++; | 3071 | p++; |
| 3070 | continue; | 3072 | continue; |
| 3071 | } | 3073 | } |
| 3072 | state->offset++; | 3074 | state->offset++; |
| 3073 | if (net_eq(dev_net(ifa->idev->dev), net)) | 3075 | return ifa; |
| 3074 | return ifa; | ||
| 3075 | } | 3076 | } |
| 3076 | 3077 | ||
| 3077 | /* prepare for next bucket */ | 3078 | /* prepare for next bucket */ |
| @@ -3089,18 +3090,20 @@ static struct inet6_ifaddr *if6_get_next(struct seq_file *seq, | |||
| 3089 | struct hlist_node *n = &ifa->addr_lst; | 3090 | struct hlist_node *n = &ifa->addr_lst; |
| 3090 | 3091 | ||
| 3091 | hlist_for_each_entry_continue_rcu_bh(ifa, n, addr_lst) { | 3092 | hlist_for_each_entry_continue_rcu_bh(ifa, n, addr_lst) { |
| 3093 | if (!net_eq(dev_net(ifa->idev->dev), net)) | ||
| 3094 | continue; | ||
| 3092 | state->offset++; | 3095 | state->offset++; |
| 3093 | if (net_eq(dev_net(ifa->idev->dev), net)) | 3096 | return ifa; |
| 3094 | return ifa; | ||
| 3095 | } | 3097 | } |
| 3096 | 3098 | ||
| 3097 | while (++state->bucket < IN6_ADDR_HSIZE) { | 3099 | while (++state->bucket < IN6_ADDR_HSIZE) { |
| 3098 | state->offset = 0; | 3100 | state->offset = 0; |
| 3099 | hlist_for_each_entry_rcu_bh(ifa, n, | 3101 | hlist_for_each_entry_rcu_bh(ifa, n, |
| 3100 | &inet6_addr_lst[state->bucket], addr_lst) { | 3102 | &inet6_addr_lst[state->bucket], addr_lst) { |
| 3103 | if (!net_eq(dev_net(ifa->idev->dev), net)) | ||
| 3104 | continue; | ||
| 3101 | state->offset++; | 3105 | state->offset++; |
| 3102 | if (net_eq(dev_net(ifa->idev->dev), net)) | 3106 | return ifa; |
| 3103 | return ifa; | ||
| 3104 | } | 3107 | } |
| 3105 | } | 3108 | } |
| 3106 | 3109 | ||
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c index 57f7de839b03..6773d7803627 100644 --- a/net/sctp/sm_sideeffect.c +++ b/net/sctp/sm_sideeffect.c | |||
| @@ -1642,8 +1642,9 @@ static int sctp_cmd_interpreter(sctp_event_t event_type, | |||
| 1642 | asoc->outqueue.outstanding_bytes; | 1642 | asoc->outqueue.outstanding_bytes; |
| 1643 | sackh.num_gap_ack_blocks = 0; | 1643 | sackh.num_gap_ack_blocks = 0; |
| 1644 | sackh.num_dup_tsns = 0; | 1644 | sackh.num_dup_tsns = 0; |
| 1645 | chunk->subh.sack_hdr = &sackh; | ||
| 1645 | sctp_add_cmd_sf(commands, SCTP_CMD_PROCESS_SACK, | 1646 | sctp_add_cmd_sf(commands, SCTP_CMD_PROCESS_SACK, |
| 1646 | SCTP_SACKH(&sackh)); | 1647 | SCTP_CHUNK(chunk)); |
| 1647 | break; | 1648 | break; |
| 1648 | 1649 | ||
| 1649 | case SCTP_CMD_DISCARD_PACKET: | 1650 | case SCTP_CMD_DISCARD_PACKET: |
