From patchwork Thu Oct 16 07:55:20 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dan Carpenter X-Patchwork-Id: 400182 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail-ob0-x238.google.com (mail-ob0-x238.google.com [IPv6:2607:f8b0:4003:c01::238]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 1DB661400A8 for ; Thu, 16 Oct 2014 18:55:44 +1100 (AEDT) Received: by mail-ob0-f184.google.com with SMTP id uz6sf400009obc.21 for ; Thu, 16 Oct 2014 00:55:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20120806; h=date:from:to:cc:subject:message-id:mime-version:user-agent :x-original-sender:x-original-authentication-results:reply-to :precedence:mailing-list:list-id:list-post:list-help:list-archive :sender:list-subscribe:list-unsubscribe:content-type :content-disposition; bh=0VXdilWHuU+Rq509fPW7ge+sL1CcPM1nyNeEQndFFbk=; b=WYTzZD06Pucm0AVYiIva5lJdxKxDbSHS2tCUCfPTFSoBoaxJv2/sxMTTi2GliqeIs1 Ug59qovPS8dK5qFbtIXHB7olD834Q/gDT8Uh61fF3/gmEEfng1jg+yX7vqLtEQyFfcc5 1xxK0QYkndNEVfTLsaJRUKoEAWTrnO/CGHKZKrkcvQV5cM1ukPGsKZHeeFh44GnoNQcV JfNvweBgjgQvcHM01gmTJqpGNnQzXw1iEhSB/L6j/8+4jHwPTo0syo5saVVnltk5sh4d Oxca0aGNfmXmqqRC/GejFRrnhpOnhjxF7IEeLoz8ACCq7Hb3sOhOXyGBqgGe6CqRU2bm qRDA== X-Received: by 10.182.234.68 with SMTP id uc4mr6009obc.18.1413446142145; Thu, 16 Oct 2014 00:55:42 -0700 (PDT) X-BeenThere: rtc-linux@googlegroups.com Received: by 10.182.80.130 with SMTP id r2ls290602obx.80.gmail; Thu, 16 Oct 2014 00:55:41 -0700 (PDT) X-Received: by 10.182.241.2 with SMTP id we2mr12705287obc.38.1413446141833; Thu, 16 Oct 2014 00:55:41 -0700 (PDT) Received: from aserp1040.oracle.com (aserp1040.oracle.com. [141.146.126.69]) by gmr-mx.google.com with ESMTPS id fx11si610429pdb.2.2014.10.16.00.55.41 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Thu, 16 Oct 2014 00:55:41 -0700 (PDT) Received-SPF: pass (google.com: domain of dan.carpenter@oracle.com designates 141.146.126.69 as permitted sender) client-ip=141.146.126.69; Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s9G7tc9D027652 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 16 Oct 2014 07:55:39 GMT Received: from userz7022.oracle.com (userz7022.oracle.com [156.151.31.86]) by ucsinet22.oracle.com (8.14.5+Sun/8.14.5) with ESMTP id s9G7tYMx011478 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 16 Oct 2014 07:55:37 GMT Received: from abhmp0013.oracle.com (abhmp0013.oracle.com [141.146.116.19]) by userz7022.oracle.com (8.14.5+Sun/8.14.4) with ESMTP id s9G7tXZa011431; Thu, 16 Oct 2014 07:55:34 GMT Received: from mwanda (/41.202.233.183) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 16 Oct 2014 00:55:33 -0700 Date: Thu, 16 Oct 2014 10:55:20 +0300 From: Dan Carpenter To: Alessandro Zummo , Stanimir Varbanov , Andrew Morton Cc: Grant Likely , Rob Herring , rtc-linux@googlegroups.com, kernel-janitors@vger.kernel.org Subject: [rtc-linux] [patch -mm] rtc: pm8xxx: unlock on error in pm8xxx_rtc_set_time() Message-ID: <20141016075520.GA29096@mwanda> MIME-Version: 1.0 User-Agent: Mutt/1.5.21 (2010-09-15) X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-Original-Sender: dan.carpenter@oracle.com X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of dan.carpenter@oracle.com designates 141.146.126.69 as permitted sender) smtp.mail=dan.carpenter@oracle.com Reply-To: rtc-linux@googlegroups.com Precedence: list Mailing-list: list rtc-linux@googlegroups.com; contact rtc-linux+owners@googlegroups.com List-ID: X-Google-Group-Id: 712029733259 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , Content-Disposition: inline We recently added a new error path to this function and it is missing an unlock. Fixes: 798187920a6e ('drivers/rtc/rtc-pm8xxx.c: rework to support pm8941 rtc') Signed-off-by: Dan Carpenter diff --git a/drivers/rtc/rtc-pm8xxx.c b/drivers/rtc/rtc-pm8xxx.c index af88817..dd98895 100644 --- a/drivers/rtc/rtc-pm8xxx.c +++ b/drivers/rtc/rtc-pm8xxx.c @@ -86,6 +86,7 @@ static int pm8xxx_rtc_set_time(struct device *dev, struct rtc_time *tm) unsigned int ctrl_reg; struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev); const struct pm8xxx_rtc_regs *regs = rtc_dd->regs; + int locked; if (!rtc_dd->allow_set_time) return -EACCES; @@ -100,6 +101,7 @@ static int pm8xxx_rtc_set_time(struct device *dev, struct rtc_time *tm) dev_dbg(dev, "Seconds value to be written to RTC = %lu\n", secs); spin_lock_irqsave(&rtc_dd->ctrl_reg_lock, irq_flags); + locked = 1; rc = regmap_read(rtc_dd->regmap, regs->ctrl, &ctrl_reg); if (rc) @@ -115,6 +117,7 @@ static int pm8xxx_rtc_set_time(struct device *dev, struct rtc_time *tm) } } else { spin_unlock_irqrestore(&rtc_dd->ctrl_reg_lock, irq_flags); + locked = 0; } /* Write 0 to Byte[0] */ @@ -149,7 +152,7 @@ static int pm8xxx_rtc_set_time(struct device *dev, struct rtc_time *tm) } rtc_rw_fail: - if (alarm_enabled) + if (locked) spin_unlock_irqrestore(&rtc_dd->ctrl_reg_lock, irq_flags); return rc;