diff options
author | Amit Pundir <amit.pundir@linaro.org> | 2014-11-24 09:49:27 +0530 |
---|---|---|
committer | Amit Pundir <amit.pundir@linaro.org> | 2014-11-24 09:49:27 +0530 |
commit | 604f5b50c1fcd45ffa6aaa331544dd689a1ac8a1 (patch) | |
tree | ffc777db60b65cd7f22da47d9b780177171b1f67 | |
parent | 81a9e6025aee0fc52ee4995cc9f452a4dccee8b2 (diff) | |
parent | 4cbfc67a5b390c8d6c881ebc6e67b0473a8eb8ea (diff) |
Merge branch 'linaro-fixes/experimental/linaro-android-3.14' into v3.18.0-rc4tracking-linaro-android-3.18-llct-20141204.0tracking-linaro-android-3.18-llct-20141201.0tracking-linaro-android-3.18-llct-20141127.0
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Conflicts:
kernel/futex.c
net/bridge/br_device.c
-rw-r--r-- | net/bridge/br_device.c | 11 | ||||
-rw-r--r-- | net/netfilter/xt_qtaguid.c | 11 |
2 files changed, 12 insertions, 10 deletions
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c index ffd379db5938..cd577aca202f 100644 --- a/net/bridge/br_device.c +++ b/net/bridge/br_device.c @@ -44,11 +44,6 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev) } #endif - u64_stats_update_begin(&brstats->syncp); - brstats->tx_packets++; - brstats->tx_bytes += skb->len; - u64_stats_update_end(&brstats->syncp); - BR_INPUT_SKB_CB(skb)->brdev = dev; skb_reset_mac_header(skb); @@ -57,6 +52,12 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev) if (!br_allowed_ingress(br, br_get_vlan_info(br), skb, &vid)) goto out; + u64_stats_update_begin(&brstats->syncp); + brstats->tx_packets++; + /* Exclude ETH_HLEN from byte stats for consistency with Rx chain */ + brstats->tx_bytes += skb->len; + u64_stats_update_end(&brstats->syncp); + if (is_broadcast_ether_addr(dest)) br_flood_deliver(br, skb, false); else if (is_multicast_ether_addr(dest)) { diff --git a/net/netfilter/xt_qtaguid.c b/net/netfilter/xt_qtaguid.c index fcd2d8125954..f0a670aa9864 100644 --- a/net/netfilter/xt_qtaguid.c +++ b/net/netfilter/xt_qtaguid.c @@ -1605,7 +1605,8 @@ static struct sock *qtaguid_find_sk(const struct sk_buff *skb, * "struct inet_timewait_sock" which is missing fields. */ if (sk->sk_state == TCP_TIME_WAIT) { - sock_gen_put(sk); + if (sk != skb->sk) + sock_gen_put(sk); sk = NULL; } } @@ -1773,8 +1774,8 @@ static bool qtaguid_mt(const struct sk_buff *skb, struct xt_action_param *par) kuid_t uid_min = make_kuid(&init_user_ns, info->uid_min); kuid_t uid_max = make_kuid(&init_user_ns, info->uid_max); - if (uid_gte(filp->f_cred->fsuid, uid_min) && - uid_lte(filp->f_cred->fsuid, uid_max) ^ + if ((uid_gte(filp->f_cred->fsuid, uid_min) && + uid_lte(filp->f_cred->fsuid, uid_max)) ^ !(info->invert & XT_QTAGUID_UID)) { MT_DEBUG("qtaguid[%d]: leaving uid not matching\n", par->hooknum); @@ -1786,8 +1787,8 @@ static bool qtaguid_mt(const struct sk_buff *skb, struct xt_action_param *par) kgid_t gid_min = make_kgid(&init_user_ns, info->gid_min); kgid_t gid_max = make_kgid(&init_user_ns, info->gid_max); - if (gid_gte(filp->f_cred->fsgid, gid_min) && - gid_lte(filp->f_cred->fsgid, gid_max) ^ + if ((gid_gte(filp->f_cred->fsgid, gid_min) && + gid_lte(filp->f_cred->fsgid, gid_max)) ^ !(info->invert & XT_QTAGUID_GID)) { MT_DEBUG("qtaguid[%d]: leaving gid not matching\n", par->hooknum); |