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 DC424C3ABCB for ; Mon, 12 May 2025 19:49:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0DBDD6B000A; Mon, 12 May 2025 15:49:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 089EF6B0082; Mon, 12 May 2025 15:49:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E926A6B0083; Mon, 12 May 2025 15:49:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id CC2F06B000A for ; Mon, 12 May 2025 15:49:41 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id E0D671A0838 for ; Mon, 12 May 2025 19:49:42 +0000 (UTC) X-FDA: 83435295804.09.739C249 Received: from mail-qv1-f49.google.com (mail-qv1-f49.google.com [209.85.219.49]) by imf05.hostedemail.com (Postfix) with ESMTP id 03CFB100013 for ; Mon, 12 May 2025 19:49:40 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=aLQz352a; spf=pass (imf05.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.219.49 as permitted sender) smtp.mailfrom=nphamcs@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747079381; 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=dMTXikdJJ7h9MO7B+FNlh6XzfJ9Orfz34hUTKNgSUeg=; b=bVb9yia1efCkZ/ehodiUBO5JLv1HBwBoMWnPTWFZMRY9oQflRcW3Pq7Zy8NM4VJZQ/kabI 0J2Uh/lrlYBcrUi9kE5fW7o15a8jkrHB3mxllEUS6Xl8PlngvOtfUoUjYsZ2Wr09u5dvb1 IrVwJoGFp4PD40Y3FyLaTu4irTpKibA= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=aLQz352a; spf=pass (imf05.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.219.49 as permitted sender) smtp.mailfrom=nphamcs@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747079381; a=rsa-sha256; cv=none; b=1EHj6v6q+1MUK0MB+lzjBfVbejO8UWYgseSxed6bmUCvAC1y4012hiKp9xhwof0IZNY+RT nrwv+dyjxq99/2qxTtpO5T7UGGxmA+Cs1CEeAPLKE70O4A9sUVo5ZnI+ZYPpQdLRVF0EJy mx2KRgYz+LSKJW9M3JcItbdh/dyn/7s= Received: by mail-qv1-f49.google.com with SMTP id 6a1803df08f44-6f0c30a1ca3so62832546d6.1 for ; Mon, 12 May 2025 12:49:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747079380; x=1747684180; 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=dMTXikdJJ7h9MO7B+FNlh6XzfJ9Orfz34hUTKNgSUeg=; b=aLQz352a4Glm/+D3cxbcHzpk7luhM2E3nsi2KpPRd6vE8Li83SYQUKPTH9FdBYv2Vi 9M6smkGSH2he6nPtoGYFWSds9/x/HJz+J+yCX+MfJeVYV24kj7ULdYQs1IvsFi7p4spK OT0iTgSECJea3Tv2m/bo7cuw1DflJfLdNTLLAn3SgMvFOTseVQK+6BMTZo+eYwg0zPa2 vBBB1dUtnohEqgB+UU5u3P2WCGTvMxlfco34dU0pWQcdxCUk/1rspSO8y25HWlcwlZAH pbP3ecVC7q4q4qaHoIkVvP4CBQeLcMPEHNH2JNTSlas3/km3TzNkj6vM/5nwQ/bcA4dk qzjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747079380; x=1747684180; 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=dMTXikdJJ7h9MO7B+FNlh6XzfJ9Orfz34hUTKNgSUeg=; b=u5xJjQgFS3lWo6wmZnSBSDaMW6oA4E8Tc0wBPZQTRVzLWI67FFcey9JTDOswAoKChd QPSbZcPkjtb0Y4o/SpcvVTHSufGlDNdTGOVi1RKFolehOSeZWdnpv3Rpb6LfJWB/JaHZ tg8B5S5aXIyad8Twz8SvBSu+1QirqwvMfl0gkDpo/KOQ5yYv/Bb5N19DJ4sRQiSuRpCz u0X5vs106XBFoTwREu2IMp8Wbzu3ABNTvE5J7kCix829WHm714jUw26jum6NbJe18XhN q/tcVT7Qnoll/QhH8rfSu3Zj7Bf+a2+SE5v0MZLz2T/NgAqo/A9mIkU0CBwX0zW2o1fT jHoA== X-Forwarded-Encrypted: i=1; AJvYcCVfZ/XZ9bKaO1qXIT9gYp6yKOAktzk2pXciCaXd78ATgGLQ6Ex8pOkINlFcf4Mfmjha1tbJFmswKQ==@kvack.org X-Gm-Message-State: AOJu0YzyG6OUlF6SgUnyiH4c3+qI2ETjidiX04vVjsJVC2VxGcaAzSZA ldBGNh43xOFYf8C3jnam4M2+2/eHBjxEFDRZu+XiQuUWURGvNBGTCz6RGH8Wf9v0tfuvkHnskv5 DY4buDNA7GYIvPR7Eiq+BaTX6OCg= X-Gm-Gg: ASbGncv6GVERidjNgxERIHVVs9wIt+C29D8FpDxb+HT2ireGSx1PD410T4G31zGsD22 9t9PjY/KJFepyNkHnVNsvVTapvyW7SPWlj97JueNznqe5IheETiRHiVE+GYZ9UUhKD9FceWN5ok ABRzKdHJ53cQ11R3y2iqAQc1A3QwhMKq5p2YsgbtiGTlk+Qj9G X-Google-Smtp-Source: AGHT+IGrpjrSZ4lzhZLxWLUqWJbiRuSjy7nh4CVBwDjunzKDGXsvF/U9FV+Z8JwBH8udn001TPY5JktJ2bqNTe9svcc= X-Received: by 2002:a05:6214:2405:b0:6f4:c824:9d4a with SMTP id 6a1803df08f44-6f6e47c339cmr219478296d6.13.1747079380108; Mon, 12 May 2025 12:49:40 -0700 (PDT) MIME-Version: 1.0 References: <20250306205011.784787-1-nphamcs@gmail.com> In-Reply-To: From: Nhat Pham Date: Mon, 12 May 2025 15:49:29 -0400 X-Gm-Features: AX0GCFvdaGZ9PaaGs7rOIL1C_GePTsIggpX1S9q_GEMZu7HHQ7dObqQsP2beVKs Message-ID: Subject: Re: [PATCH v4] page_io: zswap: do not crash the kernel on decompression failure To: Matthew Wilcox Cc: akpm@linux-foundation.org, hannes@cmpxchg.org, yosryahmed@google.com, yosry.ahmed@linux.dev, chengming.zhou@linux.dev, linux-mm@kvack.org, kernel-team@meta.com, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam10 X-Stat-Signature: cus1tj7ts6nukgf5awcb4dd6mbqjop7s X-Rspamd-Queue-Id: 03CFB100013 X-Rspam-User: X-HE-Tag: 1747079380-132014 X-HE-Meta: U2FsdGVkX1/Yb/1HGhC0SOgqCBbjwRncCcKYebHk3157XbMsrDhYQPnmR0tedAWi0JWytvULe0MbZKjYzE5p3keZ//DfVaI+TpYGxELHRBCCY6TDEc/xmdQTBgUlMEF0xtUi5Ku6V2vHjTl8uEDZ9qad+j5LHGfwWzsX43iNTffimsBCDYg9gtwsmVzPdnKj3FctInvLrNBGnLDCs15sHLJb0MpR96LQnPO8vMwRtL9EPehEzmqddDwkjMyyriyPvDXgPYwYLuEcN2RgNaU5SB7gvulvevQQPQdDJg/qsQmeiKt/u+FDJrRoVVdhgEi2p429l6fK5amAjbxcQXpTF2/onH7bLOl5kZKGa/rbLeVYtBPz3M3/bOabnfW3H1gvvGHWMkBVxclZks9GExiqhYWkABv5bZkPGN/N1Eua2hOIoibVTmVZK1UFw0NhE84UN/wNeVNiyPSLbAF+iCH/dMNhk0zBP5JZt9rPvvw5g0h/UcwIaRzaIM7BhWtZ4RSrqV1pWf4JcM8ewGjpSIOeLy/a4ltAupEncmzk2UTFaEj078Fot0CK6MZ9Tkhr3Wm9vvEjP+7fgDJVQHg4lsdvYf6cVXLgYQgR/yL0wtRIFS/hsk9JY2RQ215E6rtrRFNoLUcX0ohfL13KJ9iIOz4JRaLZYhZv/uvZgwbN6fvkSARo/LfJG1DdMPx9WA9Qt0e/4g2WKDNB5cGuUhR6twPDhgxrtwfbhZQcsSVhS5aQ7H+Owtl8ucxBT3FRp2Gl8TZjccEWgl8zPCTumyDBxNB9WmK0A/0xcdBhe/O46l9mRn9ESWi09J+QF7ZiIijdD0a08V5IAdcRtaoKJfsFFq/s2DItA4UbrsBFKkPYwGs3SbxteTITmpuoIawrJQYgqNfcWvq08sXCdxHNmxpb+20kUsTaXC+qpgXefbLhp/vKV9Z0rQ3e+7UTW+vMSuiOEqQtGy+p8JQq6dKm8I7S8QG lAQ9RcNu HoifOX0Vk/VCVs83rP0hL3J8IXS7KeE+dP9TMLlwqw+iGWqA7QwO2hUpJ7JRQBBwstaQ3ZSigV+qyR4L++9CYLzdj5Q1/z11kQ6k7bsP6ThOEUmzMD3qGDeSECSNvPyTh10Zx3QR/rFvZSHfdRbLfWoIYoRhIej9vLufdWCdk4x4J4F2oVEKnycH1SGhJOtGjaMbl+0zoULXuFPbroMvvzI1rzNFiSc6mWM4Uag7nL+MABV+ZQxdViq7BDRDOfOMF5BTsMrKjeDrQL9eP2W8D9lA+AaW/HX3TFsmLptXtZ83v5BHHSVqC07bwHtmrzP4GXm439CW0I5+lx3prjHg/HASdTdxn72qdD4RQfUXssOJwg7xMUfF5RTgnFVG7UxsBNLEBIhvL/hn0r5cm6kMWH0dHT1bSKo3yB6nv X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, 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 Mon, May 12, 2025 at 3:03=E2=80=AFPM Matthew Wilcox wrote: > > On Thu, Mar 06, 2025 at 12:50:10PM -0800, Nhat Pham wrote: > > -static void zswap_decompress(struct zswap_entry *entry, struct folio *= folio) > > +static bool zswap_decompress(struct zswap_entry *entry, struct folio *= folio) > > Hm, why do it this way? I had it as: > > -static void zswap_decompress(struct zswap_entry *entry, struct folio *fo= lio) > +static int zswap_decompress(struct zswap_entry *entry, struct folio *fol= io) > ... > + err =3D crypto_acomp_decompress(acomp_ctx->req); > + err =3D crypto_wait_req(err, &acomp_ctx->wait); > + if (!err && acomp_ctx->req->dlen !=3D PAGE_SIZE) > + err =3D -EIO; > > which allows us to return something more meaningful than -EIO. Or is > doing that a bad idea and we should squash all decompression failures > to EIO? Not a bad idea, just no usecase yet. From the POV of zswap_decompress()'s callers, any decompression failure is handled the same way, no matter the cause. Where it might be useful is the debug print statement right below this. However, zstd and lz4 only return 0 or -EINVAL, I think - not super useful. https://github.com/torvalds/linux/blob/master/crypto/zstd.c#L163-L165 https://github.com/torvalds/linux/blob/master/crypto/lz4.c#L61 Not sure about other compressors. > > (also i really dislike the chained approach: > > decomp_ret =3D crypto_wait_req(crypto_acomp_decompress(acomp_ctx-= >req), &acomp_ctx->wait); > > that's much harder to understand than the two lines i have above) I can send a style fix sometimes if people dislike this - no big deal :) BTW, hopefully you don't mind the Suggested-by: tag. I know it deviated a bit from your original suggestion, but the main spirit of that suggestion remains, so I feel like I should credit you and Yosry.