From patchwork Tue Apr 25 11:05:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Zhang X-Patchwork-Id: 13223201 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 708A6C77B71 for ; Tue, 25 Apr 2023 11:05:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CB3996B0074; Tue, 25 Apr 2023 07:05:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C634C6B0075; Tue, 25 Apr 2023 07:05:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B035F6B0078; Tue, 25 Apr 2023 07:05:31 -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 A2C1F6B0074 for ; Tue, 25 Apr 2023 07:05:31 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 78CF8C037C for ; Tue, 25 Apr 2023 11:05:31 +0000 (UTC) X-FDA: 80719632462.15.B7DA501 Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174]) by imf08.hostedemail.com (Postfix) with ESMTP id 9B836160009 for ; Tue, 25 Apr 2023 11:05:29 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b="Qg/Eb8jh"; spf=pass (imf08.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.210.174 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1682420729; 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=adf/xVVZ+zD1y6dwSMZy7eTiJ3ZJr+5S82v3Bo6axPQ=; b=enboWqh7vGqPobno9wNEho+ky0fZh+1NauIjmfGR3wvQwoasC3sofqg4EO6+aHbYMBspeN rKRqe6UixZ3mcnxduFbHuOpgDkasnV756kMMTT3V5M752rt3J7O3eZdZMqlDMw1t42awNv gaeZbP54uvqLYixjQRf7yeK1gVUewWY= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b="Qg/Eb8jh"; spf=pass (imf08.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.210.174 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1682420729; a=rsa-sha256; cv=none; b=5XlEzvgLbaNsYoepNiccZfgvOqnygheRMCfVCej12wuuqKT2wOMqp/O98Q/o4ocxf/qq7D pZjIOGQE/a13z84GJOt5q3dvWDDk7PfXrC6+PRf7ck0F2LWHEliHwMRr3ysx54M4vTur1L i1YgxgtIsECJGI1fAyKAe0r1o90r2H8= Received: by mail-pf1-f174.google.com with SMTP id d2e1a72fcca58-63b70f0b320so7415653b3a.1 for ; Tue, 25 Apr 2023 04:05:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1682420728; x=1685012728; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=adf/xVVZ+zD1y6dwSMZy7eTiJ3ZJr+5S82v3Bo6axPQ=; b=Qg/Eb8jh+M7A1BjNkJA0ETdhpSJNmHPQqY7kHY12vMVLnl1kdHdvkXB4if/LEJNcQ5 /1LNuehfPKitPB3/5yv9OLAuhw799I6ciManueoWOAOynBw1CWPSJwwq7GxIxWdDsCzN naRUqvc2fV0nM8rhoZ1l1nNrYS66KlT/jRC4W1CsIMeKe0PoIvySiXB8XjS+DHlft/NM fZHyu90UDLxs+cplyvIGFAikzgye2S15dQ1zbi/9kb+dH6OV4iV+CspPnU1KIUXqBT7J qA2QnXHcRQ4FVt6MfpPeeOr+TBMq90cvSRy6vcvX4sHyef0DMH8MM3BjdFREbtnczCbm zWpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682420728; x=1685012728; h=content-transfer-encoding:mime-version: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=adf/xVVZ+zD1y6dwSMZy7eTiJ3ZJr+5S82v3Bo6axPQ=; b=AE7tdXFETGDqy/FdWs6ZUuQXBCMeAbCCJlxL7SOF74A6eIYYIxm/GMGhUgXJaMPMGm mzSyW2D6HdZjMVOf+wELjyWGV0rTW3T3sTjrEF/ORPzn9vP9aeZi0fTCYrCxFdymKE7b 4xEUMN+75pgOFc1XGJMDhajCIkwiqtS+1+kzkyR4eZ7ueFMzA2aPkiwptKQnHjHQ9mQd aYkHiw0BQiemKYfrB00xhav1S/2iaLdbZKjUJVUhmj9t2ksx8Ox3qE/IsGabDVkeuDpJ E/VYW5BxNMyqoX1yQgZ0Ejqi4huj7wK+BWqb9ySfk5xPnDUkJ4YXQJrhLMR7/fVjM1f9 uGJA== X-Gm-Message-State: AAQBX9e+4FJv0igBQ53TQp/siDMKmw1Wtq9sM7NkULookg6+c4vvl9PV Ku8WobdPtksJIGX/3RgxQMp+Cw== X-Google-Smtp-Source: AKy350bOoFyRIN0M8N28n3KXREP3tLoV3nfJ0YqTMfCWgc6sCikZeNaFUfG2ms1pU+I3yUk9dO7Khw== X-Received: by 2002:a05:6a00:1516:b0:640:dbe5:e2ee with SMTP id q22-20020a056a00151600b00640dbe5e2eemr7068367pfu.10.1682420728409; Tue, 25 Apr 2023 04:05:28 -0700 (PDT) Received: from GL4FX4PXWL.bytedance.net ([139.177.225.236]) by smtp.gmail.com with ESMTPSA id u3-20020a056a00158300b0063f3aac78b9sm4422169pfk.79.2023.04.25.04.05.25 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 25 Apr 2023 04:05:28 -0700 (PDT) From: Peng Zhang To: Liam.Howlett@oracle.com Cc: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, maple-tree@lists.infradead.org, Peng Zhang Subject: [PATCH 1/9] maple_tree: Fix allocation when min is equal to max in mas_empty_area/_area_rev() Date: Tue, 25 Apr 2023 19:05:03 +0800 Message-Id: <20230425110511.11680-2-zhangpeng.00@bytedance.com> X-Mailer: git-send-email 2.37.0 (Apple Git-136) In-Reply-To: <20230425110511.11680-1-zhangpeng.00@bytedance.com> References: <20230425110511.11680-1-zhangpeng.00@bytedance.com> MIME-Version: 1.0 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 9B836160009 X-Stat-Signature: 8c9jpopzhyz1gz79moy193u3a7yucfgy X-Rspam-User: X-HE-Tag: 1682420729-947629 X-HE-Meta: U2FsdGVkX195D5GjhMToFJvi3zPdq5ZPNNyxQ4+nYtHOq1TKzuI1wcAHdbv3CMOvsvtDaZW3R80KM8xMs4kdQti6hVf9w6WqFp85Txgq3e1NFvWWEG/SOt3A5DffFUy9ZGVy/3hQ1Awcs6cBMC4ftk4Jcg54oiwfwH6o8lXtNpuEPmUv/Ey83PgN4y+xyEVkMzEXTYd3PhWcvBp9FsROm8PBvk23teafaLXhkRoWIebW1wsw7pfns2mKoJ3JDk8ABG/uvSrSiYn98fO6cxKwXTZgWFT4/L3vxKgq1rEGv/Wx3X36O88I0jjnCfSAPS8Ylgl5BfNsoib9CO0siiH35pwdtCLDUFAa70SViRlHJQwMLfKVHgGA6B6OXuYa4k8pGKmZwueLPuwyc+9/E0dgAoEiL/ioXDPHantof5cOevLFMez4S2dYJfDw8k/cVtQpvIRqKBiRLaePycg+4uDSl8ue2bbrXhbc+OfT1002nUnEtZPr/rp/kFzZCca5aPad+Xanlh1Zs9zGMSx0J1Vh1uIQ6HJQbEd//tE7l91iVVW7FCpwfOeHSMeCpp3FkrUWOSug/KiWyJHHkZLe37Ryuxj/IUjIP9sIIf315S91Ey7ZrktKDda82F7LtrAAkVPZBk/jhmSK1KjCIUrhOmGnsYzC/InXCvUa4ttKAmhbl7mELxUTQcKnYRVnEbqBMVSUCC/w7le8muHMhjZnrfR3LQ/Z2R1E5NboMNSBYZhcAWcqJNgZJjBaEob2JgFBUesR4QIkP5/WXzgLxku/CvmuAgQGSBl1S50fd7IKt5xzuSCj95v13Mikivo/USbR/2I+JyaObZjFeyZKa+x/9b1upongZNGYyeGyjG6Fe8ovjZ/scUEFuapykCQxMAic6MRkbIVVoXGK/+2rfZWGjylMfCy+rh7WDk4TWl75ltIWyXLD7rjIbe5cIUaP6O9Rlh2400AQlilIrcFMFjAeNB4 Ht/bOH+T 6JK08S1ciVikgizjababadAggXwBCsCj815ILyONW6Ku2mpGlzHE+D8SiKnie5lh1z8TrQlc95rYBU8TZyE8obOGK9HGft84tZ0jvzt4bCpLfu5iXRkXn5Oznn68GwtJ+H0KKC4l8PQSAlmLV/5GwxSGNTUdR6bnLEOkYWuyPOCMuGcvXJdAKTUS8p0/kqY5akqhfbd3TzyEuYMh7QACVbwVxdZUIHGaDCoej9WoL276TNeaVY0vhbYGI0mhLrIkOdrE70VeaLAHY1wQoYGN1HcRxHNz7y8DLGP8pP0c6Lt920i0ym2XXf+hQKreIyffqnQHvMZR3Xo8/4nIrMD50Aa84up/efZAssndmeZHsbUKQoD3sVBu0NPQC37txTcDdv07Su2rQ9n+1kEvPfr17497WNWXHWpCX3WrDA44LDd5NcujxYqeEqVITAK/7h53yjLjZsbPY8FN/9Nc= 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: Make the allocation valid when min is equal to max in mas_empty_area() and mas_empty_area_rev(). As Liam R. Howlett said, VMA doesn't make this allocation, so now this bug won't trigger. Also add some checks for invalid parameters. Fixes: 54a611b60590 ("Maple Tree: add new data structure") Signed-off-by: Peng Zhang --- lib/maple_tree.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 110a36479dced..72099b4b32169 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -5289,7 +5289,10 @@ int mas_empty_area(struct ma_state *mas, unsigned long min, unsigned long *pivots; enum maple_type mt; - if (min >= max) + if (unlikely(min > max)) + return -EINVAL; + + if (unlikely(size == 0) || unlikely(max - min < size - 1)) return -EINVAL; if (mas_is_start(mas)) @@ -5344,7 +5347,10 @@ int mas_empty_area_rev(struct ma_state *mas, unsigned long min, { struct maple_enode *last = mas->node; - if (min >= max) + if (unlikely(min > max)) + return -EINVAL; + + if (unlikely(size == 0) || unlikely(max - min < size - 1)) return -EINVAL; if (mas_is_start(mas)) { @@ -5380,7 +5386,7 @@ int mas_empty_area_rev(struct ma_state *mas, unsigned long min, return -EBUSY; /* Trim the upper limit to the max. */ - if (max <= mas->last) + if (max < mas->last) mas->last = max; mas->index = mas->last - size + 1;