Received: by 10.213.65.68 with SMTP id h4csp693716imn; Wed, 4 Apr 2018 05:48:51 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+CHvNJMuyQwckJB4p3E3kmK1y5sbkxzV6GiQ6dBK4FL6uZNyPOHqSCtbIY8Y3cA0drkMbz X-Received: by 10.98.234.6 with SMTP id t6mr12604935pfh.38.1522846131292; Wed, 04 Apr 2018 05:48:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522846131; cv=none; d=google.com; s=arc-20160816; b=VIcjXIvbre0OBxs6+GP0jIqmmFqBgQQ/I7Is6rJ+Wcv7fUahleV/brKSs2uAi9NsKl lXlt7Sr9j6g5W3kT1icWkE1e+a0Qwa/VXG2FDJ5iDsjW0EuYbGpSV9FWGKTSWJ0U6TAN /vFs6FcM5x8l7lTDPHEiU56AY36qjdLRo5ab3UzUziCAuTtJ06XJ3OVbR/QS1ZvwvDFG pSDVq8deFlU5MI8eeVtN6MMlH31oXHqDQbRo10GbQ4kZd8Y3iv5vuhJEm0xyVS5iWGMa HHn8DeBjt0T94182ah21G+1PzbpNq31xiXD0VKvGmIUqy6YTxpKLbIdu+xoxWhetGQ+F K5hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=XX4zvoFKqABKkYfkwWh6b/dudiCP9ccMjm3rP97GYro=; b=lCFBcGFQH6sq+PFM08yy/+TaDXv7UmORWfPGPDA/CnpSmK97mSbOo0cjuXZc9z4tFS SVyBG60k5/t+BHnKL0T0u2KmLfujjzECaZBFx2Wc55M/JA1QLXpnrIapiIwMMZYPqPZ/ auqsqqpteoiV9AB/opuZIgyVpzuiMdhi3Q8qXVJFvFQGD5PK5AA0C92gEoG3CWN7mTf3 LEYCjwRums/cTwpAJMyxAkfErm0SeHHFjg/mJU+idrwxJIoziNy6P4FCnkBCn1yZB0Lo Gxh2vki0YLk4XQmG7yr/XaFAANaJTaVXXvUQiBNfJTzuboRr0IqA6FxfwKPGe8QF1+xZ Avcg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=SwzA9PWN; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v14-v6si2543431ply.122.2018.04.04.05.48.37; Wed, 04 Apr 2018 05:48:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=SwzA9PWN; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751647AbeDDMqX (ORCPT + 99 others); Wed, 4 Apr 2018 08:46:23 -0400 Received: from mail-io0-f194.google.com ([209.85.223.194]:44762 "EHLO mail-io0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751265AbeDDMqP (ORCPT ); Wed, 4 Apr 2018 08:46:15 -0400 Received: by mail-io0-f194.google.com with SMTP id d7so26169391ioc.11 for ; Wed, 04 Apr 2018 05:46:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=XX4zvoFKqABKkYfkwWh6b/dudiCP9ccMjm3rP97GYro=; b=SwzA9PWNYV62rw3J/rCVOEuzOd04bWwCntiq00EDcnlp8BP2eBszSapT7l2SvjFAcE sfi5YS1AyowvLxVVF2j1YKPegfNXogg411mMSZpjFzS4yzs2IMqmqW41111uDBPVlcUZ LWkBP3+Fdo2F11vtSutwPkAIvPtUFuDVEOLzI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=XX4zvoFKqABKkYfkwWh6b/dudiCP9ccMjm3rP97GYro=; b=TcWbx98RI1SmK2hsQTTJRj/AN/hoApZDXkL+XDqruffS4HGrap1l0jAuDMijXMfzny W1AUBzcymWX2Nb28IXsEExewxDHmsr/BWq9/V7vfkMkRjypAl3ZZ8JTFv8eyW61/uSUM gpoK+QcsJv9kTSHkfnEXutdfhGmG4eDcTz3Qdjxnuukn86t5I/LxRPdHzeqUmS0NQAIy 35ult7pBUIKVYLXaRcqGkRlXzymNDrRTL//2Q3SO2OlTH2pgcxSKGZ0JKsp6nWlqAnix LN1h30w3G+Mlh6g1z1YCN0UWByLdEs5KEcP8ei0wa3GroWPoD3wzweBrqkSiSHywt/ie sNtQ== X-Gm-Message-State: ALQs6tCUjLRX/TyOKzxSt0uxBheg6Jyi9Lds+/qPoSrBdlviVT/7WOvD KI9+DbOumIU1pSg3FSLJu1inGRHOoeelyVGpbL0A4ezJ X-Received: by 10.107.81.9 with SMTP id f9mr11417017iob.192.1522845975073; Wed, 04 Apr 2018 05:46:15 -0700 (PDT) MIME-Version: 1.0 Received: by 10.2.101.23 with HTTP; Wed, 4 Apr 2018 05:46:14 -0700 (PDT) In-Reply-To: References: <1522275511-7693-1-git-send-email-agk@godking.net> From: Ulf Hansson Date: Wed, 4 Apr 2018 14:46:14 +0200 Message-ID: Subject: Re: [PATCH] [mmc_block] Prevent bus reference leak in mmc_blk_init To: Shawn Lin , Alexander Kappner Cc: Linus Walleij , Adrian Hunter , "linux-mmc@vger.kernel.org" , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 29 March 2018 at 11:52, Shawn Lin wrote: > On 2018/3/29 6:18, Alexander Kappner wrote: >> >> Upon module load, mmc_block allocates a bus with bus_register in >> mmc_blk_init. This reference never gets freed during module unload. >> Subsequent re-insertions of the module fail and BUG() is triggered: > > > WARN() is triggered. > >> >> [ 84.583342] sysfs: cannot create duplicate filename '/bus/mmc_rpmb' >> >> [ 84.583373] CPU: 6 PID: 1825 Comm: modprobe Tainted: P O >> 4.16.0-rc6-00384-gf36b753 #30 >> [ 84.583381] Hardware name: LENOVO 20ENCTO1WW/20ENCTO1WW, BIOS N1EET62W >> (1.35 ) 11/10/2016 >> [ 84.583385] Call Trace: >> [ 84.583401] dump_stack+0x5a/0x75 >> [ 84.583411] sysfs_warn_dup+0x58/0x70 >> [ 84.583419] sysfs_create_dir_ns+0x70/0x80 >> [ 84.583437] kobject_add_internal+0xa5/0x2c0 >> [ 84.583453] kset_register+0x44/0x60 >> [ 84.583470] bus_register+0xc6/0x270 >> [ 84.583479] ? 0xffffffffa000d000 >> [ 84.583492] mmc_blk_init+0x12/0x1000 [mmc_block] >> [ 84.583501] do_one_initcall+0x4e/0x194 >> [ 84.583510] ? ___cache_free+0x21/0x2b0 >> [ 84.583524] do_init_module+0x5a/0x20f >> [ 84.583533] load_module+0x235c/0x2510 >> [ 84.583550] ? SYSC_finit_module+0x80/0xb0 >> [ 84.583558] SYSC_finit_module+0x80/0xb0 >> [ 84.583570] do_syscall_64+0x77/0x290 >> [ 84.583580] entry_SYSCALL_64_after_hwframe+0x3d/0xa2 >> [ 84.583587] RIP: 0033:0x7f452a3ad5b9 >> [ 84.583593] RSP: 002b:00007fff4562ba18 EFLAGS: 00000206 ORIG_RAX: >> 0000000000000139 >> [ 84.583602] RAX: ffffffffffffffda RBX: 000056092895c520 RCX: >> 00007f452a3ad5b9 >> [ 84.583607] RDX: 0000000000000000 RSI: 000056092697b3d9 RDI: >> 0000000000000003 >> [ 84.583612] RBP: 000056092697b3d9 R08: 0000000000000000 R09: >> 000056092895d310 >> [ 84.583617] R10: 0000000000000003 R11: 0000000000000206 R12: >> 0000000000000000 >> [ 84.583623] R13: 000056092895c430 R14: 0000000000040000 R15: >> 0000000000040000 >> [ 84.583647] ------------[ cut here ]------------ >> [ 84.583656] kobject_add_internal failed for mmc_rpmb with -EEXIST, >> don't try to register things with the same name in the same directory. >> [ 84.583694] WARNING: CPU: 6 PID: 1825 at lib/kobject.c:238 >> kobject_add_internal+0x296/0x2c0 >> [ 84.583705] Modules linked in: mmc_block(+) rtsx_pci_sdmmc rtsx_pci >> iwlmvm mac80211 nvidia_drm(PO) nvidia_modeset(PO) iwlwifi nvidia(PO) >> cfg80211 qmi_wwan thinkpad_acpi rfkill sdhci_pci cqhci sdhci mfd_core [last >> unloaded: mmc_block] >> [ 84.583770] CPU: 6 PID: 1825 Comm: modprobe Tainted: P O >> 4.16.0-rc6-00384-gf36b753 #30 >> [ 84.583774] Hardware name: LENOVO 20ENCTO1WW/20ENCTO1WW, BIOS N1EET62W >> (1.35 ) 11/10/2016 >> [ 84.583782] RIP: 0010:kobject_add_internal+0x296/0x2c0 >> [ 84.583786] RSP: 0018:ffffc9000769bc58 EFLAGS: 00010296 >> [ 84.583791] RAX: 000000000000007d RBX: ffff880fcf588618 RCX: >> 0000000000000000 >> [ 84.583796] RDX: 0000000000040400 RSI: 00000000000000f6 RDI: >> 00000000ffffffff >> [ 84.583801] RBP: 00000000ffffffef R08: 0000000000000000 R09: >> 0000000000000354 >> [ 84.583806] R10: ffffffff8251fc74 R11: 0000000000000353 R12: >> ffff88100d3cf698 >> [ 84.583811] R13: ffff880fcf588618 R14: ffffffffa0028590 R15: >> ffffffffa0028540 >> [ 84.583818] FS: 00007f452a853700(0000) GS:ffff881053d80000(0000) >> knlGS:0000000000000000 >> [ 84.583823] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 >> [ 84.583837] CR2: 00007f452a3faea0 CR3: 0000000fc89e4004 CR4: >> 00000000003606e0 >> [ 84.583850] DR0: 0000000000000000 DR1: 0000000000000000 DR2: >> 0000000000000000 >> [ 84.583863] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: >> 0000000000000400 >> [ 84.583875] Call Trace: >> [ 84.583893] kset_register+0x44/0x60 >> [ 84.583902] bus_register+0xc6/0x270 >> [ 84.583910] ? 0xffffffffa000d000 >> [ 84.583926] mmc_blk_init+0x12/0x1000 [mmc_block] >> [ 84.583940] do_one_initcall+0x4e/0x194 >> [ 84.583948] ? ___cache_free+0x21/0x2b0 >> [ 84.583966] do_init_module+0x5a/0x20f >> [ 84.583979] load_module+0x235c/0x2510 >> [ 84.583995] ? SYSC_finit_module+0x80/0xb0 >> [ 84.584001] SYSC_finit_module+0x80/0xb0 >> [ 84.584010] do_syscall_64+0x77/0x290 >> [ 84.584016] entry_SYSCALL_64_after_hwframe+0x3d/0xa2 >> [ 84.584021] RIP: 0033:0x7f452a3ad5b9 >> [ 84.584025] RSP: 002b:00007fff4562ba18 EFLAGS: 00000206 ORIG_RAX: >> 0000000000000139 >> [ 84.584030] RAX: ffffffffffffffda RBX: 000056092895c520 RCX: >> 00007f452a3ad5b9 >> [ 84.584034] RDX: 0000000000000000 RSI: 000056092697b3d9 RDI: >> 0000000000000003 >> [ 84.584038] RBP: 000056092697b3d9 R08: 0000000000000000 R09: >> 000056092895d310 >> [ 84.584043] R10: 0000000000000003 R11: 0000000000000206 R12: >> 0000000000000000 >> [ 84.584047] R13: 000056092895c430 R14: 0000000000040000 R15: >> 0000000000040000 >> [ 84.584053] Code: 7b 20 49 89 c4 48 85 ff 0f 84 10 fe ff ff e9 cd fd ff >> ff 48 8b 13 48 c7 c6 00 80 f4 81 48 c7 c7 e0 ad 0f 82 31 c0 e8 ca 9a 7b ff >> <0f> 0b e9 5f fe ff ff 0f 0b 0f 0b 0f 0b 0f 0b e9 71 ff ff ff 0f >> [ 84.584147] ---[ end trace d27b36e0e2c0e7e5 ]--- >> [ 84.584162] mmcblk: could not register RPMB bus type >> >> Steps to reproduce: >> >> Build with CONFIG_MMC_BLOCK=m >> >> modprobe mmc_block >> rmmod mmc_block >> modprobe mmc_block >> >> The proposed patch deallocates the reference in mmc_blk_exit. >> > > Fixes: 97548575bef3 ("mmc: block: Convert RPMB to a character device") > Cc: Stable > >> Signed-off-by: Alexander Kappner >> --- >> drivers/mmc/core/block.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c >> index 2cfb963..9c6f639 100644 >> --- a/drivers/mmc/core/block.c >> +++ b/drivers/mmc/core/block.c >> @@ -3087,6 +3087,7 @@ static void __exit mmc_blk_exit(void) >> mmc_unregister_driver(&mmc_driver); >> unregister_blkdev(MMC_BLOCK_MAJOR, "mmc"); >> unregister_chrdev_region(mmc_rpmb_devt, MAX_DEVICES); >> + bus_unregister(&mmc_rpmb_bus_type); > > > Reviewed-by: Shawn Lin > >> } >> module_init(mmc_blk_init); >> > Shawn, Alexander - thanks, applied for fixes! Kind regards Uffe