From patchwork Sun Jul 5 04:07:59 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thadeu Lima de Souza Cascardo X-Patchwork-Id: 29463 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail-qy0-f150.google.com (mail-qy0-f150.google.com [209.85.221.150]) by bilbo.ozlabs.org (Postfix) with ESMTP id 72588B6F44 for ; Sun, 5 Jul 2009 14:08:34 +1000 (EST) Received: by qyk14 with SMTP id 14so4750048qyk.29 for ; Sat, 04 Jul 2009 21:08:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=beta; h=domainkey-signature:received:received:x-sender:x-apparently-to :received:received:received-spf:authentication-results:received :received:from:to:cc:subject:date:message-id:x-mailer:reply-to :sender:precedence:x-google-loop:mailing-list:list-id:list-post :list-help:list-unsubscribe:x-beenthere-env:x-beenthere; bh=my5GrRLrSiI3VU0z2/OSiXrO77IagGUsRrDGsa95pxs=; b=NWcBAuSx6q0VIwJOdwykiToUGsZ2rXBrg1YmUtgtggUr/Vv1D0Sv9yGRMwRO6nSrON XU2ja5lejkWO80AhJeHbd6y27sx+uv0f2kcgjABP50BTKAeSQnUqhyiBuyEV08yOg+kS yQgvVJlwwaqO+lpYZx9f6XEaqRq8Ko/WG24PM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlegroups.com; s=beta; h=x-sender:x-apparently-to:received-spf:authentication-results:from :to:cc:subject:date:message-id:x-mailer:reply-to:sender:precedence :x-google-loop:mailing-list:list-id:list-post:list-help :list-unsubscribe:x-beenthere-env:x-beenthere; b=Oz7952JrRZpxG2ihDjk0T7r8fRYv6ehSja5/T84DS9Sr38kYmxHU6/Si2wHyfIPw8X Am6N3xBlKkGDx2tJJJlI7D2Ixp3boc51XifJ7/QRblwsIWC6U+XjZvN3GANKi7cXmQHR 0QRRnqgp1wQNSmWnOhTbG+aPnuLwG+snTPbf0= Received: by 10.151.103.1 with SMTP id f1mr440580ybm.2.1246766908427; Sat, 04 Jul 2009 21:08:28 -0700 (PDT) Received: by 10.177.69.19 with SMTP id w19gr2548yqk.0; Sat, 04 Jul 2009 21:08:28 -0700 (PDT) X-Sender: cascardo@minaslivre.org X-Apparently-To: rtc-linux@googlegroups.com Received: by 10.151.125.1 with SMTP id c1mr1092102ybn.11.1246766907464; Sat, 04 Jul 2009 21:08:27 -0700 (PDT) Received: from liberdade.minaslivre.org (liberdade.minaslivre.org [72.232.18.203]) by gmr-mx.google.com with ESMTP id 16si1006125gxk.5.2009.07.04.21.08.27; Sat, 04 Jul 2009 21:08:27 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of cascardo@minaslivre.org designates 72.232.18.203 as permitted sender) client-ip=72.232.18.203; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: best guess record for domain of cascardo@minaslivre.org designates 72.232.18.203 as permitted sender) smtp.mail=cascardo@minaslivre.org Received: from vespa.holoscopio.com (unknown [187.42.45.91]) by liberdade.minaslivre.org (Postfix) with ESMTPSA id D82BD198349; Sun, 5 Jul 2009 01:18:40 -0300 (BRT) Received: by vespa.holoscopio.com (Postfix, from userid 1000) id D011EC20F; Sun, 5 Jul 2009 01:08:01 -0300 (BRT) From: Thadeu Lima de Souza Cascardo To: rtc-linux@googlegroups.com Cc: linux-kernel@vger.kernel.org, dbrownell@users.sourceforge.net, bjorn.helgaas@hp.com, Thadeu Lima de Souza Cascardo Subject: [rtc-linux] [PATCH] RTC: mark if rtc-cmos drivers were successfully registered. Date: Sun, 5 Jul 2009 01:07:59 -0300 Message-Id: <1246766879-5784-1-git-send-email-cascardo@holoscopio.com> X-Mailer: git-send-email 1.6.3 Reply-To: rtc-linux@googlegroups.com Sender: rtc-linux@googlegroups.com Precedence: bulk X-Google-Loop: groups Mailing-List: list rtc-linux@googlegroups.com; contact rtc-linux+owner@googlegroups.com List-Id: List-Post: List-Help: List-Unsubscribe: , X-BeenThere-Env: rtc-linux@googlegroups.com X-BeenThere: rtc-linux@googlegroups.com rtc-cmos has two drivers, one PNP and one platform. When PNP has not succeeded probing, platform is registered. However, it tries to unregister both drivers unconditionally, instead of only unregistering those that were successfully registered. Fix that with a boolean variable for each driver indicating whether registering was successful. Signed-off-by: Thadeu Lima de Souza Cascardo --- drivers/rtc/rtc-cmos.c | 23 ++++++++++++++++++----- 1 files changed, 18 insertions(+), 5 deletions(-) diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c index 23e10b6..f7a4701 100644 --- a/drivers/rtc/rtc-cmos.c +++ b/drivers/rtc/rtc-cmos.c @@ -1174,23 +1174,34 @@ static struct platform_driver cmos_platform_driver = { } }; +#ifdef CONFIG_PNP +static bool pnp_driver_registered; +#endif +static bool platform_driver_registered; + static int __init cmos_init(void) { int retval = 0; #ifdef CONFIG_PNP - pnp_register_driver(&cmos_pnp_driver); + retval = pnp_register_driver(&cmos_pnp_driver); + if (retval == 0) + pnp_driver_registered = true; #endif - if (!cmos_rtc.dev) + if (!cmos_rtc.dev) { retval = platform_driver_probe(&cmos_platform_driver, cmos_platform_probe); + if (retval == 0) + platform_driver_registered = true; + } if (retval == 0) return 0; #ifdef CONFIG_PNP - pnp_unregister_driver(&cmos_pnp_driver); + if (pnp_driver_registered) + pnp_unregister_driver(&cmos_pnp_driver); #endif return retval; } @@ -1199,9 +1210,11 @@ module_init(cmos_init); static void __exit cmos_exit(void) { #ifdef CONFIG_PNP - pnp_unregister_driver(&cmos_pnp_driver); + if (pnp_driver_registered) + pnp_unregister_driver(&cmos_pnp_driver); #endif - platform_driver_unregister(&cmos_platform_driver); + if (platform_driver_registered) + platform_driver_unregister(&cmos_platform_driver); } module_exit(cmos_exit);