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 7F73EE7716C for ; Thu, 5 Dec 2024 07:09:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1A10E6B0096; Thu, 5 Dec 2024 02:09:48 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 150926B0098; Thu, 5 Dec 2024 02:09:48 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 017DB6B0099; Thu, 5 Dec 2024 02:09:47 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id D61456B0096 for ; Thu, 5 Dec 2024 02:09:47 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 5A4CBC13B5 for ; Thu, 5 Dec 2024 07:09:47 +0000 (UTC) X-FDA: 82860029784.06.A212DB2 Received: from mail-pg1-f181.google.com (mail-pg1-f181.google.com [209.85.215.181]) by imf13.hostedemail.com (Postfix) with ESMTP id 20C8B20008 for ; Thu, 5 Dec 2024 07:09:28 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=n8IiNJlr; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf13.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.215.181 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1733382578; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=SHVMmQ/KzbcoO5ieQjC56n0uvyFf9M/Mj/sBzX0iX8s=; b=jkUfA15KMAEwJNj8BC5MwPJ7yo8vIPA+CQhMDYbepgr393hrVZcEWKl2ocKIwsvnMXRzPx RxHp9YTFtRJA08syayk0wVxbjstTjfjadfy21g5kDd0DpKx4XFMlMsA3ImhhBhLhRxxWwB ACn3D2oGvapeYbIqBkdrinLKXXVxM7I= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1733382578; a=rsa-sha256; cv=none; b=D70BM5i9hiBoiagTSX6QSmqOMk2yZwlsYD3dYcNpuo3we+KztH15p1OhKUpxAyBj8RaNaK EZsiG/4XjATRYZbrd0sVeVOLtCD/NzzjI5y/z+zmRqr+hQJl1NQFNLaZ99WFCOJHV0+IFA 4CzZ4dlXaKaNwtT3sdOCdXt5nt1PsLY= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=n8IiNJlr; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf13.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.215.181 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org Received: by mail-pg1-f181.google.com with SMTP id 41be03b00d2f7-7fd17f230c2so272881a12.0 for ; Wed, 04 Dec 2024 23:09:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1733382584; x=1733987384; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=SHVMmQ/KzbcoO5ieQjC56n0uvyFf9M/Mj/sBzX0iX8s=; b=n8IiNJlrx6O+VZRTvO8fwblzI+GIMHbMKTgWi+PK7dITcbop9HRsjyd4qdeB4BjPQY x3gXI0eEM6OLCSKa6q2ECBvzQPkqxdaOVE0gw5rItjvrS5StTNMFQZDnm2ZOY70e8c0x ofM4acJ4LvqPXbMca+UHrlqS3icvC8rGfMq28= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733382584; x=1733987384; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=SHVMmQ/KzbcoO5ieQjC56n0uvyFf9M/Mj/sBzX0iX8s=; b=thJlqo25dxl9gdXkqdsaEc7CrFKdBuckx60RY0g28hOnEEmOtu1li2mw8iObOKgzqJ r75An769+KiP4jwqJj+eH8jOFrIHerEo1D78xD29/HNLLGgJyxmwBSG3zRkWOCwNkB5P BX+n1eI6PvmZfiCYGvKAhMW/Kh1yfCAp+VpC7b3C/+xjuNfF0itkqo7uE10F0ZpHz+hN PGAQ8Et53dY5ecJraNCgHGsyrr0vd8Rj/u0hEpuybyJ8jM+MV0gVsKsa8y0H3ZpW2TFk TaweoxVask5uZX2ZVrkD3coik98j9NS5d/2K4f9pSQm1pUhlTAFLnODAXYvrprR2UcBD J75g== X-Gm-Message-State: AOJu0YxmvA5c+9Ya2otQCHU28kbfslHHKGaJBbkL1SFwpNu/R3thhYvc VwdnUh+kpQGVtu+e3lddbIMFq/CHxTFrCK5B8cqBhgRx8eKX0KsbfBUwdlu5pA== X-Gm-Gg: ASbGnct6N+Rv3mFe5XTfPIFO63e6RgpuDQ8oGT9Htbhan+RovBSTgx5dO63LVhRvazq 1zgb1OOCGAGk8Z7Rjxf51fuIOon/u4ro0YtWNRFg3t5IyUhNd5+MSK1tTqWcniskxvVRDFy7jkO zgzLjjxv613I+NEIZTbtNoR/5ydQRLC2d3358wNN5b1Wj5Plodo6cqzhUTM2L3VykKkNxBxkRKI FjySJnIt7nXsaXdrVGrTobyR+OtzfT7nHraAdPR2/9kZ2UKO3nq X-Google-Smtp-Source: AGHT+IG6kRB6dDFmeXz1ne2Hv+akOd+C09aPhvGPo0ufEzIuAUB/OWr1JBmHkYw/DqGSl8lg7DDPHQ== X-Received: by 2002:a05:6a21:7e89:b0:1e1:6db4:8a29 with SMTP id adf61e73a8af0-1e16db48a6cmr8797451637.41.1733382584222; Wed, 04 Dec 2024 23:09:44 -0800 (PST) Received: from google.com ([2401:fa00:8f:203:84f:5a2a:8b5d:f44f]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-7fd156e1e20sm652384a12.32.2024.12.04.23.09.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Dec 2024 23:09:43 -0800 (PST) Date: Thu, 5 Dec 2024 16:09:39 +0900 From: Sergey Senozhatsky To: Kairui Song Cc: linux-mm@kvack.org, Minchan Kim , Sergey Senozhatsky , Andrew Morton , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Desheng Wu , stable@vger.kernel.org Subject: Re: [PATCH 2/2] zram: fix uninitialized ZRAM not releasing backing device Message-ID: <20241205070939.GF16709@google.com> References: <20241204180224.31069-1-ryncsn@gmail.com> <20241204180224.31069-3-ryncsn@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241204180224.31069-3-ryncsn@gmail.com> X-Stat-Signature: wnsqnx784hiyw4mce5q77kfsp4iyey7k X-Rspamd-Queue-Id: 20C8B20008 X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1733382568-555127 X-HE-Meta: U2FsdGVkX18IfRWzLQZT2heHMO/xTULte/So0b5JAnq4EALg4qBObUKbr93yyxZoJR4lMtDCZBCF8bjfDBHX+JTdFI3MsN/3L6qro6C+oOs12ILf0Npr4rncj0GWO6wpKGHTScaMtabgsNqAQHgo/GcsbvNZa9z8jwZSKQ8hpTcrS0o2OfUIUrlnhFch7QBeX/emx1TluSuIXvEfDeytZYPcufzdgbES2LW38HmWizFZlc/a/PNOdMWsQmqbhh/gzw7rSF/7OcSs8kZ5vgSyJ9wLe0AQ8ne3qr0/j633gXcSDZaoMgsu9EW3iJokkXItBZmUZxWRh14AZEz8/ciB9swMF7o0zDC1lTa8TLrNKSi77IILreTL0GNUTqgx87OfPgaoBfn0e+fFdfZKUTN0AUIVB5jWPZ3p5NxfIIfq4eS+iy/6RckCImmDjr5wCjOEwHcEoJlvnX2JJvxUBcl+xV2H1+/Agh0c7c+4t1Bt6S35w2WIGMMnvB/UbawkMzKG8cJK8XBkVDzK94wNX9gmZSJdOYQElThvu9l07Nh9re9c5EJRy33PFiNvT/tt1gE9NWKMMRNedbFHV3WXKPpvFBfCkV0CbtTOZ6zCMqTLbbhuqqgekrdlW04cuycN/VgDTqUkdfy3UoLBHtCD1YbChIRSogWIO3VL0zM0bnEYY5raYx5ocN/KHwnkby2huzEUcKXxBEz5TosT10kOjyDUQaDh2jKKFyLAz/fTrigxRtlb78ztxE9sfP3tohbSDOSF4M5W/QWWhShY4rfCqOpw5wJOlu+s/SYSi90SS1Ta63zh0JtShhUhMgFfAP3vTqBKHLFD2L6g37IulpWwF/1RMZlpppDshy9SGz1fmUZOy053NUCHdOBWSKKiK4kXzR39dKKfrrXwEtXNHDEu5qjuJTPDV6b8fCYcYxkJQkk/3B3M8cKv1JhcemQsyvMw/oefAnjRd7uodkCM6xkMYW7 VU2EBCJf jQi3h45Ig/Rq+L8ITY9GLa7/fZoY8ue9sTUPWIt2WbegFbRjDaeWMZZVTAR3PHvjS6gRIAma0OukxK3Hl8sMzmw7NSUErgPEBTfJLanBvjpvsixQlPlpPh2PNcgkbfMydnj47f91Yhu/pgzyNRjXkYta3pp0i18g3zYoInW7GtA651pFEPoDHZrq0ZoGf5WW9yJPepAB4TwOyYkg6F8AIZd5HOl9Xo7/XZbVWGYjrKvgYSrSbcf72K0clkNKNEUbC6zFMH0Gt9aI5jkIBXEbBm4jRYBjFVUtvSQMwYHXx3A9Rm4LxcdY0CUrjEsygus0hVgv56fALXeAoksXp3hZEx+7xiPTrfuQj4DFkGeRaql8vo2AkO/OujkVPBGnGymNShUcCk0ESub4q317LTkHAbHIb3A== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000097, 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 (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_drv.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 = 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 = disksize >> PAGE_SHIFT; size_t index; + if (!zram->table) + return; + /* Free all pages that are still in this zram device */ for (index = 0; index < num_pages; index++) zram_free_page(zram, index); zs_destroy_pool(zram->mem_pool); vfree(zram->table); + zram->table = 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 = 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);