From 55754e036e630e40705fa0af1f7b68930434153f Mon Sep 17 00:00:00 2001 From: YOSHIFUJI Hideaki Date: Sat, 13 Mar 2010 12:27:21 -0800 Subject: [PATCH] --- yaml --- r: 188013 b: refs/heads/master c: bec68ff1637ca00bb1585a03a7be8a13380084de h: refs/heads/master i: 188011: de5fa2aa7d4e3acd3868ab7a471e3adc1c75e9ae v: v3 --- [refs] | 2 +- trunk/net/bridge/br_multicast.c | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index f5aa45383ab6..d2adaabf8ac0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c251c7f738cd94eb3a1febda318078c661eccb4d +refs/heads/master: bec68ff1637ca00bb1585a03a7be8a13380084de diff --git a/trunk/net/bridge/br_multicast.c b/trunk/net/bridge/br_multicast.c index 12ce1eaa4f3e..fd96a8dc97f4 100644 --- a/trunk/net/bridge/br_multicast.c +++ b/trunk/net/bridge/br_multicast.c @@ -823,6 +823,7 @@ static int br_multicast_query(struct net_bridge *br, unsigned long max_delay; unsigned long now = jiffies; __be32 group; + int err = 0; spin_lock(&br->multicast_lock); if (!netif_running(br->dev) || @@ -841,12 +842,14 @@ static int br_multicast_query(struct net_bridge *br, group = 0; } } else { - if (!pskb_may_pull(skb, sizeof(struct igmpv3_query))) - return -EINVAL; + if (!pskb_may_pull(skb, sizeof(struct igmpv3_query))) { + err = -EINVAL; + goto out; + } ih3 = igmpv3_query_hdr(skb); if (ih3->nsrcs) - return 0; + goto out; max_delay = ih3->code ? 1 : IGMPV3_MRC(ih3->code) * (HZ / IGMP_TIMER_SCALE); @@ -876,7 +879,7 @@ static int br_multicast_query(struct net_bridge *br, out: spin_unlock(&br->multicast_lock); - return 0; + return err; } static void br_multicast_leave_group(struct net_bridge *br,