From patchwork Sat Aug 31 00:10:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Yang X-Patchwork-Id: 13785722 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 9946ACA100A for ; Sat, 31 Aug 2024 00:11:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0862A8D0010; Fri, 30 Aug 2024 20:11:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0365C8D0002; Fri, 30 Aug 2024 20:11:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E17F48D0010; Fri, 30 Aug 2024 20:11:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id A92A28D0002 for ; Fri, 30 Aug 2024 20:11:24 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 1EEDBA8739 for ; Sat, 31 Aug 2024 00:11:24 +0000 (UTC) X-FDA: 82510611288.04.257A2E4 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) by imf03.hostedemail.com (Postfix) with ESMTP id 5809620009 for ; Sat, 31 Aug 2024 00:11:22 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=mRXlBI7d; spf=pass (imf03.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.221.52 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725062991; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references:dkim-signature; bh=/PDOqFddIwYebCrc81iMhqzpcwiuq97Qi+r0yOj1hmU=; b=AfENWy1imwMR1Q6oKIOhpGG7BX8EUVI+HyMbzi7WYN3aYmzqm26+sa0dWaiWRQd7s80UuP k4nX/ljBdd4P7ptnXaHo0evpkorBYJ4sm9VhThVZJtQYTPr/I6dTxrK/i8pgpz7iCgnncI zgDVNX1YoI306N+AneneaaP9LbWE9hw= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725062991; a=rsa-sha256; cv=none; b=18mSxcGbGCcfTyLbTwpcLxfiwGK5xHhKDIZ8Ejxw36db5aMCcuUDpcGVi43eKs27QZwgEm shnzRgQmrSDHzdzqQyDR1fDYyQyVQitm7nuN4AR5hIKs5vS1IqM5rl5jnAavR9rY5Pb11L bPc22BpFjTOSzlQ28E6Ew9QTczmKXXM= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=mRXlBI7d; spf=pass (imf03.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.221.52 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-3719753d365so1788604f8f.2 for ; Fri, 30 Aug 2024 17:11:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725063081; x=1725667881; darn=kvack.org; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=/PDOqFddIwYebCrc81iMhqzpcwiuq97Qi+r0yOj1hmU=; b=mRXlBI7dIhN2azJB4wf2JGIsKAsCgb3Is3aAg+fbs9q0L6V5GU9Rmwtpsz9lb6bRIA yGgd9H6x08tWAcqbUeElhTj2eEdbwidZoIiP92UitUMDci1I8Ds4It2C1tOHjo392gXc OF9OHYqyOJeWhsg3+YWr6PFcsGAe2d4TbXDT4QVbLST6cFthrLzr5qXZ5q7izS9r0num sTXEEXh44XlEUrST5XO3uSpOgxMpV6L2mKob7aWhWdb1QXPSrECPJmBE12plYj295J18 0pXWTGBUBd9I+T0TLjycSx2kBsdz+8RsiTJTn6QTg7yMxEQisp2Tq0lOJzMM4k5fTYbQ 9lOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725063081; x=1725667881; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=/PDOqFddIwYebCrc81iMhqzpcwiuq97Qi+r0yOj1hmU=; b=OcX84KreXcyU7rHKWDCG0PRvgImpVSQvkjil+D5RgWcavhiu08jX6rRlgVnpFd0V8b /ApEVCvND/V20+SV+bSOsKJBvfQlJSo1nK8bsITCZbDHU2+lzl0T8Ic57kh+OC/MXZmN 43wo6/4FMK+zJT/EmO9HXG9HxILdHmSf6uRasGMTW4tXvcTAIxmKC7EdveIPTu+h2oCo F44wFQBoqFBnkiTaXvmrYq6hWouuWn9gPtt0xSxKllmqQlaiJBkAYcjKuOk98m9pDBUg HIRAh5SS8IuH0OgydAMzmXFqrYsgGpQnsEY68wfzu/4U8/KTbZE8tbjLEVndycw+A6ZY zcYg== X-Forwarded-Encrypted: i=1; AJvYcCXnSbf+QweIY0ZNVGLMYeZlHRyYuFf3nlVg92EEk+6uvp9ILx6Yfoh+hXx3ZGcMldNvQT39SkTaaQ==@kvack.org X-Gm-Message-State: AOJu0Ywj04fvFtLT3vjH/kMgA/RnhBiiFpNb7ie5k3ENpF9A/IkEcAz9 r96zDmER3KpXI8BVyWXpWbZf4B6xdVpLlWlMIL6dfnK1hdJlHBAO X-Google-Smtp-Source: AGHT+IFaboOxSA8IFfXZ35U43P50lxsi+RMivNvAN+oLHSqlBdpCDtUm+CjAJYYorTbDb4m2OUJ9VA== X-Received: by 2002:a5d:5c87:0:b0:374:b69f:9 with SMTP id ffacd0b85a97d-374b69f01d2mr1951345f8f.29.1725063080617; Fri, 30 Aug 2024 17:11:20 -0700 (PDT) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5c225ac5ae6sm2435941a12.0.2024.08.30.17.11.19 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Fri, 30 Aug 2024 17:11:20 -0700 (PDT) From: Wei Yang To: Liam.Howlett@oracle.com, akpm@linux-foundation.org Cc: maple-tree@lists.infradead.org, linux-mm@kvack.org, Wei Yang Subject: [PATCH 2/3] maple_tree: use mas_safe_pivot() to get the pivot range Date: Sat, 31 Aug 2024 00:10:52 +0000 Message-Id: <20240831001053.4751-2-richard.weiyang@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20240831001053.4751-1-richard.weiyang@gmail.com> References: <20240831001053.4751-1-richard.weiyang@gmail.com> X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 5809620009 X-Stat-Signature: i5sea3nhce7pox5hwbswp68qruwe9je6 X-HE-Tag: 1725063082-203841 X-HE-Meta: U2FsdGVkX198mSOK07TCRxhMaYEUmYIpfXN1i96akAZru6fSHZ1OYD5BGDeqePwjnTdgTZxkws3OlKyY/nIgpWg5KcA85WsiUaWH095BeAix7cBOz8fgKYUAGzCmt/GGaeNuYWAN7fx3d/zbHFrgTAWNy0UlaTQVgkYEezRsHMRUPbH3Z02DLUq1y4y6LaUu4Fn5N7ZBV2vsOMn+aDkdx7QxP33OAVS5SvB6dxw8qL/BMfZiEQQlubdel098bYQdZn/CAVBIj4mM5cPvI122c4IJvbi27ao95e20IucvL3PIxQep+EGn104mScWa01Vs9hsx0/qiNnXWGMJU6PWdBRnb5137eSF8BN7d++IR1dKks7lviFlWnvCKsRN+KGhbtByldeb2wYmBJklRG4/BSOZcQmurdlowXaxcbOmFZZrWFM1QwZ2Pyzn1CSm7aTlZ2gNSZT7Eqy2lgoxnQUNrraKOE8TTzspAGFvgIQrqC4uZt4FNwrtUCBARfjsqjph5EQ+Ggb9NA1dQcKqyTso4+61aDHwyrWrl7qpCxd1sn3TKW543sY8obr6wnMWQtVjVY+KjLVjxslMz8t9H7wWt9jWHHIKxJod25MNxYdWDci1GPxg/uObZOI0pYUPdc2hkxtnFN/pa2ZCCmvqaIYNHbv1Scnx3mFfwhevJtCAhYVRL4Qjen5qmyEHWsrl4CCt3bkksbl9hdU3AodAZOvn+49WJVC338wRZlcop9imPXuCI1YibusKvaEmrcbupJTs5RI1LqhgmBKYPqnjZS7J1bZfynpPMFFyqlGwN1nM1+bPWwgc2ENBDHOHeY+qxoFq4DrM+WDrdvZWqpKGFu/5oI2LnJxZb0GO8W28tAAW/+8RzCZr4Pc/brjt32d+TRUWMaKrhq9NUHHCCFRvtgwTh4y28Z3ny67NMVmg7kVILxphrXg0kvN4YnSwUrd4yvcYX3lNz8bUBscKUwDaZxPN TtsscUdn dc98hsDJILID+saMCIuVwSt7Fp7/tPGk2rQSPn9fmtvjDQd6BEN+Y7brW1EHYOUIFR7vWlD/BJsyT0st+GaVPQlqDVyFFXKDwOx8P3YeUD9CJjNkEIdXoXOHuj4vfKBjJoR3mRXlLqA2YPjESeFIQvzPlxqPHBGc1QnweMNcUPs2sNovv+x+lqp2a1gJlmQlJU3j5hAWnOD44bilozaJqL4df9CRB4YjzA4XqjODGRD+sE51FqXRqLTmbmo6cFpet3poXFui/sbZo/xoCzcYAmp1LHpiHAVzpEx2LYti2bu+Q8BI2YLnc4jPuFi1NQyR7fMX9XJkl+UYIsWuDlw/qA4fD2wvvU0plhV4Ts/YVmfOTg93vx92H+7XJ6Ao+5zjDR9XDZgMy920T1H5pR9tqCqXy23YahyyjaFuxdGTDPT+4mI+0gFcHJXzMqqCrEfaDNDu93JF1dixEr5Qz0iZbl4UZZfY2mqHCw+jybAu8prgy3aM= 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: Before modifying data, we need to walk the tree to locate the maple_node. Also we get the range boundary at offset/offset_end. For the upper boundary at offset, we have defined function mas_safe_pivot() to get it. Let's leverage it. Signed-off-by: Wei Yang --- lib/maple_tree.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 85668246f944..17533c246749 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -2185,7 +2185,7 @@ static inline void mas_wr_node_walk(struct ma_wr_state *wr_mas) while (offset < count && mas->index > wr_mas->pivots[offset]) offset++; - wr_mas->r_max = offset < count ? wr_mas->pivots[offset] : mas->max; + wr_mas->r_max = mas_safe_pivot(mas, wr_mas->pivots, offset, wr_mas->type); wr_mas->r_min = mas_safe_min(mas, wr_mas->pivots, offset); wr_mas->offset_end = mas->offset = offset; } @@ -3987,11 +3987,9 @@ static inline void mas_wr_extend_null(struct ma_wr_state *wr_mas) (mas->end != wr_mas->offset_end) && !wr_mas->slots[wr_mas->offset_end + 1]) { wr_mas->offset_end++; - if (wr_mas->offset_end == mas->end) - mas->last = mas->max; - else - mas->last = wr_mas->pivots[wr_mas->offset_end]; - wr_mas->end_piv = mas->last; + wr_mas->end_piv = mas->last = + mas_safe_pivot(mas, wr_mas->pivots, + wr_mas->offset_end, wr_mas->type); } } @@ -4016,10 +4014,8 @@ static inline void mas_wr_end_piv(struct ma_wr_state *wr_mas) (wr_mas->mas->last > wr_mas->pivots[wr_mas->offset_end])) wr_mas->offset_end++; - if (wr_mas->offset_end < wr_mas->mas->end) - wr_mas->end_piv = wr_mas->pivots[wr_mas->offset_end]; - else - wr_mas->end_piv = wr_mas->mas->max; + wr_mas->end_piv = mas_safe_pivot(wr_mas->mas, wr_mas->pivots, + wr_mas->offset_end, wr_mas->type); if (!wr_mas->entry) mas_wr_extend_null(wr_mas);