From patchwork Mon Jul 12 14:52:33 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kulikov Vasiliy X-Patchwork-Id: 58619 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 32EEDB6F17 for ; Tue, 13 Jul 2010 00:53:11 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755956Ab0GLOxG (ORCPT ); Mon, 12 Jul 2010 10:53:06 -0400 Received: from mail-vw0-f46.google.com ([209.85.212.46]:59794 "EHLO mail-vw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755814Ab0GLOxD (ORCPT ); Mon, 12 Jul 2010 10:53:03 -0400 Received: by vws5 with SMTP id 5so4453294vws.19 for ; Mon, 12 Jul 2010 07:53:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:date:from:to:cc:subject :message-id:references:mime-version:content-type:content-disposition :in-reply-to:user-agent; bh=SA2M59tXq63+tquVftdbpS4K+F0B5ETuXj95SaDLlPc=; b=ikqe0i6UB2cfaSVoV26B64kaV02YEb4Oit/HfSHJkS1vv9wJnMoZk9w3MWHpZq0Asd vLWnbb8ONizUbdWdiHMubG1wtkafBQmUPAJRojy5i5uVEyZOOp9SBj1B3Sheh0k5gGJ/ HSYDmw8Xnkz7mBktj4wvNZPzvIJ1G8qfQJLnU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; b=xewts2I3QSy8WNN7d9zdBSATBsMmqkyJvZLbwUPdYn3g0BCiWuHZ7rkkV2RRHGKeIr TKHZ/oAigH3G/jSjiqcGTDi4VIJb1qVjC8VkE9pIkZnBklbWBvG/5NlhrfMQKru9qj/m cgTYm+L4bIg+aM2NuMx3akR5dEFOky6EdlBtI= Received: by 10.220.168.10 with SMTP id s10mr7025533vcy.50.1278946382271; Mon, 12 Jul 2010 07:53:02 -0700 (PDT) Received: from localhost ([213.87.88.185]) by mx.google.com with ESMTPS id w1sm371191vbl.18.2010.07.12.07.52.51 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 12 Jul 2010 07:53:01 -0700 (PDT) Date: Mon, 12 Jul 2010 18:52:33 +0400 From: Kulikov Vasiliy To: David Miller Cc: kernel-janitors@vger.kernel.org, jpirko@redhat.com, joe@perches.com, shemminger@vyatta.com, eric.dumazet@gmail.com, netdev@vger.kernel.org Subject: [PATCH v2] depca: fix leaks in depca_module_init() Message-ID: <20100712145233.GA30504@albatros> References: <1278678986-7725-1-git-send-email-segooon@gmail.com> <20100711.181300.58435799.davem@davemloft.net> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20100711.181300.58435799.davem@davemloft.net> User-Agent: Mutt/1.5.20 (2009-06-14) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Since some of xxx_register_driver() can return error we must unregister already registered drivers. Signed-off-by: Kulikov Vasiliy --- drivers/net/depca.c | 29 +++++++++++++++++++++++------ 1 files changed, 23 insertions(+), 6 deletions(-) diff --git a/drivers/net/depca.c b/drivers/net/depca.c index bf66e9b..44c0694 100644 --- a/drivers/net/depca.c +++ b/drivers/net/depca.c @@ -2061,18 +2061,35 @@ static int depca_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) static int __init depca_module_init (void) { - int err = 0; + int err = 0; #ifdef CONFIG_MCA - err = mca_register_driver (&depca_mca_driver); + err = mca_register_driver(&depca_mca_driver); + if (err) + goto err; #endif #ifdef CONFIG_EISA - err |= eisa_driver_register (&depca_eisa_driver); + err = eisa_driver_register(&depca_eisa_driver); + if (err) + goto err_mca; #endif - err |= platform_driver_register (&depca_isa_driver); - depca_platform_probe (); + err = platform_driver_register(&depca_isa_driver); + if (err) + goto err_eisa; - return err; + depca_platform_probe(); + return 0; + +err_eisa: +#ifdef CONFIG_EISA + eisa_driver_unregister(&depca_eisa_driver); +err_mca: +#endif +#ifdef CONFIG_MCA + mca_unregister_driver(&depca_mca_driver); +err: +#endif + return err; } static void __exit depca_module_exit (void)