From patchwork Mon Apr 7 23:13:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Yang X-Patchwork-Id: 14041955 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 199B8C36010 for ; Mon, 7 Apr 2025 23:14:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B4DBB6B000A; Mon, 7 Apr 2025 19:14:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B27D46B000C; Mon, 7 Apr 2025 19:14:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8DB956B000D; Mon, 7 Apr 2025 19:14:24 -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 70B326B000A for ; Mon, 7 Apr 2025 19:14:24 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id DD7085BB2B for ; Mon, 7 Apr 2025 23:14:25 +0000 (UTC) X-FDA: 83308803690.29.6A2C730 Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) by imf03.hostedemail.com (Postfix) with ESMTP id 164C820004 for ; Mon, 7 Apr 2025 23:14:23 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=nqkGJCJX; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf03.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.208.44 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744067664; 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=mZa4eYUkmXVz1t5iRUH0F0TZZ4VY704zpniKkDZZtMI=; b=v51U2D/fM0GKH8dBTAqj3xVP+o1iFQUQOVoepJPPRDPCnnhBI8ABtLUs3U9gSnrsLo8fUZ oaVCRMA337kizC8oISayL8dPNOo4oO2eLJYnRHEJ1bwElXJppOzxRHrQk5gDigSlVvnjk+ 1eNhoVN87wFPaA5VwjirxNA22Uskr6M= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744067664; a=rsa-sha256; cv=none; b=x8HLEwXUhIZ8Tdq9IJn0KCSbl5wtia5jBSgRrWTkLjTr4713Y5JExmVxWjYsBk0/VkoG5V pWNoZrLva2W/O/1Tlc3dWu/fDgxOzaMSWRpPLMiJHs3uFUPxiQh0w5vniAAlMmV1dNRW8n d8dwpGDhQgdmTSRHyk2icK8R6+58zvQ= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=nqkGJCJX; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf03.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.208.44 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-5e61da95244so8183090a12.2 for ; Mon, 07 Apr 2025 16:14:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744067663; x=1744672463; 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=mZa4eYUkmXVz1t5iRUH0F0TZZ4VY704zpniKkDZZtMI=; b=nqkGJCJXy5D0bzrgsnPv4EJBO1yd1WIBU0WS9ZR1OT52Tk3uhnjEWKirX1mUd74Gu0 RBbr5Jw3xcWpdBMECaFa0iU8CQdlMRPTOVAUEulO5UxR+WNF3neIuwONKf4PkWNoRjzA pQrHsUdN0WhJfhmwhf8la6qLpted/7mGk5QgT+NS85oqmWFO57lZNxFV3FBLSrGaxV+p RoRH/P1tHyE133BMIH1qtxfQCSQZ1p/PtTIKfR2TwZ6VRQGP975UQrSWgC+v8vsOSHag Z8TSrTnUdWNOfammAu/WGpY48GK2i+XeMBOamk36U6zofrUGL2QEVY4EGfqrvWzFLmC7 Y0GQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744067663; x=1744672463; 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=mZa4eYUkmXVz1t5iRUH0F0TZZ4VY704zpniKkDZZtMI=; b=ItXTH/CkfwViszxpPTjH1ZQeHrUePpOlgpBCrXlH7KXI8BpxQCj3MFA6iwc28mfBgp GAOkz2dcU2gB81CVGN/EknU+Cvg8pwOqh0GjCHU3IMHosY1S6I/P6j8XCKIBGKhkYkue H+Sps/V8Ery6K0+JFxVNS74LcNwS7dykCr+I7pdcp10ORipp6ke/i+BYmwfwI4dvVPlj 2LZzvoz+vwRDuoP5YaQMH6p3J7dBeXoen72GTYfYFEZ12W0Z26OuK9e187aFcdj15URR JcsE6PXbY3rntlJ49Z/gL6FguvepMMqp4i0FDd9nwiCNKOYpkwRAWFJ4MbKeTv4iu6e2 ttsA== X-Forwarded-Encrypted: i=1; AJvYcCUXR7UZp6lTkF3rq3ymHZ8hlrtt4SGWA12au90CnZd5PzrWAaioLjMmBF9ip3VKF8VQlxNu7cPonw==@kvack.org X-Gm-Message-State: AOJu0YyIiojKU90pZT9S8p8C1y5n4eJJphS6fl4Va9ZqOPmbGkba5U8V ETLiOtaktXXmYD8AyPWlxybgs1VEh9Fh44XG49pUKNr12ALJsty6 X-Gm-Gg: ASbGnct6BC+4DYUq7Eb5/ICMEqFzJpaQ5gtF/5BQHZjICoixIOAgq+aEpP9CU5WEBmE +csl+k3bfdlqQwH7GQiMc7r51f5U0kR9iF5lCm6XOEbdZkLnv7pAjX3QoN2YrvH4Yuf0xaTIIs+ H+MPcgSq1ORvJjpcWi+V++ELn3rNRRyqGOEOiYkRo62c8/RjcIIZDwyR6n5Q2oWRbeIrEo98LSQ eIaJ/BrXtF+ntmXHu9UOQ/ba8OOJXXVdgTL6UeZUv1cgxavYuxERjMcRt6oQcfJn3chzyNCiqWL 39dmXs5wlG4SIes6YNCpvoPmJyHeyJwRR+6mJ13VaGIA X-Google-Smtp-Source: AGHT+IF6NhIA4/e92YTvAGevSVPkRbieuNwH5uHI0/ToYrA7HYjc7Oo0GT4IQFd3XFfIwhzjh82sQQ== X-Received: by 2002:a05:6402:40c9:b0:5e4:d2c9:455c with SMTP id 4fb4d7f45d1cf-5f0b3b99994mr11073779a12.10.1744067662646; Mon, 07 Apr 2025 16:14:22 -0700 (PDT) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5f087715635sm7128002a12.2.2025.04.07.16.14.21 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 07 Apr 2025 16:14:21 -0700 (PDT) From: Wei Yang To: Liam.Howlett@oracle.com, akpm@linux-foundation.org, willy@infradead.org Cc: linux-kernel@vger.kernel.org, maple-tree@lists.infradead.org, linux-mm@kvack.org, Wei Yang , "Liam R . Howlett" Subject: [RESEND Patch v2 3/3] maple_tree: assert retrieving new value on a tree containing just a leaf node Date: Mon, 7 Apr 2025 23:13:54 +0000 Message-Id: <20250407231354.11771-4-richard.weiyang@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20250407231354.11771-1-richard.weiyang@gmail.com> References: <20250407231354.11771-1-richard.weiyang@gmail.com> X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 164C820004 X-Stat-Signature: yn7fdsetd4jgoodngyrwnipeqfotz7hw X-Rspam-User: X-HE-Tag: 1744067663-255609 X-HE-Meta: U2FsdGVkX1+45iyY46cQ/zTxGTGT2gCD0U+XlhktzpFDc04kE5T8UwofWFNGi8lAujoHodxdJvDbyg+Egrn/FVGzDnE2VwJk/MhWQY3BfCiXk1H59FwZIKfM3h+CVaHCqTEk1Z3quzo756Zzi1Myi7lULEsDxPYn2uqKP/Dw7JLcZBYrZlJ2kZ1LEa2Y1XfLGEqjSfik8k5YMRanyGHGSkfkB89upl1lzWWkmkE6mHuTDLvtacEfH8MN+VAtT2DSL1BFB2eHTV5I9b4gYi3YkH5z6JZcajq5/ytV7KpmVU7g9dxSKLlSfdwxZMJc4bb2OFXa8rHP0hcvaJf7+607UpoBPc7QFH9P9TRaRVU6GWIYwDaTmwxS0zu8bP3vWeUSvAwcvGx6m9wo4lMmYNVbozEVkIo4noGv4uWd4DNT6L9Rc5aoc66HfBG7/1eSWyIhvIJ8XxWrIUjapP7Z6LFcRFMn/U2B8cZJyPtFcn2j5RJnxK3rAAemjgfEQZiDQQqD8eM1Im1e1j2fO3dOLwgMVAL3giYcqwuzZEm8jItMuHRq4fHaa2PPfrrHXQC1NZnLlyfiWNCWrAcFxO7w10Ou6wFO3AORMn0KvknJWuQ4pS4L9J5BWb5kZ1F++Tn1Mda1csxmo+3NLexsUfKDj1OpeWDTfmW+jUWFCIgee4JzfU6SyMpBjzQ5G7qpJ2rgXluJG1D+yGPMB46tOvuJBhYqZeyC9/tZGGpwgZi7n3EDvuhNcyTuRB85p984SBZHbnZaXgLvAYe048X3Wuaxsk5Oogbiy9d62FugaoTq8mr1vYNmBYqP14z0GuFaAbteep0ZZNbdJZ9K/rCtRESuE+j9iGQWp6k+xKdJYqGIsvKTa+n6FiL/2/WpesdDYiUP2JhMgt8xCv+PqwGGLdeTs1p+p08Wm0aOTm0LAhQzWM7ZRcvws6LVTliKCPqOu5SAL3qNCQupZdFtkib381UK96o /iyjX92X zx/Ub7iTJ2VU1OI7PX0SfzG0CB9TMAePRyz95srkxU76AWbBWSosJIeBPf7F3Ias5J5CSM26UBxn1kM9kfTZZnv+huAdvd1MX92YVQmE9XHIVMs8Obgr4+seZTWyRZ0cWS/57c0ulNkS2CaZv0EtLZMnI4jo7p5j4R/apeVMTToHTHzRgElnYl4VX9xVWiJkgwbDy5UFjgF3cU+ZvIIMRqEe/FdviELctjeO/kQ+eDZ+Yc/4i/G+KPKRExQaYgnzJR4BxNbB47s5GD6Zm1gP3B56W8M8SaJm05dTIQrwD2atAVaeAeuam+tLaVRTH2S/m0HeuhAzG1qPXAgrAIZn9MgsZ7i0UXJyrF2JA6n28AFmVKiPcIcJHt+UqZRHPa1Rgpwe3vG4wC3oBIDGKvGhmmAKjds5Cn43FIJFB93sU4FRObIOsMPa+c207rnODkv07LJ9aIZYIAHFhujQLPSK7cBG8M6i9kAs1lxUVXBuhLYq4yr0sX2zvyvhsGiP21nUcOrujlpI/G5FFC1uZjRfMZorXS6Mps5OrvILwnbD/l4z7y89lrS4v44GAfA== 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: Original code may not get the new value after overwriting the whole range on a maple tree containing just a leaf node. The reason is we didn't set the only root node dead during destroy. Add a test case to ensure the new value is returned when overwriting a tree containing just a leaf node. Signed-off-by: Wei Yang CC: Liam R. Howlett Reviewed-by: Liam R. Howlett --- v2: adjust the changelog according to Liam's suggestion --- tools/testing/radix-tree/maple.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tools/testing/radix-tree/maple.c b/tools/testing/radix-tree/maple.c index bc30050227fd..1e293e4d856d 100644 --- a/tools/testing/radix-tree/maple.c +++ b/tools/testing/radix-tree/maple.c @@ -35256,6 +35256,30 @@ static noinline void __init check_rcu_simulated(struct maple_tree *mt) MT_BUG_ON(mt, mas_prev(&mas_reader, 0) != xa_mk_value(val)); rcu_read_unlock(); + /* Clear out tree & create one with only root node */ + mas_lock(&mas_writer); + mas_set_range(&mas_writer, 0, ULONG_MAX); + mas_store_gfp(&mas_writer, NULL, GFP_KERNEL); + mas_set_range(&mas_writer, 0, 0); + for (i = 0; i <= 5; i++) { + mas_writer.index = i * 10; + mas_writer.last = i * 10 + 5; + mas_store_gfp(&mas_writer, xa_mk_value(i), GFP_KERNEL); + } + mas_unlock(&mas_writer); + target = 10; + mas_set_range(&mas_reader, target, target); + rcu_read_lock(); + MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10)); + + /* Overwrite the whole range */ + mas_lock(&mas_writer); + mas_set_range(&mas_writer, 0, ULONG_MAX); + mas_store_gfp(&mas_writer, xa_mk_value(val), GFP_KERNEL); + mas_unlock(&mas_writer); + MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(val)); + rcu_read_unlock(); + rcu_unregister_thread(); }