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 BDE64C636D4 for ; Thu, 16 Feb 2023 03:02:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2E33D6B0071; Wed, 15 Feb 2023 22:02:04 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 276C36B0072; Wed, 15 Feb 2023 22:02:04 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 134A76B0073; Wed, 15 Feb 2023 22:02:04 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id F3C166B0071 for ; Wed, 15 Feb 2023 22:02:03 -0500 (EST) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id BD1D0AB62A for ; Thu, 16 Feb 2023 03:02:03 +0000 (UTC) X-FDA: 80471655726.10.1171D72 Received: from out-47.mta0.migadu.com (out-47.mta0.migadu.com [91.218.175.47]) by imf02.hostedemail.com (Postfix) with ESMTP id CFC2980011 for ; Thu, 16 Feb 2023 03:02:00 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=PPrj1pgK; spf=pass (imf02.hostedemail.com: domain of muchun.song@linux.dev designates 91.218.175.47 as permitted sender) smtp.mailfrom=muchun.song@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1676516521; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=oBZ4aOX54Qf7DGSR8bvaHs3h5OL6RVtn8Ath+roiWSw=; b=COPjxeRcvcrJN0XoryrjlJkBvTesIvzrspfePhz9rkwRZF6DQqonH/Lst7gmUo2To7K3bu wtgX4mINvGdIIfzijiqInz9F9MBbjQGjFID9pwzYqie+H1bRrw06RSHw3GFAvEDDaoxXCg Py3/Uf2okY4L+Fznq//VX9tH1JWRe7c= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=PPrj1pgK; spf=pass (imf02.hostedemail.com: domain of muchun.song@linux.dev designates 91.218.175.47 as permitted sender) smtp.mailfrom=muchun.song@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1676516521; a=rsa-sha256; cv=none; b=eN/IlIn19VskzmgI3uzO6dLMseCUvygZSHouA1JCfc6k3zPhMvtGOwkDpeRa8bxhB4dw2O ZpdXbjCqyQW3nNF612VceS7NLDcme9JjuTCJRZkH33WdkBLxmkI4ugsvTo5atfJqiKxe+H I9/3DAj/ALWOXY4d5lhodMPQJNx9EKg= Content-Type: text/plain; charset=us-ascii DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1676516518; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oBZ4aOX54Qf7DGSR8bvaHs3h5OL6RVtn8Ath+roiWSw=; b=PPrj1pgKhCBIVQT6V5CAEKhDG2BzDiYhhsg9aF32ZgqPvB7BBWqKLJH2LzHR5BrkEv0C7R aV47siLcyBaZbfUQ5tsCiwxbotIunF3ouZyWXc5ZgM7VYCNhioI4hALbscQkB5bhuiOJjQ e3mpXeRDln2mUFIzl1W3zchyQRbDORg= MIME-Version: 1.0 Subject: Re: [PATCH] hugetlb: check for undefined shift on 32 bit architectures X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Muchun Song In-Reply-To: <20230216013542.138708-1-mike.kravetz@oracle.com> Date: Thu, 16 Feb 2023 11:01:13 +0800 Cc: Linux Memory Management List , linux-kernel@vger.kernel.org, Muchun Song , Andi Kleen , Sasha Levin , Anders Roxell , Andrew Morton , Naresh Kamboju , stable@vger.kernel.org Content-Transfer-Encoding: quoted-printable Message-Id: <9B09A3E9-09E6-44E4-9B4F-30975C6947B7@linux.dev> References: <20230216013542.138708-1-mike.kravetz@oracle.com> To: Mike Kravetz X-Migadu-Flow: FLOW_OUT X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: CFC2980011 X-Stat-Signature: shsm4m8cf888hi6n8tucr34coc196u1u X-HE-Tag: 1676516520-922504 X-HE-Meta: U2FsdGVkX181JFvTbO/+rPFNMijEamNcoKeCLo0GdZE+GkAKody4CZubd2IreaHVVEoqIYjaVZsAiJYOi+Nc5vRypVMAHgtsSTzMDt0ZX9JQ2btZ2Hr2T0/O0yBcGmlvpBTiAkKfvJDMAY8SW48C/w5HQb0Fx3/WPIUmuAvMD5LcQvwpW5yvbhIanKNXWH0LMawojqvXGjlSEaFqQl/5MKIOdf5EmqLo07nEzdT4iqhByt6Stynt4gBA6+wZjwemKhL2dwVr9iE0WSaZM4xwEky6mVbGZgE6thYunh7o3ZgXiVMNzV7OjCdw6cpFArTXrOFcAA5C9VwxT6r6Q3x++blSAxtg9Gj9lnyl1nl1S9d7fhgoVn21rbOEgvCFM90gfz5XmCzsSGK7w8QyD99irsutRDJUdQmPLdB9wfDkrVnaf0d5WeD/bkEIaoTbjJH4HXA3mb2w1/5kcRIBKzPWqJfRW+xGuQL0r1DRLrZ9Ii0F6JbzlsefEBMKjlKI7Ok8kX2A/hEf1GCyxaOItOHnytocL7h2Zv9ttoCvwOKIRmVfwmsBV/KaZScAJfY1MVCBXp5UBwUCO/M5xN8iJC28uQOPwkeUWgcKkw+3lgMtAmHyB80HCebplb7tti+BUGEFVkqmN4ugjSEzdNX4q32q7LW+JY/P3Jo/X7VdJuQEC6SIA8EznXrf1LUvPJybw8hkd3YYz/aY4YiZbFa431dfCtTb+xHhSFfgtVH2rbRabCVVNb63RRobJOiaq/ATMGqbYEYrDhiYuDciQUMb+jl2XxaqH+L/TISd+6cKa5CYChgefNNdE1bT7/RmcD6AwN0tKYEe64iqO0YELubqkLztem5HQJzGxV+RlYRIvudYFgOGJtJZ/77hBzpF47DR7wDKGknet63uo/GmBk0/GteWpiXT0GJyswoCtiFkIrvWT2IWMBzwYmUPChaEjzDB6Imzg5PNdGCVGydoN21nfB7 07Ru+ebX CrcWBpPUOQtyFJ/0cNewAm0fxY4RfFiiblMKpp7ODXH/QDvQH2BoaUb0j2KVJSGwbpTVP/wJG9pp0t3HkK7YmDn3M/nHkoi/PmBEa8HYWDFKtzcLYn7YfdmaFA9zxT/sDjUBqz1zm5opnssxrrsKEY7wTbYAhvHUUpfSaVgotRo8XiSBZN07NNiSMs3ncuZOA2dlVIZ0KX00PzfilisJKDRkXq/MvxZKIzKrwJ3DeZWvCdjBL2t6PmbExPOOxG4hJC+tGzWvkrrMzHFNYdGbtX9k5vXmwXfLvqHi3Afbr9ix5aUR2NEPWxRGuv0RerrCPDZKs 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: > On Feb 16, 2023, at 09:35, Mike Kravetz = wrote: >=20 > Users can specify the hugetlb page size in the mmap, shmget and > memfd_create system calls. This is done by using 6 bits within the > flags argument to encode the base-2 logarithm of the desired page = size. > The routine hstate_sizelog() uses the log2 value to find the > corresponding hugetlb hstate structure. Converting the log2 value > (page_size_log) to potential hugetlb page size is the simple = statement: >=20 > 1UL << page_size_log >=20 > Because only 6 bits are used for page_size_log, the left shift can not > be greater than 63. This is fine on 64 bit architectures where a long > is 64 bits. However, if a value greater than 31 is passed on a 32 bit > architecture (where long is 32 bits) the shift will result in = undefined > behavior. This was generally not an issue as the result of the > undefined shift had to exactly match hugetlb page size to proceed. >=20 > Recent improvements in runtime checking have resulted in this = undefined > behavior throwing errors such as reported below. >=20 > Fix by comparing page_size_log to BITS_PER_LONG before doing shift. >=20 > Reported-by: Naresh Kamboju > Link: = https://lore.kernel.org/lkml/CA+G9fYuei_Tr-vN9GS7SfFyU1y9hNysnf=3DPB7kT0=3D= yv4MiPgVg@mail.gmail.com/ > Fixes: 42d7395feb56 ("mm: support more pagesizes for = MAP_HUGETLB/SHM_HUGETLB") > Cc: > Signed-off-by: Mike Kravetz Acked-by: Muchun Song Thanks.