From nobody Tue Dec 2 02:06:41 2025 Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3FED43A5E65 for ; Thu, 20 Nov 2025 15:22:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763652143; cv=none; b=O04kENuxHOKTXMsrC9odqWJQzZSxwLyMYVMUaV6dmSKFsZVCv8tB59DpkseM7MvXpzyU+c+jyCa6ZsvG7edURv7STUMBLMMLL6op+fpPGiS6/ZuKtdh/g4Xoc3RS/eIMlRkhRe1KM5fxuml5/iGzRm7YzC9J3ejURf6kFYrZ9Yk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763652143; c=relaxed/simple; bh=y+gm9Kdn13Kq1FR94zZcC/GIw4xAbbRNUeEu8hUgXDE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uWzSdoKHIkBl5AjdAbMoJwkl+AJpaQQMA0LViGQG0NYbOsnOxHI03GGgqpBAC4+P//WaLvs/Mk4BpjsOLOKMsWdcB7FznUuX3tuSiTpePIw6E9hVhIj0CoPpxaH+S+cwrSrLLYrhhQHyCHIBBAh1A/h3gtbsM1M71/oUwyVKVw0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=FsL92oxF; arc=none smtp.client-ip=209.85.210.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="FsL92oxF" Received: by mail-pf1-f181.google.com with SMTP id d2e1a72fcca58-7acd9a03ba9so1140033b3a.1 for ; Thu, 20 Nov 2025 07:22:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1763652141; x=1764256941; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hNBO1q43Z4HLMo3u95PxV7vGEr2bqJ5I/H/pDo2xib0=; b=FsL92oxFlAkFyG1yYpdi5f7rwrv94UkVJ5KsBnfNqYgljA0aIRi4Z4gqVeawSVsSGy TiroerSCAfQgvBT6oDFPKV8QbvBg2XKCqDNfRmQhLhyQSLmrcFJr3SQAtXX3VrE7q6uT KpuHf6QusGD3ZKN8wvYT3XMbNIFqMMqsza8o4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763652141; x=1764256941; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=hNBO1q43Z4HLMo3u95PxV7vGEr2bqJ5I/H/pDo2xib0=; b=wUScK+iJJ1YEBoS8dp5onA9jt0aASklf3f26Hnx9BWTg/z+BZNA8hCU/G032O7P5zL 2Z2CThLKSLjKJjSXo4SB0m60IyjKu59BLueSzOGoca331ht3vQItKFXxbgeEpRABO3lQ Fs0CkLdIqroUfd3F1GeXwRpCOV8Z/ZpM6z5c0gKp8LAf6QmhSL6e9KPqAtpWgBc+/Aei 6ZsqSnVJnzUnkUj7PBEyi1/IN/RvYO9na9U/488Ax2RUZe3UfJrux92JdhOkLVDfA181 TKSIDtOtD/4iYrSk5KyfHhqpJzAUuq2xioGP97qwXSiD3bmvAdDOpogdtbVOX+ywTDvS wXJQ== X-Forwarded-Encrypted: i=1; AJvYcCWRU0g2VSdC9A1CCU4utNUZJiD3VwDqipiVjiMX8+vWvggQgaTMNOCMIi1/R1qUDBoGXPrbMrKqb8SR6V8=@vger.kernel.org X-Gm-Message-State: AOJu0Yxxqt5MN6biTRDiyTrelAm8BZIs0js6dc3PHNlc/BELJBFqztW5 Yy0ld1ABWOwCjEbwH88QWxrUHo7vHcr+l8BwY+8NRyD5XBkIaATWRhBQ7m9EFbdRUA== X-Gm-Gg: ASbGnct5bXPe2YXfA9KkGMi7hdqHFO5Mvh/ggGyNTzZfRojHX9Mwil/bdD5hf0Mc+ln H2oGaTu0GZ9zMfqbz9joq+7xr1LONF8AvbH0j9FKJznOLZlMjxBSi+fO8OBq3rrKHQvk4mbrpAY PKS7Ujpc9uW2EICVwf55BGC8W4ejv+Uk8iz48mK4onnwKhAlj12PMtxhMTRFHiSQ4QGbU1DoMCW fAq8Vvtn4TvkIL4ApW2X4ZxXHBCnh+iCAieBwTlCmU4t1AvmPOqvzKC79bvy+e25OTyjb6G55Bw IjSkRmJKLGlMZx801rmSQAEt9ZqUfMQxXzMIYmlJ7Q6nEBWjC32QbJhCqksnpiWW2sbGy0LOtfF r9WeJI86I11FPww0ranpSN8rjkjWJq1g4mC6UbucWcTXTYTTfz3YlneZjqsc/U8IlYte5dUF64r lTUdSXbFMHyE6kWrDxuNb78CekqJ1UYEyiBrVEyQ== X-Google-Smtp-Source: AGHT+IGM/LtK9fM0SsN5LsA6eyPljhRQtoqszEcAtB8Xy29m8uMD4FUL1K10u/XIZzdHc9yqVpK3Kw== X-Received: by 2002:a05:6a00:3926:b0:7aa:2d04:ccf6 with SMTP id d2e1a72fcca58-7c3f211a3femr4367565b3a.0.1763652141473; Thu, 20 Nov 2025 07:22:21 -0800 (PST) Received: from tigerii.tok.corp.google.com ([2401:fa00:8f:203:6762:7dba:8487:43a1]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7c3f023f968sm3179642b3a.38.2025.11.20.07.22.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Nov 2025 07:22:21 -0800 (PST) From: Sergey Senozhatsky To: Andrew Morton , Minchan Kim , Yuwen Chen , Richard Chang Cc: Brian Geffon , Fengyu Lian , linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-block@vger.kernel.org, Sergey Senozhatsky Subject: [RFC PATCHv5 6/6] zram: read slot block idx under slot lock Date: Fri, 21 Nov 2025 00:21:26 +0900 Message-ID: <20251120152126.3126298-7-senozhatsky@chromium.org> X-Mailer: git-send-email 2.52.0.rc1.455.g30608eb744-goog In-Reply-To: <20251120152126.3126298-1-senozhatsky@chromium.org> References: <20251120152126.3126298-1-senozhatsky@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Read slot's block id under slot-lock. We release the slot-lock for bdev read so, technically, slot still can get freed in the meantime, but at least we will read bdev block (page) that holds previous know slot data, not from slot->handle bdev block, which can be anything at that point. Signed-off-by: Sergey Senozhatsky Reviewed-by: Brian Geffon --- drivers/block/zram/zram_drv.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c index ecbd9b25dfed..1f2867cd587e 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -1994,14 +1994,14 @@ static int zram_read_page(struct zram *zram, struct= page *page, u32 index, ret =3D zram_read_from_zspool(zram, page, index); zram_slot_unlock(zram, index); } else { + unsigned long blk_idx =3D zram_get_handle(zram, index); + /* * The slot should be unlocked before reading from the backing * device. */ zram_slot_unlock(zram, index); - - ret =3D read_from_bdev(zram, page, zram_get_handle(zram, index), - parent); + ret =3D read_from_bdev(zram, page, blk_idx, parent); } =20 /* Should NEVER happen. Return bio error if it does. */ --=20 2.52.0.rc1.455.g30608eb744-goog