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 F3E0FECAAD3 for ; Mon, 5 Sep 2022 20:30:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1B14580200; Mon, 5 Sep 2022 16:30:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 161BE801E6; Mon, 5 Sep 2022 16:30:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0286980200; Mon, 5 Sep 2022 16:30:50 -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 E2F58801E6 for ; Mon, 5 Sep 2022 16:30:50 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id B13DC1601E0 for ; Mon, 5 Sep 2022 20:30:50 +0000 (UTC) X-FDA: 79879175460.30.3F370AD Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf08.hostedemail.com (Postfix) with ESMTP id 7B730160078 for ; Mon, 5 Sep 2022 20:30:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:In-Reply-To:From:Cc:References:To:Subject:MIME-Version:Date: Message-ID:Sender:Reply-To:Content-ID:Content-Description; bh=evXPKDiTefqmYvqBhx3DzCWnldGzYwfE5UX+UO4CDuc=; b=jdBmF3eqR2iUvmTfv8o+efwLGQ ik/I06J0s/BjmsX8gc2i1AkYaZIdb75b5pjl6o4/HVfWLqebx8gcBbaqAucjgUYwqzfk4gTfUl7xD CNbyXYIXjcQvO0giHdMBVDbM3JsDITrqUs7idsU6hFnaNHebpw5XUV2rruUw8nF6jfTbcinrabHt6 D0TkDUUmCcnZMM0hQrToLcZm5gUAlVaIPXA3F0ZMhZR8QfIraijU4rPbPSF/LrKgKHCk293CR3pcl LrL+qyPBQ0df+R7OqW7fN7FgLxI+gCDvaj6fKGLFJm0/KDMtOYkS/Tls+8hXmBvkQunhsky/OrTh7 DK1mymmw==; Received: from [2601:1c0:6280:3f0::a6b3] by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1oVIk2-00AZbi-6d; Mon, 05 Sep 2022 20:30:46 +0000 Message-ID: Date: Mon, 5 Sep 2022 13:30:45 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.0 Subject: Re: [PATCH] tools/headers: Fix undefined behaviour (34 << 26) Content-Language: en-US To: Matthias Goergens , linux-arch@vger.kernel.org, linux-mm@kvack.org References: <20220905031904.150925-1-matthias.goergens@gmail.com> Cc: Andrew Morton , Mike Kravetz , songmuchun@bytedance.com From: Randy Dunlap In-Reply-To: <20220905031904.150925-1-matthias.goergens@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1662409850; a=rsa-sha256; cv=none; b=uO5euDY9vDEZ8KqY2z2dfuc4RD9kxHztMRumtAJzHKFPLVUZmzzJyDBXP8n7JhXmbtufP7 Nu0ObTWv9I8WgUGDs+32ulwG1+6R6KVLA05VcEDola2v2zy+yfmx3GKAHn1FWTH6qqwMc8 CB86GUpByCplVQOfG22kfil8EWLTnj4= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=jdBmF3eq; spf=none (imf08.hostedemail.com: domain of rdunlap@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=rdunlap@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1662409850; 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=evXPKDiTefqmYvqBhx3DzCWnldGzYwfE5UX+UO4CDuc=; b=Ev94rPWtIjwGOmPf9nG7Z8HhmDgkKk84n0nMOWhWtuPZSLeg6zUU8nMj9s5dYpjPTm/4YY frz/wfxt3Cj0lYJIanNZ50N/1Y6CUbFYUwYlCGclUYfL/1ZBfUUnat/sRWHdKu9m0TzvVD lmiyKd+ql6RRL47KOmUkvd8H0NhwBo8= Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=jdBmF3eq; spf=none (imf08.hostedemail.com: domain of rdunlap@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=rdunlap@infradead.org; dmarc=none X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 7B730160078 X-Stat-Signature: mjzysq49zxr57k67bnhfh89op7t4ux7y X-Rspam-User: X-HE-Tag: 1662409849-790997 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: Hi, On 9/4/22 20:19, Matthias Goergens wrote: > Left-shifting past the size of your datatype is undefined behaviour in > C. The literal 34 gets the type `int`, and that one is not big enough > to be left shifted by 26 bits. > > An `unsigned` is long enough (on any machine that has at least 32 bits > for their ints.) > > For uniformity, we mark all the literals as unsigned. But it's only > really needed for HUGETLB_FLAG_ENCODE_16GB. > > Thanks to Randy Dunlap for an initial review and suggestion. > > Signed-off-by: Matthias Goergens a. Since the header file in tools/ is just a synced-up copy of the include/uapi/asm-generic/ header file, I think that the subject would be better if "tools/" were omitted. b. Adding Andrew Morton and the HUGETLB maintainers to Cc: list. Acked-by: Randy Dunlap Thanks. > --- > include/uapi/asm-generic/hugetlb_encode.h | 26 +++++++++++----------- > tools/include/asm-generic/hugetlb_encode.h | 26 +++++++++++----------- > 2 files changed, 26 insertions(+), 26 deletions(-) > > diff --git a/include/uapi/asm-generic/hugetlb_encode.h b/include/uapi/asm-generic/hugetlb_encode.h > index 4f3d5aaa11f5..de687009bfe5 100644 > --- a/include/uapi/asm-generic/hugetlb_encode.h > +++ b/include/uapi/asm-generic/hugetlb_encode.h > @@ -20,18 +20,18 @@ > #define HUGETLB_FLAG_ENCODE_SHIFT 26 > #define HUGETLB_FLAG_ENCODE_MASK 0x3f > > -#define HUGETLB_FLAG_ENCODE_16KB (14 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_64KB (16 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_512KB (19 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_1MB (20 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_2MB (21 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_8MB (23 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_16MB (24 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_32MB (25 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_256MB (28 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_512MB (29 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_1GB (30 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_2GB (31 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_16GB (34 << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_16KB (14U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_64KB (16U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_512KB (19U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_1MB (20U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_2MB (21U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_8MB (23U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_16MB (24U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_32MB (25U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_256MB (28U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_512MB (29U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_1GB (30U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_2GB (31U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_16GB (34U << HUGETLB_FLAG_ENCODE_SHIFT) > > #endif /* _ASM_GENERIC_HUGETLB_ENCODE_H_ */ > diff --git a/tools/include/asm-generic/hugetlb_encode.h b/tools/include/asm-generic/hugetlb_encode.h > index 4f3d5aaa11f5..de687009bfe5 100644 > --- a/tools/include/asm-generic/hugetlb_encode.h > +++ b/tools/include/asm-generic/hugetlb_encode.h > @@ -20,18 +20,18 @@ > #define HUGETLB_FLAG_ENCODE_SHIFT 26 > #define HUGETLB_FLAG_ENCODE_MASK 0x3f > > -#define HUGETLB_FLAG_ENCODE_16KB (14 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_64KB (16 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_512KB (19 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_1MB (20 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_2MB (21 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_8MB (23 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_16MB (24 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_32MB (25 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_256MB (28 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_512MB (29 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_1GB (30 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_2GB (31 << HUGETLB_FLAG_ENCODE_SHIFT) > -#define HUGETLB_FLAG_ENCODE_16GB (34 << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_16KB (14U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_64KB (16U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_512KB (19U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_1MB (20U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_2MB (21U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_8MB (23U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_16MB (24U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_32MB (25U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_256MB (28U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_512MB (29U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_1GB (30U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_2GB (31U << HUGETLB_FLAG_ENCODE_SHIFT) > +#define HUGETLB_FLAG_ENCODE_16GB (34U << HUGETLB_FLAG_ENCODE_SHIFT) > > #endif /* _ASM_GENERIC_HUGETLB_ENCODE_H_ */ -- ~Randy