From patchwork Sat Apr 23 22:04:31 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Francesco Ruggeri X-Patchwork-Id: 614106 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 3qsmjz3289z9s48 for ; Sun, 24 Apr 2016 08:04:39 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=arista.com header.i=@arista.com header.b=dNCf9dE2; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752347AbcDWWEf (ORCPT ); Sat, 23 Apr 2016 18:04:35 -0400 Received: from prod-mx.aristanetworks.com ([162.210.130.12]:3626 "EHLO prod-mx.aristanetworks.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752309AbcDWWEe (ORCPT ); Sat, 23 Apr 2016 18:04:34 -0400 Received: from prod-mx.aristanetworks.com (localhost [127.0.0.1]) by prod-mx.aristanetworks.com (Postfix) with ESMTP id A9C961403; Sat, 23 Apr 2016 15:04:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arista.com; s=AristaCom; t=1461449073; bh=SbsaXacTfYVDi8eUJSSPJjA0+qqRnX6x3T0YOtZsTFE=; h=From:To:Cc:Subject:Date; b=dNCf9dE2qIaPoLwEzKRbI4CkLwe6WSzrFySgChvN3sgt5iBUBs37De5T44w5QJMdc NZggDPw1+gxremxFhOc6hZ4b0bcJLZaMkPgNcVGsWq4i5s2tyCkbLO5LI5CmJuq0p8 37Z2SgamE2NjqinwRRL1Ibxz5aFETRljALy/jteg= Received: from fruggeri-Arora18-1.sjc.aristanetworks.com (unknown [10.95.0.201]) by prod-mx.aristanetworks.com (Postfix) with ESMTP id 9D4D113FF; Sat, 23 Apr 2016 15:04:33 -0700 (PDT) Received: by fruggeri-Arora18-1.sjc.aristanetworks.com (Postfix, from userid 10189) id 60782203FF3; Sat, 23 Apr 2016 15:04:33 -0700 (PDT) From: Francesco Ruggeri To: netdev@vger.kernel.org Cc: Francesco Ruggeri , "Eric W. Biederman" , "David S. Miller" Subject: [PATCH net-next] macvtap: check minor when unregistering Date: Sat, 23 Apr 2016 15:04:31 -0700 Message-Id: <1461449071-7499-1-git-send-email-fruggeri@arista.com> X-Mailer: git-send-email 1.8.1.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org macvtap_device_event(NETDEV_UNREGISTER) should check vlan->minor to determine if it is being invoked in the context of a macvtap_newlink that failed, for example in this code sequence: macvtap_newlink macvlan_common_newlink register_netdevice call_netdevice_notifiers(NETDEV_REGISTER, dev) macvtap_device_event(NETDEV_REGISTER) minor = 0> rollback_registered(dev); rollback_registered_many call_netdevice_notifiers(NETDEV_UNREGISTER, dev); macvtap_device_event(NETDEV_UNREGISTER) Signed-off-by: Francesco Ruggeri Acked-by: "Eric W. Biederman" --- drivers/net/macvtap.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c index 95394ed..74cb15a 100644 --- a/drivers/net/macvtap.c +++ b/drivers/net/macvtap.c @@ -1303,6 +1303,9 @@ static int macvtap_device_event(struct notifier_block *unused, } break; case NETDEV_UNREGISTER: + /* vlan->minor == 0 if NETDEV_REGISTER above failed */ + if (vlan->minor == 0) + break; devt = MKDEV(MAJOR(macvtap_major), vlan->minor); device_destroy(macvtap_class, devt); macvtap_free_minor(vlan);