From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753493AbbGKHMg (ORCPT ); Sat, 11 Jul 2015 03:12:36 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:40036 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752734AbbGKHMf (ORCPT ); Sat, 11 Jul 2015 03:12:35 -0400 Date: Fri, 10 Jul 2015 17:03:43 -0700 From: Greg Kroah-Hartman To: Johannes Thumshirn Cc: "Hans J. Koch" , linux-kernel@vger.kernel.org Subject: Re: [PATCH] uio: Destroy uio_idr on module exit Message-ID: <20150711000343.GA30309@kroah.com> References: <1436369086-31231-1-git-send-email-jthumshirn@suse.de> <20150708172430.GA14727@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23+89 (0255b37be491) (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jul 09, 2015 at 08:48:36AM +0200, Johannes Thumshirn wrote: > Greg Kroah-Hartman writes: > > > On Wed, Jul 08, 2015 at 05:24:46PM +0200, Johannes Thumshirn wrote: > >> Destroy uio_idr on module exit, reclaiming the allocated memory. > >> > >> This was detected by the following semantic patch (written by Luis Rodriguez > >> ) > >> > >> @ defines_module_init @ > >> declarer name module_init, module_exit; > >> declarer name DEFINE_IDR; > >> identifier init; > >> @@ > >> > >> module_init(init); > >> > >> @ defines_module_exit @ > >> identifier exit; > >> @@ > >> > >> module_exit(exit); > >> > >> @ declares_idr depends on defines_module_init && defines_module_exit @ > >> identifier idr; > >> @@ > >> > >> DEFINE_IDR(idr); > >> > >> @ on_exit_calls_destroy depends on declares_idr && defines_module_exit @ > >> identifier declares_idr.idr, defines_module_exit.exit; > >> @@ > >> > >> exit(void) > >> { > >> ... > >> idr_destroy(&idr); > >> ... > >> } > >> > >> @ missing_module_idr_destroy depends on declares_idr && defines_module_exit && !on_exit_calls_destroy @ > >> identifier declares_idr.idr, defines_module_exit.exit; > >> @@ > >> > >> exit(void) > >> { > >> ... > >> +idr_destroy(&idr); > >> } > >> > >> > >> > >> Signed-off-by: Johannes Thumshirn > > > > Nice work. Shouldn't we do the same thing for ida_destroy() as well? I > > see 4 USB drivers that need this same fix for that structure. > > > > Can you tell me which? I've send overall 13 patches for this (no series > as get_maintainers.pl for the series spit out > 30 Recipients so I > refused to send spam). > > Maybe/probably I forgot one (or two). You need to look for "ida_destroy" not just "idr_destroy", here's the ones I found in just a few seconds of looking: ~/linux/gregkh $ cd drivers/usb/ ~/linux/gregkh/drivers/usb $ cg ida_destroy ~/linux/gregkh/drivers/usb $ cg DEFINE_IDA 0 chipidea/core.c 597 static DEFINE_IDA(ci_ida); 1 gadget/function/f_hid.c 31 static DEFINE_IDA(hidg_ida); 2 gadget/function/f_printer.c 60 static DEFINE_IDA(printer_ida); 3 gadget/function/rndis.c 67 static DEFINE_IDA(rndis_ida); There's 4 users that never free memory when the module is unloaded for the ida structure. thanks, greg k-h