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 1C4B9C6FA8F for ; Tue, 29 Aug 2023 12:08:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 444038E0028; Tue, 29 Aug 2023 08:08:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3F5508E001A; Tue, 29 Aug 2023 08:08:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2E3628E0028; Tue, 29 Aug 2023 08:08:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 1F6E28E001A for ; Tue, 29 Aug 2023 08:08:59 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id D77AE1606E9 for ; Tue, 29 Aug 2023 12:08:58 +0000 (UTC) X-FDA: 81177021156.07.BF41AA6 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf19.hostedemail.com (Postfix) with ESMTP id 342151A0021 for ; Tue, 29 Aug 2023 12:08:57 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=g0tRBgTo; spf=pass (imf19.hostedemail.com: domain of alx@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=alx@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1693310937; 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:in-reply-to: references:dkim-signature; bh=VadlTWbcwhKkMP1p6qqf6aqBTx8FCK4ofSDmcW7I8CY=; b=riOVOb3paiS6ERqHxos6L4C56Xe6Mz7asrE/QKFl1aJBLFn0yBt6fVL8EQsKD1Rb6L72ql faac+PiDOErOK7Rui8Q46UdjgWQSgQ01mXBDLZKmXe2MwcSRI+TXlS4FblPWKYBuKMhY/r TH3i2BeWfR3VhxaW7MmZrhre3Esa33M= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1693310937; a=rsa-sha256; cv=none; b=NZh1J0aJgSB1I5lsPzzLF/srq7MEJJMXQFmGiAjlAGkm4AAL5luLBhq6bh0V2bQhSDnPmC wffsxC5z7YpS7qR8/ZuCyLrNp3o7YlLoW42+lR6JOdQSeuNB2fZL+YX/zMwmBvB2JmdEPK XwNh2cDVdd40idUi8qxYyKcvYrmC7+0= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=g0tRBgTo; spf=pass (imf19.hostedemail.com: domain of alx@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=alx@kernel.org; dmarc=pass (policy=none) header.from=kernel.org Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 4774561950; Tue, 29 Aug 2023 12:08:56 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DF39AC433C7; Tue, 29 Aug 2023 12:08:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1693310935; bh=oGTCKvjmlun7fMrr6KYl57n1SF312rLsYXpNNtKJr44=; h=Date:To:Cc:From:Subject:From; b=g0tRBgTo/vzmOCiSj9v/f3iDg+A02MqmzHGHcjIwrTCRwB5VH+ogrfYudMISwz/6f mAdUsukwPi7PlTI+VRGMVB3U7nvEyMRQJz6b5+Tk1uxS2LOqkioees9BctkEzzcqt+ 6nl5VAKRsC0b/ZOb0e0Lt9aeR40WYt86QiKWHLnOc2GSJIXXe/XxF0sZpbn4nK4QBx k/3WZ5rb49/k6dgkrOUfHVoTZHgxl5uR2jBO8LmnUAILmnC19Xr6Qx5XsnUaGqJ3kE R239043vf+qFzJZrjviJhOvJxuE0RGuljRphq114MwBGX30dNO5w91gFCqBwR/mNV+ LVPPfqKcBBHTw== Message-ID: <926f8e5c-40bd-dae0-2492-f6e6dbd6c96e@kernel.org> Date: Tue, 29 Aug 2023 14:08:45 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.1 Content-Language: en-US To: David Howells , Eric Biederman , Kees Cook , linux-mm@kvack.org, Rolf Eike Beer Cc: Arnd Bergmann , Thomas Gleixner , "Paul E. McKenney" , Dave Jones From: Alejandro Colomar Subject: 'struct dynamic': struct tag leak in UAPI headers Organization: Linux Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------gmg2HAs3sqyYqgIO7LngWi5n" X-Stat-Signature: n95psrppirmrf6hrwe3w7pfh8donzmgx X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 342151A0021 X-Rspam-User: X-HE-Tag: 1693310937-994203 X-HE-Meta: U2FsdGVkX1+b3aoTn34nqjXpV/hSH76PL0h5Ur/1VdsLhEpxXgOR2E+ruUc2/mmAgPg9WMzPWf2JnwKcFCYWnkfymrdMBtIOzTP420CKcoynDZHuJgLOANqVqJkzTcsxtt3gUdtbTxdRSaj2io8xdyL7RXD9wAplFek4hwrQonbMGgkmy/m7EO1C5R/YDdUbde33ugUYG3qNDGVz5p/Tm12BWbSAREWM+bfe5eb2yFso2P+DgOPd9ae8oopPNgnMCjYDCK0zRouqfn0GYc9JUIRP2DDcdgU87OhR2Nns325RR9P6jNUnX+mfcoyG6eTuf5A3LRPrhBfEGHGm39KQiSr0giBSr7+E1oJuOYYUaEh9+dlWR6bn1hDvrYt068M6lYjh2G6WbuA/YFEPXYEYrs9groabKvcZlJ8d3eRt1ZQaZwaZXSyLiIVc7qwPNtBiejeR7Kyk6nf1KPooxUN4zgILLRuRsvzTTjv99w72pS3uQbfB3Ip7gXeAzyDWNwzgZ6f7zx6Tydz/n4+TfyY29T2i0vxMoNIrnwA6ypuPw4ts/5lSa2r6KVK5fReOLtmUbHqBPzdyZUTzb5TCS+3DVGsYUBZEKq9hAFFFgW7L96iJalMP0hr7zMni3rYiGNQDctRRCKqJ4vsDpKchWSZV3G6L1NeHGLE6EtSEs3oxcRlNn1SfRPkePqQcrZDGj5IuEEus/5pal62WRPT8k/mIT8+5D3FqVvVPdRiMOfcJ0QZuqaQfxU+lR84+uyb/aOs/1ozoUFRqYcpzTl0tuwaJ9V/4UFTd/wu/pxwIWDbAPxgRwpbDP3aLxVFldJAHu3m1cvHGzYrI8KAdhjuVs5zUvQ/enaKRIAC1vAPgtUzZYsMFqWrBAsuh+f3hkc95gEb3MHEKKwuBHiIZiHHygt/NIQvznIj5EYfIPw/Je9kwdvskaQyk1AiKbXeYlQSgDKZwCShyX881qOVK/b73PIn o6pwOUPz Nu8pAEEML4JMM0avkSgyX6C0S9GCBMaYnoyPEt0+RcBw56vKbgnuEnvpcTDe+2C8Mkv1mLmP+mm9WDNfqUYaqQJtRlIWjZqXkn091XXWn4/7KZi6nnwlk0vv7W7IWFneG5UmYE2FVhWHiTAtA2LJK0PZ2TXtf23xFqQ/sQFbWMmJMU74TkZB5csLyX2xOrRSDGZ5264a+39jIz4MvGFIL1wYS+lMUYFxrT99u3QFi9P4Ifwdpg9wb5gjKGmMmATtSA4oNa8MWtvOxhgQJZS1RdmXhKq/aSdXlSEUTrGb971RHfSGFwXvtFQNojpgjZyVdMUaksg0Zq8suagGay0kILVXwmZbojd588MhDASIaFXPUGoVp0YmU9Cj8bb5OcHxQGeTiiJxELC5ymFOoiPMoGvb+a5oVNnArRSQVR1Y4zPj6PSnX+vXLjddj7iXx6gHum0UjIuHdlCSWvDaQIj2gXHwrHQL/9cO/qaSHdAHJT9rurn4f+IvFql3JvggN7oPVkLvIeL0nG5lIBmTdaxfYrBz/wzfZxZZgjuBtRpIxCv3vX0jbgwqh3pFkuaTIUml3vxsWoQLvKehdMMlaToLWDFTzfDD9buDI6dBfSmIL7eKHlwW2/x9ksZ2B25+64ZoKOCOfVRdRUtkb/no= 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: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------gmg2HAs3sqyYqgIO7LngWi5n Content-Type: multipart/mixed; boundary="------------UVZNSj3ZxN1pX03tdkXTIggl"; protected-headers="v1" From: Alejandro Colomar To: David Howells , Eric Biederman , Kees Cook , linux-mm@kvack.org, Rolf Eike Beer Cc: Arnd Bergmann , Thomas Gleixner , "Paul E. McKenney" , Dave Jones Message-ID: <926f8e5c-40bd-dae0-2492-f6e6dbd6c96e@kernel.org> Subject: 'struct dynamic': struct tag leak in UAPI headers --------------UVZNSj3ZxN1pX03tdkXTIggl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi! I was reading elf(7), and while checking the actual type definitions on my system, I found out a kernel struct tag that probably shouldn't be there. Here's the definition of 'Elf64_Dyn' in my . $ grepc Elf64_Dyn /usr/include/linux/elf.h=20 /usr/include/linux/elf.h:151: typedef struct { Elf64_Sxword d_tag; /* entry tag value */ union { Elf64_Xword d_val; Elf64_Addr d_ptr; } d_un; } Elf64_Dyn; And here's the one for 'Elf32_Dyn'. Notice that here there's a struct tag. I expect that such a tag would be prefixed by ElfN_, but it isn't. $ grepc Elf32_Dyn /usr/include/linux/elf.h=20 /usr/include/linux/elf.h:143: typedef struct dynamic { Elf32_Sword d_tag; union { Elf32_Sword d_val; Elf32_Addr d_ptr; } d_un; } Elf32_Dyn; It seems we should blame an automated script :) $ git blame -- ./include/uapi/linux/elf.h | grep 'struct dynamic'; 23a7aea5faf65 (Rolf Eike Beer 2022-10-04 12:25:40 +0200 143) typed= ef struct dynamic { $ git blame 23a7aea5faf65^ -- ./include/uapi/linux/elf.h | grep 'struct d= ynamic'; 607ca46e97a1b (David Howells 2012-10-13 10:46:48 +0100 143) typed= ef struct dynamic{ $ git log -1 607ca46e97a1b commit 607ca46e97a1b6594b29647d98a32d545c24bdff Author: David Howells Date: Sat Oct 13 10:46:48 2012 +0100 UAPI: (Scripted) Disintegrate include/linux =20 Signed-off-by: David Howells Acked-by: Arnd Bergmann Acked-by: Thomas Gleixner Acked-by: Michael Kerrisk Acked-by: Paul E. McKenney Acked-by: Dave Jones $ git show 607ca46e97a1b \ | grep -e ^diff -e 'struct dynamic' \ | grep -B1 'struct dynamic'; diff --git a/include/linux/elf.h b/include/linux/elf.h -typedef struct dynamic{ -- diff --git a/include/uapi/linux/elf.h b/include/uapi/linux/elf.h +typedef struct dynamic{ struct dynamic is such a generic name that I don't think it's right to expose it in UAPI headers, as anyone might reuse that tag for their own purposes. Should I prepare a patch? Cheers, Alex P.S.: Rolf, I added you because you changed the space in the struct definition to make it easily greppable. You may be interested in using grepc(1), a shell script that does multiline greps of C definitions (see this email for an example of how it works). It's the natural evolution of hand-made greps of C definitions, based on pcre2grep(1). It's imperfect, as any REGEX-based tool for this probably is, but it's quite useful already. :) --=20 GPG key fingerprint: A9348594CE31283A826FBDD8D57633D441E25BB5 --------------UVZNSj3ZxN1pX03tdkXTIggl-- --------------gmg2HAs3sqyYqgIO7LngWi5n Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEE6jqH8KTroDDkXfJAnowa+77/2zIFAmTt380ACgkQnowa+77/ 2zJHJxAAjOAqbsWDF1uKW40YLwYCPP/hyqX1WLXAobjrRcT7OQ3vRAX2EKYKOEna yKGf1rDhYuq1VUDJAcvnW6QqGI+cWk5+b1xNBowHOG3SFNWl2LJf+Ont07aIaZLT NC3rPhaDGuTbl8d4tTUo/b4Iqd7kOb/+dbcOKPksGsmiOE7dIX194eaXcKmIi4ve 6M1rKccsd0v1EE+bO1BDevhDfZCN6qJHb4PMxfTlyWSIog1STfrKFMqInLy3OXbK PAgDT1mTwceqsV5TCIOJukZgHb935TDtr3XZlKG07HlyRmNLK3I7DYbm5Yy34+wq uw7nwtax7AX/l7I9NAZlsNfPcQ9o+7Bg3IJ6ouDaeukaWam66n7SRQhiJTegKQln UPp4ZJMCbVVR5R1Bq3F+ftRCpS+8GNOUvZwBK2RLbAYc5lSKMTQA1CrwQXLBqg4d DkcC9WCwYsXz2ICl57pTEcEMsO6OZu9EIscsYai2Y8uJSXU4SRg45A1U0dsJri0G 3JLLceD/ZTS8SxyalNHFipQwRXTp4OmHr2ZKk0R6J9l73PK9raL/lqYGeFy3CtaR yj9/Xd7uDksknpoqtzH6FmabyVqtIFha8HIdzfVrgI8XC9nmYEEMlZP640Zkmb2w H0K1Pb3XQuQRnTppZKcLd9MwI7RteBkte1/BzutO32Yk8nTkx/c= =qFFt -----END PGP SIGNATURE----- --------------gmg2HAs3sqyYqgIO7LngWi5n--