소스 검색

bridge: Move NULL mdb check into br_mdb_ip_get

Since all callers of br_mdb_ip_get need to check whether the
hash table is NULL, this patch moves the check into the function.

This fixes the two callers (query/leave handler) that didn't
check it.

Reported-by: Michael Braun <michael-dev@fami-braun.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Herbert Xu 15 년 전
부모
커밋
0821ec55bb
1개의 변경된 파일5개의 추가작업 그리고 4개의 파일을 삭제
  1. 5 4
      net/bridge/br_multicast.c

+ 5 - 4
net/bridge/br_multicast.c

@@ -49,22 +49,23 @@ static struct net_bridge_mdb_entry *__br_mdb_ip_get(
 static struct net_bridge_mdb_entry *br_mdb_ip_get(
 static struct net_bridge_mdb_entry *br_mdb_ip_get(
 	struct net_bridge_mdb_htable *mdb, __be32 dst)
 	struct net_bridge_mdb_htable *mdb, __be32 dst)
 {
 {
+	if (!mdb)
+		return NULL;
+
 	return __br_mdb_ip_get(mdb, dst, br_ip_hash(mdb, dst));
 	return __br_mdb_ip_get(mdb, dst, br_ip_hash(mdb, dst));
 }
 }
 
 
 struct net_bridge_mdb_entry *br_mdb_get(struct net_bridge *br,
 struct net_bridge_mdb_entry *br_mdb_get(struct net_bridge *br,
 					struct sk_buff *skb)
 					struct sk_buff *skb)
 {
 {
-	struct net_bridge_mdb_htable *mdb = br->mdb;
-
-	if (!mdb || br->multicast_disabled)
+	if (br->multicast_disabled)
 		return NULL;
 		return NULL;
 
 
 	switch (skb->protocol) {
 	switch (skb->protocol) {
 	case htons(ETH_P_IP):
 	case htons(ETH_P_IP):
 		if (BR_INPUT_SKB_CB(skb)->igmp)
 		if (BR_INPUT_SKB_CB(skb)->igmp)
 			break;
 			break;
-		return br_mdb_ip_get(mdb, ip_hdr(skb)->daddr);
+		return br_mdb_ip_get(br->mdb, ip_hdr(skb)->daddr);
 	}
 	}
 
 
 	return NULL;
 	return NULL;