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 45E4FC677C4 for ; Wed, 11 Jun 2025 02:34:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 660476B0089; Tue, 10 Jun 2025 22:34:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 637326B008A; Tue, 10 Jun 2025 22:34:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 574976B0092; Tue, 10 Jun 2025 22:34:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 3A96F6B0089 for ; Tue, 10 Jun 2025 22:34:53 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 497AB1015DD for ; Wed, 11 Jun 2025 02:34:52 +0000 (UTC) X-FDA: 83541552024.15.FEC1533 Received: from esa2.hc1455-7.c3s2.iphmx.com (esa2.hc1455-7.c3s2.iphmx.com [207.54.90.48]) by imf03.hostedemail.com (Postfix) with ESMTP id F098D20009 for ; Wed, 11 Jun 2025 02:34:49 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=fujitsu.com header.s=fj2 header.b="CBxyYu/e"; spf=pass (imf03.hostedemail.com: domain of lizhijian@fujitsu.com designates 207.54.90.48 as permitted sender) smtp.mailfrom=lizhijian@fujitsu.com; dmarc=pass (policy=reject) header.from=fujitsu.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749609290; 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=gdy/h7qnxk2NoKyqlo0d4qgbzlWv4FVcXxT24S77CU8=; b=xgkLolMfFFvJg0CLd+Pmjou2XeIBet7l0Ec+49+QoesdiMdFbxvskSZ5+agn3jX3GuI1EX hZpwAgZgs95NhWa0E7UdXBCFT+DpdRKltjrnlXzFcu0Y6w+u4IPSMxQM9gUYzpDDvf/Rv7 uWHSQ1rziZyzqu+M8uMSmoZnZVb84Ew= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749609290; a=rsa-sha256; cv=none; b=drO006O+SOs5K0OjpscKuBeT9Ne6AHs+Nwv7gpnGAKeSafx0iydf5iRfj/HAZnaGujRB8P SJNSej6msH5b/y4S/yAv8kPbkiExqJOwB9T8XlWsLi7kLgwz+jz8KspsNPwrLEKQ+KYdwS X556H1B9G1QJq7YaMmnwbvBJ9zFUUhk= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=fujitsu.com header.s=fj2 header.b="CBxyYu/e"; spf=pass (imf03.hostedemail.com: domain of lizhijian@fujitsu.com designates 207.54.90.48 as permitted sender) smtp.mailfrom=lizhijian@fujitsu.com; dmarc=pass (policy=reject) header.from=fujitsu.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj2; t=1749609291; x=1781145291; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+iHAyZuQxdh1hnR8AoXUzwExgpbgBZ9kpS3GBDKs3NU=; b=CBxyYu/e6v7EjzIk+Ct5K6dCNtOy7VJLcBorqcaMmmiYiTrYbClPcceJ AV1WrENSWogjGaTAsK7Hg4Ecidb6Sq1gLmRtuhT2Pn1E8T8K9s50gZL9j DGCoBvXpzcyABETUmeRUPSAoL90kKhPQ56sv1UYNaq282YGkK5EpXOnw/ Ixxh19zu2IQehB+BQbx+2VF/i594ar82NtreuO8E5uoNOu//lNeytadRn bCCjfwFF0p8cRF8ZiTQ2Eikh++QNHk4cqvSB/TQycb0BluIPR3B/Nh/tC x0aeh2uDhKPAnyjPWla4iEMhzo5j6Y/vewqEH0CGb0ayfUd8BENSCq+xx w==; X-CSE-ConnectionGUID: rKV0bk++TGWxXKjcPXJIWQ== X-CSE-MsgGUID: 6YRZut3mSN+RigLKuoRm2Q== X-IronPort-AV: E=McAfee;i="6800,10657,11460"; a="202298967" X-IronPort-AV: E=Sophos;i="6.16,226,1744038000"; d="scan'208";a="202298967" Received: from unknown (HELO yto-r3.gw.nic.fujitsu.com) ([218.44.52.219]) by esa2.hc1455-7.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jun 2025 11:34:48 +0900 Received: from yto-m4.gw.nic.fujitsu.com (yto-nat-yto-m4.gw.nic.fujitsu.com [192.168.83.67]) by yto-r3.gw.nic.fujitsu.com (Postfix) with ESMTP id E44E1D5053 for ; Wed, 11 Jun 2025 11:34:44 +0900 (JST) Received: from edo.cn.fujitsu.com (edo.cn.fujitsu.com [10.167.33.5]) by yto-m4.gw.nic.fujitsu.com (Postfix) with ESMTP id 91753D50B2 for ; Wed, 11 Jun 2025 11:34:44 +0900 (JST) Received: from FNSTPC.g08.fujitsu.local (unknown [10.167.135.44]) by edo.cn.fujitsu.com (Postfix) with ESMTP id 38BE01A0071; Wed, 11 Jun 2025 10:34:41 +0800 (CST) From: Li Zhijian To: linux-mm@kvack.org Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org, Li Zhijian , stable@vger.kernel.org, Huang Ying , Balbir Singh , Donet Tom , Oscar Salvador Subject: [PATCH v2] mm/memory-tier: Fix abstract distance calculation overflow Date: Wed, 11 Jun 2025 10:34:39 +0800 Message-ID: <20250611023439.2845785-1-lizhijian@fujitsu.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20250610062751.2365436-1-lizhijian@fujitsu.com> References: <20250610062751.2365436-1-lizhijian@fujitsu.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Queue-Id: F098D20009 X-Stat-Signature: ckq9rcghfn5guwz7phypxza88cz8739q X-Rspamd-Server: rspam04 X-HE-Tag: 1749609289-771449 X-HE-Meta: U2FsdGVkX198Vk4ETaOZIgRcX+TiY1/wunrEqBb1js1GINJLPWlQhmLPn8sKbL26wyX6y0InphevHTcSoyX72Nt1I1riEsniRYzL92RxIgwnPl9IMgUJuEkJQwzqNG3vkAkvjEerzyKWi/+AR4EYJ1ghQxw1D8/0AMcgSfhiTytQNDZudyQKoRevW8aiFao7dwGmZjBxpWKV7xyhCa0JRf9bvSGFnkQsqoX8vlDWQF689iYDw4NIhcZmcsAZg7c4RVjXTwheOqZrdA37wqpBe2NNeaQmal2kmr8+9hYT5VY8hz7Rjpzu71c8I3HW16cV0g8R3ev6YRGPn3Yb607LfOj7xswUGgeBtgCGU4Eu6wPV4wNVEVfwHGtkKwIo44shLev/3CCz2pDAPISGNxr6D14MRiTgiInHK6jApcBmNF5EN0KEaHL1eY1eMEzkEgETvapsRVxEnK7hU3sG4xBK7qFscBoq2hJk0VyfwskIULENNglokUbwPSTiQ1y92AWxZRZvxgfIG0YtcfUnvTY16EFhqikW0+n6prHNQeSjcQBwTK74AxLGAt0ZCD0Rmv1treZPDFJKCSP+CA2AqWYffvzh6wstpoj5KlXOjbeCqttXpvn5vZ2pRwpmfXco++v8fvNM2S9XE8/ioKpSkBTbPQ+TIXEn5XN+jnASrFtjYopngb2mgsfGSoLUqnC5M5lA9a2KFYowkfzZWXD1A3ozo3yFtSsBOw0Djq2qexHzXN+BppCX/Z2Y1luLbTEoAd8evfqfhFhEjoAWGVg7YScvfiY9+np/VxBGrU03kBlC3tfDYiZR7BtCGmvA62faOe47cAX5lXpqDsNlf7Obu69fXOeCgjsD8uhrD94mMsKDLOFWu29beDtC9HJ2Ojdbf8db/OJLJ65sRkNiBBVCpoulfpw0V/c8e5rxLyjo+pIodQIMKBOLRMhB+bEAh89doeB83MvF/nvOLk8qBhguR7a SDS5TNQg fIggj0cjTXRRVb10NefAR7nO9cEH3o1Z/b2E8pa/7YeLQRV53htBwM50mgyYIBaLoTNBwt67s9IdpRh6+Vc2WCpCgKBRDjXUVhyuiG0a2GXp9l5YbP/mIrUHQp/ju9F2SGtDTmrGy3fFFUmKXBk1PQn+R3ntkoEFd+XUhJSGwkUCWdnm0eS2EGeOQUv0NPyS82wA3uKC8aAophPzRR6xqE5AvQukxWIWvXipUZabdmZmd50BycKd2/68VSeDIb0iq6/wwSO7Scfs+waLaXGc1Rl9FLTXwVm/4nT281bEM5ct/reWEHXGj1OJleELF2pObGYGhnzljOzsLY2lrlfbKrG/o5OrIUccm5C2aZkHgmXfWNS0SwFql52lOX1XadT//6jLalNfM0Llp3Ne2YOzcxhzV+s7DdiW2JOpC0LTciUUTGGqR+IXwMIugZ1MVhdUJwQbAYbPYnqtj9DMpsQAHFP3nMh8LPlUmvTLoPPrNqR/GAO2MXTn9CPJwWQ== 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: In mt_perf_to_adistance(), the calculation of abstract distance (adist) involves multiplying several int values including MEMTIER_ADISTANCE_DRAM. ``` *adist = MEMTIER_ADISTANCE_DRAM * (perf->read_latency + perf->write_latency) / (default_dram_perf.read_latency + default_dram_perf.write_latency) * (default_dram_perf.read_bandwidth + default_dram_perf.write_bandwidth) / (perf->read_bandwidth + perf->write_bandwidth); ``` Since these values can be large, the multiplication may exceed the maximum value of an int (INT_MAX) and overflow (Our platform did), leading to an incorrect adist. User-visible impact: The memory tiering subsystem will misinterpret slow memory (like CXL) as faster than DRAM, causing inappropriate demotion of pages from CXL (slow memory) to DRAM (fast memory). For example, we will see the following demotion chains from the dmesg, where Node0,1 are DRAM, and Node2,3 are CXL node: Demotion targets for Node 0: null Demotion targets for Node 1: null Demotion targets for Node 2: preferred: 0-1, fallback: 0-1 Demotion targets for Node 3: preferred: 0-1, fallback: 0-1 Change MEMTIER_ADISTANCE_DRAM to be a long constant by writing it with the 'L' suffix. This prevents the overflow because the multiplication will then be done in the long type which has a larger range. Fixes: 3718c02dbd4c ("acpi, hmat: calculate abstract distance with HMAT") Cc: stable@vger.kernel.org Reviewed-by: Huang Ying Acked-by: Balbir Singh Reviewed-by: Donet Tom Reviewed-by: Oscar Salvador Signed-off-by: Li Zhijian --- V2: Document the 'User-visible impact' # Andrew Morton --- include/linux/memory-tiers.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/memory-tiers.h b/include/linux/memory-tiers.h index 0dc0cf2863e2..7a805796fcfd 100644 --- a/include/linux/memory-tiers.h +++ b/include/linux/memory-tiers.h @@ -18,7 +18,7 @@ * adistance value (slightly faster) than default DRAM adistance to be part of * the same memory tier. */ -#define MEMTIER_ADISTANCE_DRAM ((4 * MEMTIER_CHUNK_SIZE) + (MEMTIER_CHUNK_SIZE >> 1)) +#define MEMTIER_ADISTANCE_DRAM ((4L * MEMTIER_CHUNK_SIZE) + (MEMTIER_CHUNK_SIZE >> 1)) struct memory_tier; struct memory_dev_type { -- 2.41.0