From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 98438E77180 for ; Mon, 9 Dec 2024 16:53:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0D46E8D008A; Mon, 9 Dec 2024 11:53:20 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 084ED8D0058; Mon, 9 Dec 2024 11:53:20 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E8F538D008A; Mon, 9 Dec 2024 11:53:19 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id C44CA8D0058 for ; Mon, 9 Dec 2024 11:53:19 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 93392AE0DF for ; Mon, 9 Dec 2024 16:52:56 +0000 (UTC) X-FDA: 82876014480.21.38F636D Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com [209.85.208.178]) by imf03.hostedemail.com (Postfix) with ESMTP id 4B7DB20013 for ; Mon, 9 Dec 2024 16:52:45 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=PHlTA43I; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf03.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.178 as permitted sender) smtp.mailfrom=ryncsn@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1733763165; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=OkiWcOXrAlAxqqLCJ/KAQ1yQEFRTTCQcJdAddZbbZ1s=; b=m8afeSmhDDblVIt6mBp9Y+tcFucis1WrK9tzrtCdxG4bgcU3tpEQuYWCq2UCwoLWSRlNmc EHSfPlx5CSbsAFeLtPMHJ87R1+pkky8NlFVwBqdLjV0Mzz58MN/4qtYWbJ/1iYh8WFo9a1 8kKycIbfApeNN3UEFUJ8SWs3cZ5lYdk= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1733763165; a=rsa-sha256; cv=none; b=ZzNM+dIUXYJ0tzEak0lkm/RevmIVWPyvhgrrko3+u1spgqaD4eNQKry2K4gq7SAowG4flI YVw9oPz04wfZ+QRYGE5B1IHSq25EIJ2LI7U0OgDhXAANUkEnQ466ipmKDEnOrrBPauEAoF sMJIeE8w79E1znsFzW/ZI7eyoO+iUNE= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=PHlTA43I; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf03.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.178 as permitted sender) smtp.mailfrom=ryncsn@gmail.com Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-3003c0c43c0so25119481fa.1 for ; Mon, 09 Dec 2024 08:52:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733763173; x=1734367973; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=OkiWcOXrAlAxqqLCJ/KAQ1yQEFRTTCQcJdAddZbbZ1s=; b=PHlTA43IbYGkTtomcfQHfHYPRHpeywDkqZH094lTfSLsAiW+pfcrE/vyb8gbYu6tSO ni7ayB/WushxSbeMltlSWs8ki0BmhZMbu/N0ucDKElHvLcGovC35caINNGziLsQ3Hi+F SK+m5kJ+GdLqhie818ayKSWXa7GreNkAQtMc24HD5mynaom3g9Yo5Npj2AJFNaENXlCa QmkGyQHARtXv7Fot9vdZOUonXY+5VRFgjI77WoLD6rG09sLsWD/m7dNF7GUWm5KpInGH uWeZwuImFDLCoJwUBTPRnMxNS0ePmkzRirV+eTBVNndRQzLtLeIheXMgU3QzivJE8Ta6 14tA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733763173; x=1734367973; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OkiWcOXrAlAxqqLCJ/KAQ1yQEFRTTCQcJdAddZbbZ1s=; b=oBHO5re6S2JnJ5/XlGCaqxjlLr13JOnrPo04nSlmSf8JkVrP3zOiaUpf0w205GWEEp UqHCjt+SC7JouIZNuiye0NfIBG2ZaZHGwfgydcXs8BDhdd+tqpqt3tu6i5WdG6AimdHk fSnEDBD4m0KWh2lrpInHbmk7dl/Wj7Q2g7Ga1pF2c/nj3VAwXX7EhfMIkJBS1WG8Sxx3 Kz5LHjuxjqGiHGhiK0WMbwnhvjTA/j9n2qv/x9HzoP6aAhi5fNAR8xZlJ/kCI4jJ/ia9 kZx/JL/sQojTvRYh59Ttr+QxVNNFdgwmfmC+eJ5tYJNKX6t4aBAMWlcZAN0pcoaLVEHY YVdw== X-Gm-Message-State: AOJu0YyZoMj6yMgY1goMdl/Ua8FVir7NsykThfy9l2dmiCKN+2LaU3aw Q1Ms/CZXJz/LwzpjtCF3vV+krRceJg2c9pRMEQ6oHiP+aZjCte/j/cYU5e8q981xuf7Axko0dW9 eyDUtliZvLnn8G2XZ6eejWX6UrxU= X-Gm-Gg: ASbGncv7fPawdWTISUbQ4o2ZrfUbZXdVlR+SQlBtp0W44D7wG/Upp6bPitb//srY7oi v/Sw7SPi4i0KOn5hpn9y7a1Cz2nv4A5E= X-Google-Smtp-Source: AGHT+IENQl4Nc5lF30ol6UXzbTLguVyc/JsFURLtyoI2Px1WGiLmX0RVNAXTyxminD80fO/yjJS2UhJ4fkEeaNVOwtY= X-Received: by 2002:a05:651c:1602:b0:302:29a5:6dea with SMTP id 38308e7fff4ca-30229a5719amr14979111fa.27.1733763172455; Mon, 09 Dec 2024 08:52:52 -0800 (PST) MIME-Version: 1.0 References: <20241204180224.31069-1-ryncsn@gmail.com> <20241204180224.31069-3-ryncsn@gmail.com> <20241205070939.GF16709@google.com> In-Reply-To: <20241205070939.GF16709@google.com> From: Kairui Song Date: Tue, 10 Dec 2024 00:52:35 +0800 Message-ID: Subject: Re: [PATCH 2/2] zram: fix uninitialized ZRAM not releasing backing device To: Sergey Senozhatsky Cc: linux-mm@kvack.org, Minchan Kim , Andrew Morton , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Desheng Wu , stable@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: m3aochcq9amzwe8ig3fou33thdkbtjmt X-Rspamd-Queue-Id: 4B7DB20013 X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1733763165-752051 X-HE-Meta: U2FsdGVkX18aesp03u95bm24D6Plytf5mPv03euf49LLuGQAPsOJNGOkA++BmJHMcJ6pZOzyeAybBy1sJrDr3Zh0QDasleJ4CVde5X3p9bDzeTZ4WUnGcHTtp/6ckX3VxZ6FR2iXYnAt4m1LTaD7sQVRk/o8e4Vv1cB+12Ba8F14HdcecRncvo4CS67XeJZKoXqeFgexqC4vbWSUQR5PIZ+g56iKsanHPI2fZWAEp1oLC8VsOswSoSyMYg4BpRgl+uEd6Mq/65kpt22vDdunuuHFA/YAv+qnKWTMynQXLH15SvxLJZfSD/r50tUGOUOhTewBJbWo78DLIcnDuF4ySl3ZXhiGrJj7sFhOgfIzDWsypObcpnrGNCT9ljjbdFYcFrJFLpLAJ8sV4XRdLLg9y3igQiFD7C9COFXC+1yBFgAgiF0AOd0jvyYXUUcqayMSbc3iR4t/XfE5jg+R3hJEn5yvIFV5341K9px1gf0OK77YhuPD7ennneH6N2HyPosCxOyBBksUafYbPwNzymbcsOAVahUifS7lQiwMvm7BN+vQj3ylI2LJtWj6NIK2sJPuPLQFa2d+J4wSk3Axl433HfmznA9VIyD1LfnsxdEPYOyM68VVdM2YT7NFhvaILNZ2djbpjk0C+KQJkNDHX3iwTJhVAYOT2HF2ht3HzCGPy50SPJm83XXvtTzxxJC0iRPu9cH20EyRzqGnUqHvK9y3Mxs3/mXcWbcdIcfwlnl1uifN+sp5ZSgF/WjMIthitxm1v/DdDPbgm3b4wLueGadFOwtP7HZRH0V29XhaslPkEF0hc00S06+9qS/E5EniRpbtNiFS/vkwpxHYVhnVL1s0mXdtd31lq+dUqZSeuNZetevseVggHTULRHkQlJ4YdCxQguOV4X/cEZPRMV7dFlsmEf3K8jPwVp+4aDEWYsVsWKodXCxM+0mI05cGVgbLdmIhIifqEMLOhUNDxu0NuGC 3g1UofPE 9lkw55pkc+mbiAJiBjs5AA5HurE38sbkNd5+AbAg80pgHXVzC1cpl1Z2I9wb9j+fWDe7EvgavUn9F8te76axda0hWjb6uLaKtv5S06JnSWAAcF2R2mDUAKUEwoeIJAilo/Lwjbzo6W6b+EGMAIgO2dvxldrtjfX7OIK547+rvWqno9Vb5L+O2wK3XjvC7c+ZhFu2gphASh8DXWrS0hco825nUdBOAewKC5PQCyCqSgG2j/rADGXsjJEC23AcJ4Kgfc3raGy2pDzt0X0Di5d/7+T3PprWucf8P9q3goTiQbMNKfEy8cAxRlXArJO3PbhFuxcSvenTMXiIBoEdCfpCD4cehNkh2u90rNSdqYKzgDruron82rcA12JA9q4MBY/CIdMDhDB50PnejN10= X-Bogosity: Ham, tests=bogofilter, spamicity=0.014807, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Thu, Dec 5, 2024 at 3:09=E2=80=AFPM Sergey Senozhatsky wrote: > > On (24/12/05 02:02), Kairui Song wrote: > > From: Kairui Song > > > > Setting backing device is done before ZRAM initialization. > > If we set the backing device, then remove the ZRAM module without > > initializing the device, the backing device reference will be leaked > > and the device will be hold forever. > > > > Fix this by always check and release the backing device when resetting > > or removing ZRAM. > > > > Fixes: 013bf95a83ec ("zram: add interface to specif backing device") > > Reported-by: Desheng Wu > > Signed-off-by: Kairui Song > > Cc: stable@vger.kernel.org > > --- > > drivers/block/zram/zram_drv.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_dr= v.c > > index dd48df5b97c8..dfe9a994e437 100644 > > --- a/drivers/block/zram/zram_drv.c > > +++ b/drivers/block/zram/zram_drv.c > > @@ -2335,6 +2335,9 @@ static void zram_reset_device(struct zram *zram) > > zram->limit_pages =3D 0; > > > > if (!init_done(zram)) { > > + /* Backing device could be set before ZRAM initialization= . */ > > + reset_bdev(zram); > > + > > up_write(&zram->init_lock); > > return; > > } > > -- > > So here I think we better remove that if entirely and always reset > the device. Something like this (untested): > > --- > > diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.= c > index 0ca6d55c9917..8773b12afc9d 100644 > --- a/drivers/block/zram/zram_drv.c > +++ b/drivers/block/zram/zram_drv.c > @@ -1438,12 +1438,16 @@ static void zram_meta_free(struct zram *zram, u64= disksize) > size_t num_pages =3D disksize >> PAGE_SHIFT; > size_t index; > > + if (!zram->table) > + return; > + > /* Free all pages that are still in this zram device */ > for (index =3D 0; index < num_pages; index++) > zram_free_page(zram, index); > > zs_destroy_pool(zram->mem_pool); > vfree(zram->table); > + zram->table =3D NULL; > } > > static bool zram_meta_alloc(struct zram *zram, u64 disksize) > @@ -2327,12 +2331,6 @@ static void zram_reset_device(struct zram *zram) > down_write(&zram->init_lock); > > zram->limit_pages =3D 0; > - > - if (!init_done(zram)) { > - up_write(&zram->init_lock); > - return; > - } > - > set_capacity_and_notify(zram->disk, 0); > part_stat_set_all(zram->disk->part0, 0); > > Thanks for the suggestion, I've tested it and it works well. Will send a V2 shortly.