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 4AD49C54E5D for ; Mon, 18 Mar 2024 21:00:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C9F3F8E0002; Mon, 18 Mar 2024 17:00:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C28528E0001; Mon, 18 Mar 2024 17:00:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AC9608E0002; Mon, 18 Mar 2024 17:00:33 -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 933698E0001 for ; Mon, 18 Mar 2024 17:00:33 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 572B51408A8 for ; Mon, 18 Mar 2024 21:00:33 +0000 (UTC) X-FDA: 81911378346.22.8780B67 Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) by imf23.hostedemail.com (Postfix) with ESMTP id 4986E140028 for ; Mon, 18 Mar 2024 21:00:31 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=zcqmttON; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf23.hostedemail.com: domain of yosryahmed@google.com designates 209.85.208.44 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710795631; 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=dvebqtRjtJMkLTFS/Lue+MhyvzNYqefXWF1X4IBuhio=; b=rA2t6d8z6vH9vke5qCZjAX6w7Ov8l2LoWYmLglmtq11EqVrMvckGI5DqWPdV5btm3GfQD7 0xsomCRU/MRULRH1ttlaVkDj8C9l/D9CKxHtHKeaxQ0BcldGN7veQFJZYzLK8xRe7h5h2z u0gV5iyEK+Y6dyoazAoY8STxafVwxjA= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=zcqmttON; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf23.hostedemail.com: domain of yosryahmed@google.com designates 209.85.208.44 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710795631; a=rsa-sha256; cv=none; b=JANhnB89jh/E1shsQ8n0Xv0J4rMiRW4pt43IT+cmK58JmyItWBXitWb2ifeHfRFiKAQxZe rVx2zxgPLoQHBQsfVS0xGurWyC269xAH96iNN2Zeix/2ZXggIMsDa+l11JA079AhKh5ifs 1V5crBztCS/8cM9726CwEL4dp3C4oEo= Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-563cb3ba9daso5499405a12.3 for ; Mon, 18 Mar 2024 14:00:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710795630; x=1711400430; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=dvebqtRjtJMkLTFS/Lue+MhyvzNYqefXWF1X4IBuhio=; b=zcqmttONGZR1WlUOHDuU6SuCGh/siMi1RABokJoJuF6/aOOooAqhAVhOA/Yczo/1/i I28MHl6pzbeYS2YtK5XFWVJ3Q5ZhTu7FKL0X3EFaZxAi2snP+Q0LxmVwz26YVyMd8h3E ZbUkKJgkey0DitvEDsRKD21Du5q0ely4YzqpSG7NomwkrNtCl78i6SXyClXE4lZcaaLy 3dIZQMVmps1Yft8ilrv8zGIzrPt/O6272Gs1wC3DA1NVxbxtKdbmG0q4BIIyfiGIgu7f w7M3MAudSCHZdBGMzUZOLh6DRmvrHJsYut//iT5ebTvejdX/SqxgflQvKb8FN1P3R9iI OSvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710795630; x=1711400430; h=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=dvebqtRjtJMkLTFS/Lue+MhyvzNYqefXWF1X4IBuhio=; b=gCPo/f4YSlaScZLWBbCSC0JCLBs8VpI1qI7R/UJwJwAA+7S8OjYxWnWszrXW8qhgX2 tMGMXNhDeMjB11C/qj5ATQRCOQgmPT0LmXiF/YDJjZGHJYNwaVIFev/s5e0gnc03sW76 R7Qg1zJwv6IEOU3MtvuN+x1Qq4JErkV/dc4ZTleH94dewLgBaL9+F8kpivP8rN3Mo/4L +DhEz5lh53JuDhT+YeQB9LhvNPduXHPlKXjwwZi/XO7jfhP/C41cStuDSlDU2QiUc10r 3e1lFcz3mv6NHzr1WdyN8c+yWHyP45c6x4priNvkWDUVET7aNLhvO9f7geAkJKQDE9Fb QUow== X-Forwarded-Encrypted: i=1; AJvYcCVq3d2gb9uYoTQwSympNmUOi4Hk28+6EZm5eqqf/5dFauB9WvFuexsGIXLY9hVYBvlbwEVy17Qs5WEAQT+yVaxD/+Q= X-Gm-Message-State: AOJu0YwOi1zZYupOOu4EOmQpbB0WqAkzZ2n7YzZtkCE7t0C56eQ1f5Iy tFT0XwqlJwnKDOg3xGWCelbbEk4vMjow0ZbnM1WvRDk8OuYr5k/YdvqBOoB3Rdc51xeGq/bZnFw NIM/CEoPCA56eCTgNfTcB5Y5OAEcpXJypH1BC X-Google-Smtp-Source: AGHT+IFjW5lvSm4+MS1nz5VL6V3edwHB/B04mw0doQI21cmkTMWGRBuqwczQ73Q8bjHSU11v1m24IHqG6y75DMY0EH4= X-Received: by 2002:a17:906:1702:b0:a46:b764:fc81 with SMTP id c2-20020a170906170200b00a46b764fc81mr312170eje.44.1710795629480; Mon, 18 Mar 2024 14:00:29 -0700 (PDT) MIME-Version: 1.0 References: <000000000000bbb3d80613f243a6@google.com> In-Reply-To: From: Yosry Ahmed Date: Mon, 18 Mar 2024 13:59:51 -0700 Message-ID: Subject: Re: [syzbot] [mm?] kernel BUG in sg_init_one To: Barry Song <21cnbao@gmail.com> Cc: Nhat Pham , syzbot , akpm@linux-foundation.org, chengming.zhou@linux.dev, hannes@cmpxchg.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, syzkaller-bugs@googlegroups.com, Barry Song Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 4986E140028 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: m3ih8435b6bmnb5hdsktrrwaacxqxsx9 X-HE-Tag: 1710795631-805591 X-HE-Meta: U2FsdGVkX198T63n2sleYihKGuYL0PycSxsAZMSgMXCZhKvYH2l14Q5Eg/QX6jwSl3uGNNPCRt+SUfaauTamX4xB/ANlRk39/p5ZRFF8f+8kQQlxz8SjobY7jFqbk4mDnqKxcU43ptggFqfK1MIMAgib/GIECVNC+9n5PhrHQq38lk7ILBUl20FkFkBLl/FpyO4c6Hj7IeyZLswVjrEmsTi+EkUH0h7rZ5Q1UIfDtYdW1YbsC4hVPi9BUXlcluSFc1FRW5Oq7YOe+sxYVIheGp8IgIPY5OHUEC/TrfXiuYI56L6oh1irv2uZeVUfvliItxxUSaMVna01E6AKkskqnq8sM82BgzNH3lmJle/lcQi11alo/ZsNY23jjfu0yLR0J1txCDOg6yrpqdCzAnHMJ2IhsW8yVqD4fM4mtI0awsLfoFkd0dkSj5l3bFoExqxKhHqvjWva2eskwUc3yTj7cgwncFoxTSokTDGhIB1m8ISFaA784lgNxHR2yC21J14/zsH4eL8Q9Q73yeBi3s3utDwdO0h+y9bbqcEZMvWo672wOj606zm1tUX67/VDPPBvUWc1GyKaB2UoHPuA45V81nG6kEAhpnJOT4+wjBy37Y8KPi0x+kwKqNDLZE9MWueiUuRIxAhAuVtIi0Lh2CyIxQrmLbp/MCEpXR0tUAH0giW5/V1niR054nikM/98eVe/06TtJfBdL7h4Jc/PHSKN8/x0AKo5UfF8JizHv/Nb9KQTFEaHtIxbYDq5Wo9Jy1MB04wINPfHMF2uSbfRrnP6MbIU3H0MaT10aU9XUJB/Dg3ul4CvXio+4HY8hsXmxjOfkxbIt3lqXkAUAOFhV0pbNeK6Rmfo4KZ9Ff1pmX8KWwb1cxDT+lbqKq3V38HDAmMt5aAKtIsl6BtiFNDAGglHG67HSlHA88xU/hnQIPfeQ9rW4lMxXj1xTDTI+Csr2AJdTgtUGqWCzNbEbhyIcO9 dqi+6yND jzHtKNPH7L+FTgl02yIbgHgkKHRTl4uvK/Ao3l4Zteu/yMffonqitGAQ3ohJ5ZLPOy3nd7neftXVNW3yqZT8dUSXd7G3V13FuUy9nHz0Z/GohQuCPlCU1AvO0KoqQJXHvaCec0/3JYqTzu/dhdQgeVBU8l8wDfV/6iL6No6EReRq9QV4Z+7GqHjWrjAoccmRZeO2AT8DOXKQcJDhdvdQPvVg7X9siywNzUQjY6LYFRg/g6PwBaA91nGFa2IcAtDnDkfkpxh+6n9LM7m3WUAqsK1W3kbnucCkQFc2ELbR9AgQ9YbW8aDiLiLq/x4uM2grAFwxw 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: [..] > > > I guess that is because on arm32 , we have highmem but > > > sg_init_one supports lowmem only. the below should be > > > able to fix? > > > > > > diff --git a/mm/zswap.c b/mm/zswap.c > > > index 9dec853647c8..47c0386caba2 100644 > > > --- a/mm/zswap.c > > > +++ b/mm/zswap.c > > > @@ -1086,7 +1086,8 @@ static void zswap_decompress(struct zswap_entry > > > *entry, struct page *page) > > > zpool_unmap_handle(zpool, entry->handle); > > > } > > > > > > - sg_init_one(&input, src, entry->length); > > > + sg_init_table(&input, 1); > > > + sg_set_page(&input, kmap_to_page(src), entry->length, > > > offset_in_page(src)); > > > > Is this working around the debug check in sg_init_one()? IIUC, only > > I wouldn't characterize it as a workaround; it's more of a solution. I assumed that the debug check in sg_set_buf() is because sg_set_page() cannot handle highmem pages, sorry if that isn't the case. Apparently we are hitting a warning with kmap_to_page() though as syzbot just reported. > > > lowmem pages are supported. We may be passing in a highmem page to > > sg_set_page() now, right? > > we can pass highmem to sg_set_page(). This is perfectly fine. So the debug check is only because we are using virt_to_page() in sg_set_buf()? > > > > > Also, it seems like if src is a lowmem address kmap_to_page() will be > > doing unnecessary checks (assuming it's working correctly)? > > In practice, we consistently use kmap and kunmap even on systems with > low memory. > However, it's worth noting that for low memory scenarios, kmap > essentially returns > page_to_virt(page_address). Thus, the overhead of kmap_to_page shouldn't be > significant on low memory systems, especially considering that it simplifies to > virt_to_page(). > > Another approach is to consistently employ page_to_virt() for low > memory situations > and reserve kmap for high memory scenarios. However, since we always > utilize kmap > regardless of whether the page is low or high memory, we don't need to concern > ourselves with this distinction I see. Thanks for elaborating. > > > > > Would it be more robust to just use the temporary buffer if src is a > > kmap address? > > I don't think so because we will need a memcpy then. I thought that was necessary because sg_set_page() cannot take in highmem pages, but you mentioned that this isn't the case.