From patchwork Wed Dec 19 22:37:25 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Morton X-Patchwork-Id: 207534 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail-qc0-f192.google.com (mail-qc0-f192.google.com [209.85.216.192]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority" (not verified)) by ozlabs.org (Postfix) with ESMTPS id B71912C0080 for ; Thu, 20 Dec 2012 09:37:31 +1100 (EST) Received: by mail-qc0-f192.google.com with SMTP id c21sf1431892qcs.9 for ; Wed, 19 Dec 2012 14:37:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20120806; h=x-received:x-beenthere:x-received:x-received:received-spf:date:from :to:cc:subject:message-id:in-reply-to:references:x-mailer :mime-version:x-original-sender:x-original-authentication-results :reply-to:precedence:mailing-list:list-id:x-google-group-id :list-post:list-help:list-archive:sender:list-subscribe :list-unsubscribe:content-type; bh=xX9IgBVY2TNXnmcCx55Jkc9o6NCpOus5X4pxn1kvf5o=; b=kWtr9SrkdG5iBrdq6TT1/aJmr+X4mcloRWag9mPgOPIyb8M+Aaj7buebNev4YO2UPf BwrmVh8lDfI1lywRWTV+GXB9Bi1ek0Zk+3h8ei4RI6jjxZTsPtTVyYoDEA96BzKD0qdR PGpVY8+B/rebAJlQUQ+ag5XuQ6kh4haeoUb1frVpZ6XnoJQ9Zbbog/gzdQBpxmnDeIoQ 1s0I67uuTxa17ykWRrh3BQtbaBUOXEey2yPQLLOgGOa2BrzxCrbq/qM2eSNloEie1ZY1 TNFU3X96wrumY5aGHhUOXygWGAwiQ9Ypb8fKJXUB4CzAkmYY9HdfzKBYLiCiioCRApWd kMRw== X-Received: by 10.50.0.204 with SMTP id 12mr3248892igg.9.1355956648394; Wed, 19 Dec 2012 14:37:28 -0800 (PST) X-BeenThere: rtc-linux@googlegroups.com Received: by 10.50.155.166 with SMTP id vx6ls5370111igb.36.canary; Wed, 19 Dec 2012 14:37:26 -0800 (PST) X-Received: by 10.66.84.136 with SMTP id z8mr926445pay.2.1355956646855; Wed, 19 Dec 2012 14:37:26 -0800 (PST) X-Received: by 10.66.84.136 with SMTP id z8mr926443pay.2.1355956646841; Wed, 19 Dec 2012 14:37:26 -0800 (PST) Received: from mail.linuxfoundation.org (mail.linuxfoundation.org. [140.211.169.12]) by gmr-mx.google.com with ESMTP id bv9si1405000pab.1.2012.12.19.14.37.26; Wed, 19 Dec 2012 14:37:26 -0800 (PST) Received-SPF: pass (google.com: domain of akpm@linux-foundation.org designates 140.211.169.12 as permitted sender) client-ip=140.211.169.12; Received: from akpm.mtv.corp.google.com (unknown [216.239.45.90]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 592D626; Wed, 19 Dec 2012 22:37:26 +0000 (UTC) Date: Wed, 19 Dec 2012 14:37:25 -0800 From: Andrew Morton To: Alexander Holler Cc: Vincent Palatin , rtc-linux@googlegroups.com, Alessandro Zummo , linux-kernel@vger.kernel.org, Lothar =?ISO-8859-1?Q?Wa=DFmann?= Subject: Re: [rtc-linux] [PATCH] rtc: recycle id when unloading a rtc driver Message-Id: <20121219143725.3f49598c.akpm@linux-foundation.org> In-Reply-To: <50D180E6.3010305@ahsoftware.de> References: <1343951605-25722-1-git-send-email-vpalatin@chromium.org> <20121218164659.a3d3655a.akpm@linux-foundation.org> <50D16EA3.8040803@ahsoftware.de> <20121218234543.786a2211.akpm@linux-foundation.org> <50D1730D.7010108@ahsoftware.de> <20121219002722.87438a08.akpm@linux-foundation.org> <50D180E6.3010305@ahsoftware.de> X-Mailer: Sylpheed 3.0.2 (GTK+ 2.20.1; x86_64-pc-linux-gnu) Mime-Version: 1.0 X-Original-Sender: akpm@linux-foundation.org X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of akpm@linux-foundation.org designates 140.211.169.12 as permitted sender) smtp.mail=akpm@linux-foundation.org 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: Sender: rtc-linux@googlegroups.com List-Subscribe: , List-Unsubscribe: , On Wed, 19 Dec 2012 09:55:02 +0100 Alexander Holler wrote: > Am 19.12.2012 09:27, schrieb Andrew Morton: > > On Wed, 19 Dec 2012 08:55:57 +0100 Alexander Holler wrote: > > > >>> > >>> I'm all confused. > >>> > >>> Lothar's patch simply reverts Vincent's patch. And that appears to be > >>> the correct thing to so, as the ida_simple_remove() in > >>> rtc_device_release() should be sufficient. > >>> > >>> But apparently that doesn't work, because Vincent was seeing the RTC > >>> ID's increment rather than getting reused. > >>> > >>> Is it the case that rtc_device_release() is not being called sometimes? > >>> If so, under what circumstances? > >> > >> Maybe something (sysfs or whatever) still has a reference to it. Vincent > >> should check that. > >> > >> But I'm sure the ID will be recycled with that put_device() in > >> unregister because I've got the same warning as Lothar did when > >> (porperly) removing an RTC (with kernel 3.7). > > > > If, as appears to be the case, rtc_device_release() is not being called > > then we're also leaking memory. So yes please, it would be good if > > someone who can reproduce the IDs-dont-decrease problem could dive in > > and work out why ->release() isn't begin called. > > Unlikely, as I've worked hard to get one of the first drivers for > pluggable RTCs into the kernel. ;) > I think every sane kernel has them statically linked in and it's likely > a problem of the RTC-driver Vincent experienced that with. > I think I'll do this: From: Andrew Morton Subject: revert "rtc: recycle id when unloading a rtc driver" Revert commit 2830a6d20139df2198d63235df7957712adb28e5 Author: Vincent Palatin Date: Thu Oct 4 17:13:52 2012 -0700 rtc: recycle id when unloading a rtc driver We already perform the ida_simple_remove() in rtc_device_release(), which is an appropriate place. 2830a6d20 ("rtc: recycle id when unloading a rtc driver") caused the kernel to emit ida_remove called for id=0 which is not allocated. warnings when rtc_device_release() tries to release an alread-released ID. Let's restore things to their previous state and then work out why Vincent's kernel wasn't calling rtc_device_release() - presumably a bug in a specific sub-driver. Reported-by: Lothar Wa_mann Acked-by: Alexander Holler Cc: Vincent Palatin Cc: [3.7.x] Signed-off-by: Andrew Morton --- drivers/rtc/class.c | 1 - 1 file changed, 1 deletion(-) diff -puN drivers/rtc/class.c~revert-rtc-recycle-id-when-unloading-a-rtc-driver drivers/rtc/class.c --- a/drivers/rtc/class.c~revert-rtc-recycle-id-when-unloading-a-rtc-driver +++ a/drivers/rtc/class.c @@ -244,7 +244,6 @@ void rtc_device_unregister(struct rtc_de rtc_proc_del_device(rtc); device_unregister(&rtc->dev); rtc->ops = NULL; - ida_simple_remove(&rtc_ida, rtc->id); mutex_unlock(&rtc->ops_lock); put_device(&rtc->dev); }