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 E6A85C54FB9 for ; Mon, 20 Nov 2023 07:04:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D8AD36B029E; Mon, 20 Nov 2023 02:04:20 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D3A3E6B0324; Mon, 20 Nov 2023 02:04:20 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C28516B032B; Mon, 20 Nov 2023 02:04:20 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id B37EA6B029E for ; Mon, 20 Nov 2023 02:04:20 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 8D0458015F for ; Mon, 20 Nov 2023 07:04:20 +0000 (UTC) X-FDA: 81477443880.06.0ADF14C Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf10.hostedemail.com (Postfix) with ESMTP id 9757DC0022 for ; Mon, 20 Nov 2023 07:04:17 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=l8aUn1Cy; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf10.hostedemail.com: domain of chrisl@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=chrisl@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1700463857; 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=jCJ4dgFf2ZOyzGS5erWJFwdA6vG22X2QhbIW6nOjEoE=; b=4IFnoSSYt4aQcH6cCMjtjqYqXlHntOSKdVQrG2bkkDjhyhCIE1tj6MSazvh8MRkxZvItAf /p3G0JGavoX9mtDkFQ0rJ8aJhA6q1qQcJ+3Bkhjh0z63UFCJyHSe3V+5iYJ5c8RC4uBSwM +Bx9APvh2sA9ew31c32F4VERJaUvnGo= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=l8aUn1Cy; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf10.hostedemail.com: domain of chrisl@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=chrisl@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1700463857; a=rsa-sha256; cv=none; b=v6SiCfaU9MCcUSqc8A518E6Xn5y0ZlvJ3XAN907BH1zI+obKjF7m56Vyk2rgyxbMpRqqEm /rQ8e7LfB0t/Nh9CrsLIqHcqxeAqWNsiGC5GLZ90blM+0TQdmft//dux2bHUiflMNnHUfC x2mFPXdCH6aWIWsUncF602kXOlFe5uY= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 26C9C60F37 for ; Mon, 20 Nov 2023 07:04:16 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6DF2FC433CD for ; Mon, 20 Nov 2023 07:04:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1700463854; bh=qiloXOTVSC5/MXUHvVybdWbggFP8b1JfMoFufd+ahfo=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=l8aUn1Cy0AIbLReZUlsmgeys4vb1gi+fl81kQ46N0jr4xZFuwI2Zcr5dVdgQoho8U BEJZCmAVMYkiV7PBp2M5Sgk5UZz4/XCDpRPZUl8KeodiydyD2HiAY7HzDVJnUldVQG qCOBEw5LUBjgh3mbChX+IByKygyx4iqTnQpXYxVQtlkZpnossgA+CyHRdYtmAA5Ght iWhoWD+7nV+xW2rKS9LGfliOB1BhrHWhhKJ2vO5trJr+s87nm/Hv0i+SgHKlCAVR0d OY6JqmGHElWrkljh9mdSk09ARNFp5n12UxPiG323WwutXQ+eaYaWYyHbpG1n3UG6gL xEv9UhjdnwSqw== Received: by mail-pj1-f54.google.com with SMTP id 98e67ed59e1d1-28039ee1587so2677269a91.2 for ; Sun, 19 Nov 2023 23:04:14 -0800 (PST) X-Gm-Message-State: AOJu0YyXpIB7dJO+RJX1pBBBs3AaYj80WGoz5m2eG16zVev6vo5WFAWR e7M2uK8MI/Ibun1kYepYw5LjEPP6WfRINU7ipHOXFA== X-Google-Smtp-Source: AGHT+IFUvHWev1HZRq7Nds7EmaBQD72V9+Bxuj94dFczycxOV4JtYnoayvNTdkt+JgSi/FxtPL1EuiimMj6iobctFjM= X-Received: by 2002:a17:90b:4d09:b0:280:a68d:7a35 with SMTP id mw9-20020a17090b4d0900b00280a68d7a35mr4652404pjb.22.1700463853818; Sun, 19 Nov 2023 23:04:13 -0800 (PST) MIME-Version: 1.0 References: <20231119194740.94101-1-ryncsn@gmail.com> <20231119194740.94101-20-ryncsn@gmail.com> In-Reply-To: <20231119194740.94101-20-ryncsn@gmail.com> From: Chris Li Date: Sun, 19 Nov 2023 23:04:02 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 19/24] shmem, swap: refactor error check on OOM or race To: Kairui Song Cc: linux-mm@kvack.org, Andrew Morton , "Huang, Ying" , David Hildenbrand , Hugh Dickins , Johannes Weiner , Matthew Wilcox , Michal Hocko , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 9757DC0022 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: 1q9h85ftrjdcsndhnhp8crksdqifrgho X-HE-Tag: 1700463857-218656 X-HE-Meta: U2FsdGVkX19eXUylKRCV55Bn3P12dOLe6Gu9mQmiiXzyIsQM+TRFDBTLPCwAL0RB7/TvZDU+DEKrQ7dJzghCBGbUudIoPgGk5IsMrLb6gnDNsXx4/agrggnIDpghQ6IlMkBOQjJng+z6ZQxFkG5WNyeFTNiaxCtB2tWXeKD4Bq7N8HestHI/yyOarcB+LJ3LlWiLIujIJhPrnFwCnroUqw6eemCaPVqauJdHY5VllPz6FpzeABYh1f66q/cT+Xp1l7kGzth7F5b+cP1DU8nV36CSffelcuCanO3mv2xuRvTv+XgY15QKjYuGg2/qttM/0EJK7DHohf20ujaL0d8RJfQO24VP7k09Ov0gADj8auQpA2Pw/Vzj+xKNN4aCzd+rJCmxP7ph8GLdrZYSdMeyCXVHwxBSqVWSKAHK8AXT4sgNTpjzTXPpAs8toJ1ETNVDlmGTrznzCL9tk/IciP5D4ds9WU0Xytf3A94ia5oqcpl/p1wz0ifxTqXX5V2oWet9QamHaAfVY8K0EUx/SQBQG1CbIm61UyRbeV9w6o4hSO9rOAyZBwmHnMBAEPaiOTH0h3Hj5dj5C/q20R31EpJXN2voz36tkqbWvlFbEH/jvjvSwAsVFFcq8QnwyTRdjp+/ynjvus0T07jQnH4TNgSL08cBtN62nGUWH24dnQI2x+A/jNfYhnXhrVyjg9kgs8zJI/6CCAucoEij0A3FjVYY9Bt9vScH76Fjp1cY1MSGdfCuE7BWaqPCKfyXKPi4wFb6noePG8/bwYxwPdNm7b3OZbLrWwxIXEsaf0M7XL1ytVF8/ZYsefVLZvX8A8yeBh1V/3qlMrZ9YwYwNmdDuHJ30pKn6LnPsdf7iY2aSxWAoHScXj0hQhGQSyJNF1b5iNj6OOVTvywj7vBgy704yXtLEeuJpfspnJQDzDZfyhY7pUtMBvyVIFNwKt0zAiZBOEDT9LgR2afq/6gI6z5Kvz5 urGHgnpQ bfqOZc4hbKZZwu/v7zJxlxzrcwRNkjKlLm4qr4xQHIfN0LJNiRvokYKf7hRwIYQvISmNyF3FOh4urraauclLV0ADK0Yprr8oT5OuwaHUfoU744wKYIIPs5qwk/P7lx6YuBvRs82bnYNIgYorLxUmK8V1P9+0FlS+DyvQhV98r+U5andBScXt5bhcfvgLkF0S5xrr67NHMazNCMg1F0aJvj7cOU/ynQ7kbnLL8kY344mHcyYH+cyjQ/KolXQNxdOK8XbozSTCZs/ATg90jiIRqU1VeWUz+woTmTZhhpfRPMU9l5kY= 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: Hi Kairui, On Sun, Nov 19, 2023 at 11:49=E2=80=AFAM Kairui Song wro= te: > > From: Kairui Song > > It should always check if a swap entry is already swaped in on error, > fix potential false error issue. > > Signed-off-by: Kairui Song > --- > mm/shmem.c | 10 ++++------ > 1 file changed, 4 insertions(+), 6 deletions(-) > > diff --git a/mm/shmem.c b/mm/shmem.c > index 81d129aa66d1..6154b5b68b8f 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -1857,13 +1857,11 @@ static int shmem_swapin_folio(struct inode *inode= , pgoff_t index, > page =3D swapin_page_non_fault(swap, gfp, mpol, ilx, fault_mm, &r= esult); > mpol_cond_put(mpol); > > - if (PTR_ERR(page) =3D=3D -EBUSY) { > - if (!shmem_confirm_swap(mapping, index, swap)) > - return -EEXIST; Do you intentionally remove checking shmem_confirm_swap()? I am not sure I am following. > + if (IS_ERR_OR_NULL(page)) { > + if (!page) > + error =3D -ENOMEM; > else > - return -EINVAL; > - } else if (!page) { > - error =3D -ENOMEM; > + error =3D -EINVAL; The resulting code is a bit hard to read in diff. In plan source it is like= : if (IS_ERR_OR_NULL(page)) { if (!page) error =3D -ENOMEM; else error =3D -EINVAL; goto failed; } else { folio =3D page_folio(page); if (fault_type && result !=3D SWAP_CACHE_HIT) { *fault_type |=3D VM_FAULT_MAJOR; count_vm_event(PGMAJFAULT); count_memcg_event_mm(fault_mm, PGMAJFAULT); } } First of all, if the first always "goto failed", the second else is not nee= ded. The whole else block can be flatten one indentation. if (IS_ERR_OR_NULL(page)) { if (!page) error =3D -ENOMEM; else error =3D -EINVAL; goto failed; } else { Can be rewrite as following with less indentation: if (!page) { error =3D -ENOMEM; goto failed; } if (IS_ERR(page)) { error =3D -EINVAL; goto failed; } /* else block */ Am I missing something and misreading your code? Chris