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 4658EC433EF for ; Wed, 11 May 2022 23:11:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B6F3D6B0073; Wed, 11 May 2022 19:11:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B1F506B0075; Wed, 11 May 2022 19:11:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9BE8F6B0078; Wed, 11 May 2022 19:11:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 89BBB6B0073 for ; Wed, 11 May 2022 19:11:32 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay13.hostedemail.com (Postfix) with ESMTP id 5E6B761EC7 for ; Wed, 11 May 2022 23:11:32 +0000 (UTC) X-FDA: 79455010824.11.288B7F8 Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) by imf20.hostedemail.com (Postfix) with ESMTP id 7DC881C00B9 for ; Wed, 11 May 2022 23:11:22 +0000 (UTC) Received: by mail-pf1-f173.google.com with SMTP id 204so3241640pfx.3 for ; Wed, 11 May 2022 16:11:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=MEqjTqSjqmMIuaSPAUx7oOxbnCyzM14W0OQ7p+YKgaA=; b=OO0FDV1bq7bbLEcW5K/OOQn7t+mbQn/HmxR876UxN64L7J9yFUl79YN2I1G8BzI8LS 8ahyE8bbfwQMDNOIf9/MoCUJkFG00zgJ/wr1j7W9uawZDvB4pwcI5i7+GCHBGMF9MZbC 0OtOftsAeWpC2Sy47SXjajI3ibQ6btVwUzR2s+UeE/MiuCwlZ2jyLWyg/HYTuPyaSp+h yW4Tvf5glxvINMJIAxyzVw+d9/Nx3C48/MTJj/GItj1LZedsMnjcDWC/JWqjHi9kgEVe N4CE3ovzSnNJrT9XZvLd2OCd7HZqq+HCfcJWIeIM8ERhTB8eaWvN5JmXHWhaqA0N/4AZ cZMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to; bh=MEqjTqSjqmMIuaSPAUx7oOxbnCyzM14W0OQ7p+YKgaA=; b=CLNigzmifDG3timxt3yGnhttmHb4lnhbgWfMNDuqEb27OojYQvpRbEr8Yq6ZW2qqPt 72hZwA+PZr+RMhX/RhDxnn5rVST8gYeocRbmgf/Fwi3b9meJOvnXj7ShB18vS8tzp/NZ lqJQpSNpLiqPcFUO3u/YKv/Zp3up3ai2cnOhJtO387blh2zLRkOJjW0zAOt32P86d1YH HD5h00XBbavDd50KHb2BI2pLZPqgjnR+qF+0tlpH5Sg9knbNutsmCi6CchiMxMBHDiau xMgBjdNecOBaPmipE2LntCmY6the0nsimFvDS8f7Ge/XLYDitoCgB9eEknK7hp4Sgv7Z +pDQ== X-Gm-Message-State: AOAM532+GTLcPw8mazm/0DSDzFiJFW/dOy+AUokSbpsL0JuzAMxuSr5+ HC67FenS68vS8TYCIqhytXeFlIuGSFs= X-Google-Smtp-Source: ABdhPJzvsu0OLili6rcBqqXjjxsInmK4R1TnfZvsyecNHFOt+dDtHqGBt6AWAjI3D8PIZqxqvdNMog== X-Received: by 2002:a05:6a00:1307:b0:50d:b02e:11df with SMTP id j7-20020a056a00130700b0050db02e11dfmr2831252pfu.4.1652310691014; Wed, 11 May 2022 16:11:31 -0700 (PDT) Received: from google.com ([2620:15c:211:201:69ef:9c87:7816:4f74]) by smtp.gmail.com with ESMTPSA id 32-20020a631560000000b003c14af5060esm419508pgv.38.2022.05.11.16.11.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 May 2022 16:11:30 -0700 (PDT) Date: Wed, 11 May 2022 16:11:28 -0700 From: Minchan Kim To: Sultan Alsawaf Cc: stable@vger.kernel.org, Nitin Gupta , Sergey Senozhatsky , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] zsmalloc: Fix races between asynchronous zspage free and page migration Message-ID: References: <20220509024703.243847-1-sultan@kerneltoast.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 7DC881C00B9 Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=OO0FDV1b; spf=pass (imf20.hostedemail.com: domain of minchan.kim@gmail.com designates 209.85.210.173 as permitted sender) smtp.mailfrom=minchan.kim@gmail.com; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=kernel.org (policy=none) X-Rspam-User: X-Stat-Signature: 3znbgmh8hntpm97jrkbt66gttq9j7czb X-HE-Tag: 1652310682-100817 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: On Wed, May 11, 2022 at 02:45:30PM -0700, Sultan Alsawaf wrote: > On Wed, May 11, 2022 at 02:07:19PM -0700, Minchan Kim wrote: > > Then, how about this? > > Your proposal is completely wrong still. My original patch is fine; we can stick > with that. > > > diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c > > index 9152fbde33b5..2f205c18aee4 100644 > > --- a/mm/zsmalloc.c > > +++ b/mm/zsmalloc.c > > @@ -1716,12 +1716,31 @@ static enum fullness_group putback_zspage(struct size_class *class, > > * To prevent zspage destroy during migration, zspage freeing should > > * hold locks of all pages in the zspage. > > */ > > -static void lock_zspage(struct zspage *zspage) > > +static void lock_zspage(struct zs_pool *pool, struct zspage *zspage) > > { > > - struct page *page = get_first_page(zspage); > > - > > + struct page *page; > > + int nr_locked; > > + struct page *locked_pages[ZS_MAX_PAGES_PER_ZSPAGE]; > > + struct address_space *mapping; > > +retry: > > + nr_locked = 0; > > + memset(locked_pages, 0, sizeof(struct page) * ARRAY_SIZE(locked_pages)); > > This memset() zeroes out memory past the end of the array because it is an array > of pointers, not an array of page structs; the sizeof() is incorrect. > > > + page = get_first_page(zspage); > > You can't use get_first_page() outside of the migrate lock. > > > do { > > lock_page(page); > > You can't lock a page that you don't own. That's key point what my idea was wrong. Thanks for correction!