From patchwork Wed Mar 10 05:09:08 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 47211 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 7D78FB7D4B for ; Wed, 10 Mar 2010 16:09:20 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751617Ab0CJFJQ (ORCPT ); Wed, 10 Mar 2010 00:09:16 -0500 Received: from mail-bw0-f209.google.com ([209.85.218.209]:60990 "EHLO mail-bw0-f209.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750835Ab0CJFJO (ORCPT ); Wed, 10 Mar 2010 00:09:14 -0500 Received: by bwz1 with SMTP id 1so4616936bwz.21 for ; Tue, 09 Mar 2010 21:09:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:subject:from:to:cc :content-type:date:message-id:mime-version:x-mailer :content-transfer-encoding; bh=RpcHq80P4TKCPhrONDLMAZ0F/MLt5NPJhIAer0+Wb1s=; b=KcQevviPZSr7U+o7kZMeAxoBEgGKGsAEh4xXxtrDOsnBIInL6ONtMs6v7fFzJVfidm ikkgmLqMcEA/jTaYaU4WloN2RuiICenx0wQ/MyTH4ROx0RDfC++WlygDZCssgap8SAw9 bGtULecWxA2Z30o7E9KZ2SiwoV7Vabrm2V5A8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=subject:from:to:cc:content-type:date:message-id:mime-version :x-mailer:content-transfer-encoding; b=PyXEgsj19DNOVjo+0oCso5VGRlnFJ8tm1hf65GBEk72ZelcGU8M6h8qUlo7Kqnyj2J lmyKbGsb7cnFp5NDE53vbRsx79NttpQfn0s7ZFJ+gxy3C8fLkedgXnnjEl/mva6WRRHB IKJqlFH5nICoS0J4uVil0hw4XmK4QQADHLmTA= Received: by 10.204.129.218 with SMTP id p26mr854851bks.145.1268197753220; Tue, 09 Mar 2010 21:09:13 -0800 (PST) Received: from [127.0.0.1] (gw1.cosmosbay.com [212.99.114.194]) by mx.google.com with ESMTPS id 14sm3005876bwz.10.2010.03.09.21.09.11 (version=SSLv3 cipher=RC4-MD5); Tue, 09 Mar 2010 21:09:12 -0800 (PST) Subject: [PATCH] net: Fix dev_mc_add() From: Eric Dumazet To: David Miller Cc: netdev , Jiri Pirko Date: Wed, 10 Mar 2010 06:09:08 +0100 Message-ID: <1268197748.2872.129.camel@edumazet-laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.28.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Commit 6e17d45a (net: add addr len check to dev_mc_add) added a bug in dev_mc_add(), since it can now exit with a lock imbalance. Signed-off-by: Eric Dumazet CC: Jiri Pirko --- -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/net/core/dev_mcast.c b/net/core/dev_mcast.c index fd91569..3dc295b 100644 --- a/net/core/dev_mcast.c +++ b/net/core/dev_mcast.c @@ -97,8 +97,9 @@ int dev_mc_add(struct net_device *dev, void *addr, int alen, int glbl) netif_addr_lock_bh(dev); if (alen != dev->addr_len) - return -EINVAL; - err = __dev_addr_add(&dev->mc_list, &dev->mc_count, addr, alen, glbl); + err = -EINVAL; + else + err = __dev_addr_add(&dev->mc_list, &dev->mc_count, addr, alen, glbl); if (!err) __dev_set_rx_mode(dev); netif_addr_unlock_bh(dev);