From patchwork Thu Mar 23 02:50:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Muchun Song X-Patchwork-Id: 13184848 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 A7289C6FD1C for ; Thu, 23 Mar 2023 02:50:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0D3C46B0072; Wed, 22 Mar 2023 22:50:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 084386B0074; Wed, 22 Mar 2023 22:50:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E8E7E6B0075; Wed, 22 Mar 2023 22:50:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id D7B006B0072 for ; Wed, 22 Mar 2023 22:50:44 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id A0B63AAEDB for ; Thu, 23 Mar 2023 02:50:44 +0000 (UTC) X-FDA: 80598635208.13.A0B3FCB Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) by imf27.hostedemail.com (Postfix) with ESMTP id DBDD440006 for ; Thu, 23 Mar 2023 02:50:41 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=K5LxBdjO; spf=pass (imf27.hostedemail.com: domain of songmuchun@bytedance.com designates 209.85.216.41 as permitted sender) smtp.mailfrom=songmuchun@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=1679539842; 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:references:dkim-signature; bh=sevPZAbnJXpK9Gw6YJPfGdmbozGF7BL49NEd8f9V3sk=; b=dwCcxg6k+lZNTltCRx3GiUx81Ch6vXbgNrh4NpvvNHwbdio2yIO9Z+TYQx1YD6fL+A5uFx g2T2sa1uQTneJ3f/W1wi6PTJpMFEqV1JY8bprebKj4coQ0jFAOO1fHvBAKY1Y3s8ZQYA1G uLxCR0gN4CNr4aQw1JSNdv6ctrdqEgA= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=K5LxBdjO; spf=pass (imf27.hostedemail.com: domain of songmuchun@bytedance.com designates 209.85.216.41 as permitted sender) smtp.mailfrom=songmuchun@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1679539842; a=rsa-sha256; cv=none; b=HhptDSTBhZTW1JbX7tFaDahT6I2A0fqyFyWNMG30s9oXnRJqPmujEr9JLWVlcYQnMKRqkV xBLra5gIK8g2YnSydOaNrMqO1jvushwD4dVAJFcDjF7i05B4T8el4bV2+M+08LW2gypwhe YRPiJe3F5krfWx0Ky5CJMPmtvNtzN1Y= Received: by mail-pj1-f41.google.com with SMTP id f6-20020a17090ac28600b0023b9bf9eb63so591554pjt.5 for ; Wed, 22 Mar 2023 19:50:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1679539840; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=sevPZAbnJXpK9Gw6YJPfGdmbozGF7BL49NEd8f9V3sk=; b=K5LxBdjOseL5I6aPTCQj7mHOFrhSOsgr2H7aLFrf3+iTBz1SkiH4drMDXKHspvKHh8 ir6NY0BHV8wzZRqr650A4n50Ym2RANG1n/zMZhHfw7eDFqvxaybOS0tVKj0afXgNNty9 4FkQ8U5F3eCHQg/1XCLNrw77GyKdkYgfi4r9pgVAEyeBxxM+bt9vHBOMTtMEbSs8teuK KvYZC+jMljwWjA9ITNIU24u2lrxtVOMULqQ2rOQty9YzonegtQUwUxSKSZ07f4Zcr9re iqLoFVUKUtCzpZ38vrKLQtjm/ugteQnfeZYWuFaFk3YzeHWXPCPI4gd3uwg85IcIWht4 /Cxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679539840; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=sevPZAbnJXpK9Gw6YJPfGdmbozGF7BL49NEd8f9V3sk=; b=yIysMf9L1XlJaxkh/saHg7IQ3oVueoY1pgozTK9eSCDT9gdJHroGSfMFxDa7RSqUHI d/wTO8zZJWMAfDT+I7GbhrBJH8+ueoUVEIHej5SkKzZ072ktVQbiGbBGC95WyCsZu7X/ ROS559Qiv6s3QpaOpamqIWZ8oouEJqi5Lcg++rZg0DCctEm3fIkmArd0eijxYam8k0zD JiH6986UWGQDxg/KNhLWNyzRe1WxcpoOKVWunJVfZ75q7/M+76DUBomJlFIdNS/3167X j6YTRTFwg9OesmolDyXdSDTblwrD1JS3FhR2kqMXOhPIXpQWzwfS4QupKb1kJF3Y3oHo WBlg== X-Gm-Message-State: AO0yUKWu65bVzkntvbyuZ9b65Q3u6cduAyNhr8WI7xMIMSo3SOdDyJIU rT23q8e5zd/iRpICeEx/fL0Ung== X-Google-Smtp-Source: AK7set9U4IRnF/3MjkmcN7a8fucFYk3GEpd0H73YEk0MoZDAs7wkYLfugtcMCG/5Ztti3TGfqLA+og== X-Received: by 2002:a17:90b:17cb:b0:23f:5fe7:25a1 with SMTP id me11-20020a17090b17cb00b0023f5fe725a1mr6179466pjb.13.1679539840378; Wed, 22 Mar 2023 19:50:40 -0700 (PDT) Received: from PXLDJ45XCM.bytedance.net ([61.213.176.5]) by smtp.gmail.com with ESMTPSA id h7-20020a17090a2ec700b0023b5528b8d4sm221002pjs.19.2023.03.22.19.50.35 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 22 Mar 2023 19:50:39 -0700 (PDT) From: Muchun Song To: glider@google.com, elver@google.com, dvyukov@google.com, akpm@linux-foundation.org, jannh@google.com, sjpark@amazon.de, muchun.song@linux.dev Cc: kasan-dev@googlegroups.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Muchun Song Subject: [PATCH] mm: kfence: fix handling discontiguous page Date: Thu, 23 Mar 2023 10:50:03 +0800 Message-Id: <20230323025003.94447-1-songmuchun@bytedance.com> X-Mailer: git-send-email 2.37.1 (Apple Git-137.1) MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: tteqpayoptnfbe3xrpyre3ftiny1hfnx X-Rspamd-Queue-Id: DBDD440006 X-HE-Tag: 1679539841-568150 X-HE-Meta: U2FsdGVkX1+p1t0mcI49MPRqkWX2rmD1Y3vEfKMFCDVYkfeKJqraay6oLieM/2knCxcNyxW4Qtta+kzTWFccnpArx+RYyK8JFa1YaqOCLUfqyB5E6ut3vbfQDWO2VK3E0ugarubnbYUgwaMq9R0t5HpXmmQQnVfGmmelVJhe0yKO/XlMl1o8A0nIYNbqJczUcJ/IcTAlxVB+YXL20F9U4nDg1F7Y3kfay1xqv+/6o29yWNgs06SiZ6cVOyFp4Uc+oNx/9KI1fzOUK3ovePZxYV1xiCDVXhbgM01FCRXLc/OyGFyqTxNm2ycFxM0zZyR0Cl4HfUaghSqG5lvNOv8zEnGq91NVUleRdU05z7KD8NNzCm8UXQ3HcEfh42UGjD6BygQ+rP9u0PbEB6VminDUrpo56ZcoyFPKwGu8kp5kElVU66pDT8RcKsw8S27Njx259xSCFa5txr3hUqrKOzP3Cmb4OdiH5yuILu1BrTaxu7vKcJEpG68ROD9DXYORXmnyTzUmb9VZhDzciObxWoVzDcCpBGPwm0zb06kCEP6Y13ztCPbkoMswJOkSKCRNi8T9NrWWgHM98YTpTLFKjXgGEbFlXvLDh0Ac9F5zr5LGVBBxTOGvM+OqxHRddeJEwwkjqHxg/BT1kouCSI0G8O8pgCKegoPu1S+4KlTmI/znSng01u1ilMQo3HnyVeLD22ASopjALTO9EMXnoe1tNwGPqQ16wFchJ2MVIzyONZM7qge0V/lQclPX24LdvjPP7j7pdqBHzozCzTi2ExFZCXIchdOHr/M5HNNM2exB/XOY5Xx/mkv8NCXjhfvwzhvAOaAhyWxdczOToajOV3ro6gfIZgox04oWMRY5iiUECRjn6YEQTyCRaQYwtLCnjQYz2P8Zn729hKjiOy1mAjJAzkzve3U821wR2S9UUTXCKwv3duuU3dErXefBh8skL3KzEE/7ji388dY+j3DEPDThtdr saXaPUgU zodaSgaz2XWQDh3/jbdQMObETE9DTwmCDB95RffaIQSd3b9v5qDGLT8OKk0fwI4IhSYJZ2RXf+JCFEAvt4uInMi4DplxcY0QiUd9Lp/9NDmmv/WAT5b8FIqUHxXO+w1q/cKF6BTTmGaqZSPIWZuLWndoczGf2eH9iHjvDkrDHGnXd5bMheJOwS95EDcB8GnaFnHmJEd5vLflmO57n5eQNY+KRm0zWvyqOP3yPU/Zc04T2RfLHHdQRSZPbJrL4idNSWm7zHEkJn3t4AZcBRjFivTWGJ1Lzo2Mf05XupDrEwbPVkEoM0fJqIvWijsftgMcs+uyBx2A1vh8+acBzeSUDXxc6dsBL4ounV1aSrD49lNvTymypi1ojQF1VabWw8TaYNhxIIG+6Wxs0R6Cj6Yk+mlbZxTWdj50rc90+cqzrCQ2msTyiRhDLtW+f2w== 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: The struct pages could be discontiguous when the kfence pool is allocated via alloc_contig_pages() with CONFIG_SPARSEMEM and !CONFIG_SPARSEMEM_VMEMMAP. So, the iteration should use nth_page(). Fixes: 0ce20dd84089 ("mm: add Kernel Electric-Fence infrastructure") Signed-off-by: Muchun Song Reviewed-by: Marco Elver Reviewed-by: Kefeng Wang --- mm/kfence/core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/kfence/core.c b/mm/kfence/core.c index d66092dd187c..1065e0568d05 100644 --- a/mm/kfence/core.c +++ b/mm/kfence/core.c @@ -556,7 +556,7 @@ static unsigned long kfence_init_pool(void) * enters __slab_free() slow-path. */ for (i = 0; i < KFENCE_POOL_SIZE / PAGE_SIZE; i++) { - struct slab *slab = page_slab(&pages[i]); + struct slab *slab = page_slab(nth_page(pages, i)); if (!i || (i % 2)) continue; @@ -602,7 +602,7 @@ static unsigned long kfence_init_pool(void) reset_slab: for (i = 0; i < KFENCE_POOL_SIZE / PAGE_SIZE; i++) { - struct slab *slab = page_slab(&pages[i]); + struct slab *slab = page_slab(nth_page(pages, i)); if (!i || (i % 2)) continue;