From patchwork Wed Mar 12 16:47:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 14013690 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 C5C2AC28B28 for ; Wed, 12 Mar 2025 16:48:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BFD5E280005; Wed, 12 Mar 2025 12:47:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B36BF280001; Wed, 12 Mar 2025 12:47:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9D7C6280005; Wed, 12 Mar 2025 12:47:59 -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 8256A280001 for ; Wed, 12 Mar 2025 12:47:59 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 86B321A146B for ; Wed, 12 Mar 2025 16:48:00 +0000 (UTC) X-FDA: 83213481120.05.719E11A Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf25.hostedemail.com (Postfix) with ESMTP id E5E2DA000B for ; Wed, 12 Mar 2025 16:47:58 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="R/vD7NQy"; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf25.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741798079; a=rsa-sha256; cv=none; b=pZUVPMrLHAPRLmo7hktulT9uC8fzDQ6wid7xomWMQhZtsIa4awOpuBCB2uT3+DbrVl2KT8 w0K6HzTvS+8t125xHFSfdv5/nyIz3kNjDlodS09wuURIqZQS/r+lClKiWvHAkVICSMNku/ sc5ouEtS5Md9FgDemU5q2NAa9tMqSXk= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="R/vD7NQy"; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf25.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741798079; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=gXXAHD7uwvB8h5MxH9ShBVzxwb1YfFLM66K5Z93/MGc=; b=L8+f9er7RZQabdrPyNbsyXqe5ta80D+k9WVOMOZC8PCnlqPmxyx5A1djIYWEoyK05CNPg+ olYEsC902kROSd1BjOUKDyHzVmudr2CrsCAUN9d2WuMAHCi82g7Ex8BGUHNm6uRqxXCFff ihfWuFg9/RSaZRY85q8QEDNovYO0KgU= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 631D35C5CB8; Wed, 12 Mar 2025 16:45:41 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A6438C4CEEB; Wed, 12 Mar 2025 16:47:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741798077; bh=H37g5zw8JYgcEHcrKgCoScNGY44vZwcAGnWDri47ll4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=R/vD7NQyc6drg6smFF+csAqealwJ9oeCp8RBZuR7gdkEm6tK8IQ8s+pJIAND/ar6p PquW8UddAL7JN0XDsZH2HFLFMoWo5r/oN9cBCPfkqxvHvnJ/p0wIDGaGdOJe07CTx1 orgRMFPr3iwNZd5q7gV5/8pbAVbEctxUSp9NL5rEYQ2t+vvW+7l2FiISNCaI93IeMs rkiorPIVaI6S3a4TTdptzn+1628Vb6MN3dcPlLLZs06TYjWBWAA0BinMGzNouXH9+o /b3FAzYkUDGMgRdI9BPGPkhIacekGiex1o5ZMjQ/Usfed89xuQkdZf/84b7KCgqQlR d2+OCfyvW+pnQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , "Liam R. Howlett" , David Hildenbrand , Lorenzo Stoakes , Shakeel Butt , Vlastimil Babka , kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 2/4] mm/madvise: split out populate behavior check logic Date: Wed, 12 Mar 2025 09:47:48 -0700 Message-Id: <20250312164750.59215-3-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250312164750.59215-1-sj@kernel.org> References: <20250312164750.59215-1-sj@kernel.org> MIME-Version: 1.0 X-Rspamd-Server: rspam07 X-Rspam-User: X-Stat-Signature: ba98icntf4kg76e4yebxhkck5q5kqux3 X-Rspamd-Queue-Id: E5E2DA000B X-HE-Tag: 1741798078-668563 X-HE-Meta: U2FsdGVkX18P1gTcSu4mzBS8FG+dvlS7F3afkZqV02hPlBsLHUe/gfc0946OW3F/9Oe+OBKyfEgSLMnW8R2W2U87lp6gRqOl8s65rASbsAPwYlECCbeLFeB+zSI2BmpwfrTiukP+eEQ8CcYclsZei7nf7R+CUueg41Ia+mp8fOyT5uJPoTgScxsibH5BCPVbMpeJq6fCRr2QXvFZXPvaGnJrQjiOTywQdMbwD8TNzqHDC3oYptN6nGXJQiop4rNIFdZevibHSbXdo6oVpF/9YY6WqveUor8rIpN43klmC5xHBfjYm4vweeQXZOa/3asJBySW0gJd4YKEkf+IvvWaXQqasMcwYJOdcRtcJrGZAbj7QACL05+ciFVPc3Fc0w9U5d3YaNS6IUgyr1SbGOZMopoJLrHy9FRQMFrQm6G62LPhIpZz7hXQjLjHV4qK3fusCkoPFB7jcaR8KRldt0K0zDo5PFi+h5wU9Jtyjc3RroX5MECyGziPRULxHxb6gCSCUT9t4/6IxYprx2cVxFpYxB5O/q6fZGO1g60K8sB8/shox9yeR1ykPxVu5mfg4YPE1Vakt6+KgcWDXQS3dfUXcQ/53b1wLLDjU/thO7S7r1ph3OMPApeg8j0nstX1lOYVTE7kLTQw2CMroMZI6iVIjyAg0Q3cF2qEmvm2R0RTvmMjKuk4Qlx8Hm67WYwjHQNgnfpTtfSrS5jM/lrnHQu95GGcqFfomFYF30D2By2dBbZ0iuZqb+LZdJC6qHHss9UrmTroz5l5CoiecpuzQy7/ynldL14gxiVCOUCF+4sV/4E+4O/K4MEgJ4xKS5cVzPUmrSiS/QLqaM+kz+zaubinrDfJoi9bSesXpqMvyGbwIVUdCHdbI/Q/q1IzhZwZzNbULgPZsiEsgzk7Q8ku88fUy+uu1vr6WYF9pS2I19amVZO+Puz2CsjyB2PcffSDwd3wkBe2P/geFCjFKJfcKan xzhWbsst 5Q5z9OWsmSCT4Kfpafd2p8YFa8NuiUIbJsH/csp2BaewtFtt4Ne7/t3ddv0DDcAcpZNCqmlpbTfun8pxIBxZIa/rMrNH1Wyoi0EvWbl0wlqDpupxFsIrem+pi+Td3OAG7xG5L/TJe+2vRHNdOEMYFNqF2lYBKvcdBpdbgTkQk0Mq4fPV/rZFk7nOdocMdmzLkU1/UofF3TzogaartViPEmAYXkxylcXq50TUaoJdjjgLdvp6yfMAbLjY8+Wg/sCp5CPeS 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: madvise_do_behavior() has a long open-coded 'behavior' check for MADV_POPULATE_{READ,WRITE}. It adds multiple layers[1] and make the code arguably take longer time to read. Like is_memory_failure(), split out the check to a separate function. This is not technically removing the additional layer but discourage further extending the switch-case. Also it makes madvise_do_behavior() code shorter and therefore easier to read. [1] https://lore.kernel.org/bd6d0bf1-c79e-46bd-a810-9791efb9ad73@lucifer.local Signed-off-by: SeongJae Park Reviewed-by: Lorenzo Stoakes Reviewed-by: Shakeel Butt --- mm/madvise.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/mm/madvise.c b/mm/madvise.c index c3ab1f283b18..611db868ae38 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -1640,6 +1640,17 @@ static bool is_valid_madvise(unsigned long start, size_t len_in, int behavior) return true; } +static bool is_madvise_populate(int behavior) +{ + switch (behavior) { + case MADV_POPULATE_READ: + case MADV_POPULATE_WRITE: + return true; + default: + return false; + } +} + static int madvise_do_behavior(struct mm_struct *mm, unsigned long start, size_t len_in, size_t len, int behavior) { @@ -1653,16 +1664,11 @@ static int madvise_do_behavior(struct mm_struct *mm, end = start + len; blk_start_plug(&plug); - switch (behavior) { - case MADV_POPULATE_READ: - case MADV_POPULATE_WRITE: + if (is_madvise_populate(behavior)) error = madvise_populate(mm, start, end, behavior); - break; - default: + else error = madvise_walk_vmas(mm, start, end, behavior, madvise_vma_behavior); - break; - } blk_finish_plug(&plug); return error; }