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 9C6F1C5B549 for ; Tue, 3 Jun 2025 02:10:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EA0146B0391; Mon, 2 Jun 2025 22:10:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E51366B0392; Mon, 2 Jun 2025 22:10:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D41CA6B0393; Mon, 2 Jun 2025 22:10:55 -0400 (EDT) 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 B56D86B0391 for ; Mon, 2 Jun 2025 22:10:55 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 355EF141AFD for ; Tue, 3 Jun 2025 02:10:55 +0000 (UTC) X-FDA: 83512461270.19.5DE2EAD Received: from out30-124.freemail.mail.aliyun.com (out30-124.freemail.mail.aliyun.com [115.124.30.124]) by imf07.hostedemail.com (Postfix) with ESMTP id 7A41640010 for ; Tue, 3 Jun 2025 02:10:52 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=DUOuoVl2; spf=pass (imf07.hostedemail.com: domain of ying.huang@linux.alibaba.com designates 115.124.30.124 as permitted sender) smtp.mailfrom=ying.huang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1748916653; 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=72XDkbzC/wXQpsbDw74c4MWn/z/F1UtJXOqYZHsNj0A=; b=lhJV0/4Blw+PP+0g3uOZm4+TCrzyRvDJRlcouwBsqfA0ec5S86QGleXh2zR2bSFOwd6SYl W/WO+bYnnex+aT+kqmN4d64LN34+rG7z+Z882VAN5zEY2W4COXXwnvp6C3mfDBfe39sLi5 YeExznxKZDbjdH0xQGmABGO3TODnC1Y= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=DUOuoVl2; spf=pass (imf07.hostedemail.com: domain of ying.huang@linux.alibaba.com designates 115.124.30.124 as permitted sender) smtp.mailfrom=ying.huang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1748916653; a=rsa-sha256; cv=none; b=Az4pCi7EIN6PRu43K3vzX12d3kTkNXEtpEvpj9+0Jy1mstyKhAmJX0gOvdCoVCIW5fZePE BZULON+L9Xb1KVHOg5Q4IvTrnTTxgN7xhTj206oPsxlfhSsFi1kiTUPyPCfQcA7iRpsWRL OI4DjVwhtW5ZmdxR29JC4rhmSvF7Tbw= DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1748916649; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; bh=72XDkbzC/wXQpsbDw74c4MWn/z/F1UtJXOqYZHsNj0A=; b=DUOuoVl2+yp+DsJ5jJVXvwWzTUHYx9WeL+NmyFpHEjz/bFdu648tuzFybkyTTEyfrrTNHH7G5gTm7IQd5S3q2/UiVg6sOUHpIPH0fTOmwhhFPyRnGERvUYPwk6V1EKFHjIt/JpEabMzQSwAL6L4Ue0BHdgYbdJdS3TF8eYuauDU= Received: from DESKTOP-5N7EMDA(mailfrom:ying.huang@linux.alibaba.com fp:SMTPD_---0WcgVTZP_1748916646 cluster:ay36) by smtp.aliyun-inc.com; Tue, 03 Jun 2025 10:10:47 +0800 From: "Huang, Ying" To: Joshua Hahn Cc: Andrew Morton , Gregory Price , David Hildenbrand , Zi Yan , Matthew Brost , Rakie Kim , Byungchul Park , Alistair Popple , linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@meta.com Subject: Re: [PATCH 2/2] mm/mempolicy: Skip unnecessary synchronize_rcu() In-Reply-To: <20250602162345.2595696-2-joshua.hahnjy@gmail.com> (Joshua Hahn's message of "Mon, 2 Jun 2025 09:23:40 -0700") References: <20250602162345.2595696-1-joshua.hahnjy@gmail.com> <20250602162345.2595696-2-joshua.hahnjy@gmail.com> Date: Tue, 03 Jun 2025 10:10:46 +0800 Message-ID: <87h60xtw0p.fsf@DESKTOP-5N7EMDA> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=ascii X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 7A41640010 X-Stat-Signature: ciduztgp388ph4do45aw6kwkkarikdgb X-Rspam-User: X-HE-Tag: 1748916652-358672 X-HE-Meta: U2FsdGVkX1+QdpIgLwiQ+C2pC6IuCVo3AHQow7ydlTLPdBbOI5JNLdn0bwgNE8ZJQT8DD/JuGh2Y+zWfzCOy7+qXLi9g3caRQkpwnoAeB7clZqiUwafKvw1oGiO1KoNIKAipeKfIdUqcppCxLY3TQtnb+CQDR8QTvHTK5ENVQXj61JfMLbZ4Dd8dE+IcKjNnLnizEwXrgAi+2d8y87NKADm/QpHB8i/L4LnvlH2yz5HyCgIzEr6G7ExL46QtdABM0RHzDMhJwwNywR0lcCqQus1hM/7jdTrD7moudfMC8+1PJ3lR7kohINVeXCqE/VUHsZy0aOK6V7ux+/xQ+0Uvw0JR8UfGm/frfDbqx47VHhx8n2qVaeRIe/D6JElyS91tFXma9cZYxpYSXqydUdlvNNpVdnBeXhgFI2XOIKWlY1BAuei7nmJHU9UBfuZs/m06TmU0YK8Dhy/QXxxzzYyn5YeSSfRFHcjI6n04GkP6v35EbJhgMeA17TSng0eWr1aTwAVGYyp54FnPvpnKRwcEm8evo2O8oqtrdM+iH+DQPm/7aAq9ZN73AbPzc4q34C+Mz7dYUMeQJRzi7yq26RcyD2CMum2f/QpqoS/L0kkoia45/+GEl3j9qxiVa3GT3JsWN0yH6qj/uD9hydmkaOyb1CEYs3V5kMDApBLVJ+oC1iVydmky5lXxP4t6NL7g8rvrblzrdNx7kibA2njadY35Sf+GP5midMlpPU+ylkjCwyB9HUYTFtzDYHxceL4422o8XnbRz9B1hCO61nEPZoKZG2SGbLwITE5UfyNjmPvuqiwap+vKVdkgamyHSQ64z6BXbkFUY2KIH6KtLgGMP9VSAVqtEtz03WD52dj3qgL/k3A8pdE4B7DAFC1WnqGveQgQB/ymTZGcMDSlVNuxcgImYXjlpqJ1nIoPsbWRJrbYWyT1mopKuOHe6ivECCcRe4cXBD59tfHxcUZhL6uEjiJ 1I1qwZ54 5hoqTdhdJmTSnxE7NWTVh/r934JL04Bm0Fo3+3QPwGOYUdP1aAkwvu93Io46IcnFM2e4BkbNgT/RgI7sZz/xX0pHEaIySNH63CsWfZDIpf+7FKftRJBNmKXL5XXgqOGHZ0wLQiONT35qB0AG9UI9tWm0xhMhac+COk5e0Flk4LoVVA0LLX/9DxGWo3B6UdEtRAqZWWOdGFUkevLAvls++6pr2gcXgteM4Dpq0q+5zC14xpsBw8R+78vX1GE5K8opZl3IeIM0Tj3wGpgvXXrHsHcaT9eg6re5C6gFpdbqLtSFtMd4jpqFAHndKF95npU2LCa2VEjEKH8zGI3uKFbaXIVxpj6pfgndCd3hTGh0QBB+k8Gw4gV26BaHZ6AfsUl7NOYFHUQW6Igdkg/Tx1zfmXJ1D8GZo6+q9NlUpTV1dd4QleE+Arjkd6392fQ== 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: Joshua Hahn writes: > By unconditionally setting wi_state to NULL and conditionally calling > synchronize_rcu(), we can save an unncessary call when there is no > old_wi_state. Per my understanding, in the original code, if !old_wi_state, we will return immediately instead of calling synchronize_rcu() too. Or I miss something? The patch itself is a nice cleanup with reduced line number. Feel free to add my Reviewed-by: Huang Ying in the future version. > Suggested-by: David Hildenbrand > Signed-off-by: Joshua Hahn > --- > mm/mempolicy.c | 13 +++++-------- > 1 file changed, 5 insertions(+), 8 deletions(-) > > diff --git a/mm/mempolicy.c b/mm/mempolicy.c > index 3b1dfd08338b..b0619d0020c9 100644 > --- a/mm/mempolicy.c > +++ b/mm/mempolicy.c > @@ -3703,18 +3703,15 @@ static void wi_state_free(void) > struct weighted_interleave_state *old_wi_state; > > mutex_lock(&wi_state_lock); > - > old_wi_state = rcu_dereference_protected(wi_state, > lockdep_is_held(&wi_state_lock)); > - if (!old_wi_state) { > - mutex_unlock(&wi_state_lock); > - return; > - } > - > rcu_assign_pointer(wi_state, NULL); > mutex_unlock(&wi_state_lock); > - synchronize_rcu(); > - kfree(old_wi_state); > + > + if (old_wi_state) { > + synchronize_rcu(); > + kfree(old_wi_state); > + } > } > > static struct kobj_attribute wi_auto_attr = --- Best Regards, Huang, Ying