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 72D81C83F12 for ; Tue, 29 Aug 2023 14:18:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BD1528E0029; Tue, 29 Aug 2023 10:18:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B810B8E001A; Tue, 29 Aug 2023 10:18:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A71978E0029; Tue, 29 Aug 2023 10:18:04 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 987518E001A for ; Tue, 29 Aug 2023 10:18:04 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 6F1F8C0170 for ; Tue, 29 Aug 2023 14:18:04 +0000 (UTC) X-FDA: 81177346488.06.6A746D9 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf30.hostedemail.com (Postfix) with ESMTP id BAEC380018 for ; Tue, 29 Aug 2023 14:18:00 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=NAt9spFJ; dmarc=none; spf=none (imf30.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1693318682; 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:in-reply-to:references:references:dkim-signature; bh=LsoCT27liONiWvrthZpYM3FYu9mSoZBSWyfs6xEVI5c=; b=t2WbYaMfFoPlp9s/ZZeBQTisNJfHFVLiiBRDwzO4zdAQumse5fpArwruSPrDiVAvm7wTCw 01HuSE+sKynIRtMvwJtvU/NRJMrZA1qFyogKCymvbV1JVltJ3xif6nY587bgwb4JW470ft SRJ4I00bf7jYYovVP5nFWpK0LW5EDRE= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=NAt9spFJ; dmarc=none; spf=none (imf30.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1693318682; a=rsa-sha256; cv=none; b=WunyEe1AnYrJe9330QybvhKF+Ii6hnElqguBG7G61UTUvZEWL9uvsDKMVDSPJfpBSym6yw RF/8dt3dnT1HrQRC4a1IBmgrx1twnTikVZxvx4NmiYvevFTa3V2BSnNjol0FyqaBsHbRNE 8UIJsV+TfTCU4Qj9tsgqMyEjw8gKFgE= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=LsoCT27liONiWvrthZpYM3FYu9mSoZBSWyfs6xEVI5c=; b=NAt9spFJKCkw2rnFAJ5/yiGIEu VKvHufNmsHfbYklkLa7AI55JSp6Jb05NcsGzgUasDbjVL03lEtGIbGEdBGmIN9doNrKTp9/CLgOco xODIVVIh33ZZjVboy8Cik1PHeV+74ZunU+Qif76B+XcB7BgPlOp/1s8POG05P8XcQPud9p48mIwYM N6pdQeHDGVUccZu7Me3GY0ly9phZIbGos6qmyQOxlKBYugNsmJ/P9qRSwui5X2jSIrWOkJXJjNu/x JjazHDY3x+3mxmVIUWPZacK3BI+f//RkLb7naplsfL9YWPQDdYxK4zau4eqSeWFwvL4+ANcHyNhWX nRHUGTKA==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1qazXO-00719b-5s; Tue, 29 Aug 2023 14:17:46 +0000 Date: Tue, 29 Aug 2023 15:17:46 +0100 From: Matthew Wilcox To: Alejandro Colomar Cc: David Howells , Eric Biederman , Kees Cook , linux-mm@kvack.org, Rolf Eike Beer , Arnd Bergmann , Thomas Gleixner , "Paul E. McKenney" , Dave Jones Subject: Re: 'struct dynamic': struct tag leak in UAPI headers Message-ID: References: <926f8e5c-40bd-dae0-2492-f6e6dbd6c96e@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: BAEC380018 X-Stat-Signature: n6tzaiqwt9gry1y37e6yep3o7hb5ejoe X-Rspam-User: X-HE-Tag: 1693318680-330613 X-HE-Meta: U2FsdGVkX1/oQZwVqVUdqYF1xmre8Hwv7XTC2/mG0z8f/ok99mDGjwCs0/WjyiNv5+K0dpkm2ZvRDE8pogPImcV5syZN+2zH2OG7XGqNnhQzWnRa6ZwlaA5DpvjebLllz+U639HMvO6TnTWclL0EVZm6/CZQPYU3kGCIJZM2QoMZz+9oFFIS3IK93KAJ5O2uUzw2knmr+qcp27/Nqs43SWXzai6Id6jn7P134IK2/ZoRH5H3aj/Dh/MYaoOY83oA2eksXadPggcR7uYA3qdPtISqlfn+OdewqhFJWg6QpnFq5XoPTfXfihAFrbGHRsgpOfjlpXAgnnIQZL5MdrnqySGayHYPEmKgMlC4gmUnEB7dbPqOKjXhRQHiyDIt+AycwqvKDmkPRcv52w33z14ssI/ojrUXrZc8eONIicTJ9I9qxryOD8AKXAJdF285A8rjUxPcla0Z2wHvpKs0Mm1+fDZDgHUV+tlcbbjG1lTDbRSOutFHxgbaOcUkxUMTKe4gfPBGScHjlNhEODWNdBLGQHw8CEcEQYdqhw9ohySK+2uLPA2AaFCfXZPxQm97XekBQEmIDhaXZva9/iP0rbm8xuUDQ5lvJSiNrRnxdfoMbDxfCLyjhzck3ow6NQB0vDWc7crhcVrzJf1fbgra7uQyQvHTGNkln62mzZlFU+eVPMKHALtG4j9DPMSuFSJ706cn78GeUIWQEWASP7yS6e3QlwYVhwIDF+the/lF3fnpaEicAiJlPLFQYuxtyKgnoDJoYp0OlKbY08dvg1zJsMRaR9fT0OcDcTDWOP1djc7/XRza69q0KIsIc+MjUHsNhmCpOKadOQfZU+4VQFcccczJ8+cOokTQXAbm2uMJvQTZhDV4ptZpunGb6RMM/we+05vdNmZVMmRdr/WcdWIjqr1GOpmfB6D9AC3H4k+APDDyGx5NgQQyeSq+owjFkacsirX9u9qsjk7HrcdosTwE0Ae QHpSEwMl AE4OCY5/zsqN8U5sY2msiAeF7+e41nTZd/xgD6z8ci8KIiUAQIRAlYKhWvzIseXPdd1enKbYU3xGV7HibRe+Y/dkeBn1fNbq/GldtaerdnA2lNcOFIMaQJTsQuZSKUJi8rjjL9binrq5DVvA= 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 Tue, Aug 29, 2023 at 03:27:16PM +0200, Alejandro Colomar wrote: > > It was introduced before git, so trawling through linux-fullhistory .... > > > 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{ > > > Hmm, I thought that commit was the one that moved it from an internal header > to a UAPI one. I didn't know include/linux/elf.h was a public header long ago. Ooh, story time! Long, long ago, we did not separate "Linux headers" from "libc headers". It used to be somebody's job to take the files in /usr/src/linux/include/linux and copy them to /usr/include/linux. Bold people used a symlink. People who cared about things like "Well, POSIX says that" would edit the files after copying them to remove things that POSIX said shouldn't be there or put _GNU_SOURCE markers around them. At some point, we decided to split the headers to create the uapi headers to make this job easier. Refinements are, of course, possible, and now easier than ever, but I think it's fair to say that anybody who included at any time in history got given a struct dynamic. > Might be true. But since it's a compile-time failure, it's not going to > cause silent bugs. If there was a real regression, it would be trivial to > detect and fix, so maybe it's a risk that can be taken. But yeah, your > concern may vary. :) Well, it's a compile-time failure either way. Code that depended on it is compiling happily today, and the code that would want to use it doesn't exist yet, so I'd rather err on the side of keeping code written in the last 30 years working.