From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 83BEBCA6E for ; Fri, 4 Aug 2023 15:44:16 +0000 (UTC) Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 61963170F for ; Fri, 4 Aug 2023 08:44:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1691163855; x=1722699855; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=VUlI8+wYgoTMSUHqM2G2LignUHDjP7afJfdtaWB/58M=; b=TCyLAcVyGzPHKHMS6e7ukj7RFkwYO3mLSSh997xFgX//HZXSmHKrcx6d fidUfU4MEL9zaOqOzYfXG81u0SCFQFbbPPTDfPEO5HKOwlzjEoGefLDPc JZhyAbgOxCp/vIq55ulqyVEm/aMlCl/aU/kOX2Gu73pEUfKLWcicKYuYA eUsP9nyNjxYEmv9WE+B+VPy9B2DDsp9Z7UARPMvOsbX7a/26yF1RMZSlf grJLC4WKixRiESbdiumNQ+gTRVCpSMXfT8G6eJ0alx4l6wEGdhV8OsKKx 1AZeHDyX25KNr2gQal/ppNVE+yPZb9ZPKptGESx7sTmzcNGUeaOEH1cXO w==; X-IronPort-AV: E=McAfee;i="6600,9927,10792"; a="434029837" X-IronPort-AV: E=Sophos;i="6.01,255,1684825200"; d="scan'208";a="434029837" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Aug 2023 08:44:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10792"; a="853784470" X-IronPort-AV: E=Sophos;i="6.01,255,1684825200"; d="scan'208";a="853784470" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga004.jf.intel.com with ESMTP; 04 Aug 2023 08:44:12 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Fri, 4 Aug 2023 08:44:12 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Fri, 4 Aug 2023 08:44:12 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27 via Frontend Transport; Fri, 4 Aug 2023 08:44:12 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.109) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.27; Fri, 4 Aug 2023 08:44:11 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YnPNY1PVTDIMs/dSAFgLHy783ffAVRhA66gqN/53EPTMMi+XKmAEkl5cwdCsZNWu6kjYDPaJlW4PoUuZ3AmY8o3X2KWvsRRR7sa5klZu6pzAdI/wYWX77rt/+viaVjy2Mtml5nz6TeZNpuukVmuyfbLsG8ksOnQELmWqeb1flj+njrPLhQ+BL4uYCBZS4GX5SjjsIe7GEGl0jTpMR+z1+m667zt39nB/bd6gTHIZm82+S5Oj09uwRyO+6yVxhPEyhVDsc3uQ0yW9smqVMYxpvHMN/MrpWzRPyL6o+gfOVxleZ3t9uBCyUYJ358IWpvGjkr1l7pmPSoM3VxaLPsYtvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=bioe9/6SvQpOyXpB+ROUYh7RvMpJQOG6B1qW/wHpjyo=; b=DOZVHYTQ/taoGh46TNEAIQ742LxSKAOi9QeZdxIZnMuWrHfWGjUi3cUZ21YmyYdIZncv+8UjhIo2CAy6inqDmuYzzy1EWwVuJkUkPuaZt52zud2c6wakvFmyKCrTNEegECc9XotCsrwY9iDFmTtJrHXqK6k0ncNxb2SVaBdyuHNsziAfL1egGb1n3nZkd3vpog8RTBnBagO9OBqbVmFtxk0/tNt9+U/wIVJhcitVj/jkP6b8KdqLpPqQvX7JOnTEXaEXyRfeYm7UYC1M6moF94pbt8pAYBd+8jHY8bfPmxLNouRB2LNdoo5ZCkSWiw+vfyUXFl8enIcC3aBAxB8/Xg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DM6PR11MB3625.namprd11.prod.outlook.com (2603:10b6:5:13a::21) by MW5PR11MB5881.namprd11.prod.outlook.com (2603:10b6:303:19d::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.20; Fri, 4 Aug 2023 15:44:09 +0000 Received: from DM6PR11MB3625.namprd11.prod.outlook.com ([fe80::44ff:6a5:9aa4:124a]) by DM6PR11MB3625.namprd11.prod.outlook.com ([fe80::44ff:6a5:9aa4:124a%7]) with mapi id 15.20.6631.046; Fri, 4 Aug 2023 15:44:09 +0000 Message-ID: <572fb95a-7806-0ed1-00e3-6a7796273946@intel.com> Date: Fri, 4 Aug 2023 17:44:05 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [RFC net-next 1/2] overflow: add DECLARE_FLEX() for on-stack allocs Content-Language: en-US To: Przemek Kitszel CC: Kees Cook , Jacob Keller , , References: <20230801111923.118268-1-przemyslaw.kitszel@intel.com> <20230801111923.118268-2-przemyslaw.kitszel@intel.com> <202308011403.E0A8D25CE@keescook> From: Alexander Lobakin In-Reply-To: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-ClientProxiedBy: FR2P281CA0137.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:9e::12) To DM6PR11MB3625.namprd11.prod.outlook.com (2603:10b6:5:13a::21) Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR11MB3625:EE_|MW5PR11MB5881:EE_ X-MS-Office365-Filtering-Correlation-Id: ae0b64d6-0fa3-4389-f57d-08db9501a495 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NDAQdzZYvbrtKJD0pQZ1vtojS1jADAO/EHZ9GCzp/Ut2fntzwdVgPOkuKoIajpLzlr39sgxQn5QOkg/CR7gHcY6jpzOzuNmk6hbberVe8ABBv6/XqOcFpHdcTEUry0dY9jKhE4hXVqzWTlLEsT82vNGl0+z9dGMqY7ZsqpACxrZ3J8ZWzzXv42CiQF8knAtlMpKw2M14Hie25pBkkVew30P4EUbP93zvExq3rmwl0ph/Q7IRt81zsSYCIMpOlEa2Ysky+FNka3AZfIVr/hCT8ag+G2tfckzbNP15Fb6mglqS8wqFiqvooD0fhPqa/TCsCrpHSMlXRf9g2Z7qxXGPRfC3r/3VwMUVhv9cNFjKhx7TTx88m26BcxpetPRU4DXiduo+jbk0Sjem/y9+fiyZafE1Fzfx+Gub/plLUg1xObv5Pq0oCe9rxqA77nm634i0FBNGTMFhvo4j+O72p0P6QTSCYpwGI74Qfcbkyz6ShNY11wPQelERNwhfjAGBL68KkfY3TpYbqWJ7E9zuRuN4+RZSZbArcxHlgwb8f2hwzXfZejr19OFBjn+vIqiOi5XFeytbHsFTnu2xhTDem/3/pVDLTbUrqY0BItN2YyvSW9oHFCQnWBBBwpM1zKLf0KT4cxMG1/9Jsrts6flKlTEOhg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB3625.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(346002)(39860400002)(396003)(366004)(376002)(451199021)(1800799003)(186006)(2616005)(53546011)(26005)(6506007)(8676002)(66556008)(2906002)(316002)(6636002)(66946007)(5660300002)(66476007)(4326008)(41300700001)(8936002)(6486002)(6512007)(6666004)(6862004)(966005)(54906003)(37006003)(478600001)(38100700002)(82960400001)(31696002)(86362001)(36756003)(31686004)(45980500001)(43740500002);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SWZqa2hEcVdzT2cxVVFXT09EMGpKNjBmQjE3K2xjMFVzN01EWFB1RGZiTUpZ?= =?utf-8?B?MDdEeEMxdUZEUlpPV2ZNczhwTTJodXVMZzNoUE53RUVMN2VRL3lKSmZsM20x?= =?utf-8?B?VFVycmFkdGxGQUE2S0xuWjhESGo2NVBPalN4NExDUnBrQmdsTUJnTlh1WGFK?= =?utf-8?B?QTVUc0FzUHljRHRmTWFlbE9lejkwcDU4TlhOWloxVHRlbDFHQWg3eG9ES0JG?= =?utf-8?B?SkJqWDhYd0Ryd25NSFB1ZmFGVDUxanA2aWxwdThtUXplSUtreEU1ZklURm1Z?= =?utf-8?B?RDgvNXNBOWtwbFFORHFDd0dIaUVLbDlzMXJUeHBTU0Nzc0RjMndmekk0QUVH?= =?utf-8?B?dnlvZllrZ0I3U1ZEQjBDQ3AyR2hqczBodmpta3d0Z3JWR2RGdzFhZjN5ZE9O?= =?utf-8?B?V1ZxU1RUckNzTHd5clVJcnE5UVJHblo2N0I4a1NvZ2xsU0QwUms0aXQ5VVJQ?= =?utf-8?B?S2JESGRXMlZ6TmNUU01IbWtjb3ZiYXdpckxUcWFFY0VaeFhVL2g0a1ExRDlL?= =?utf-8?B?SGljZ0pvbHRoQnBYVGRicGxackd1UXJoVG9hMmVVb24xWGx5THZiRDFjSmpR?= =?utf-8?B?SE5wTnZSQkhleEQ1alBMelBtMEdGVFZXZTU1ZzlTOFVscDJ5dlY2RW1RdFJy?= =?utf-8?B?NXZpeVI2ZlFYZW5FbnU0alpYMmFjSlFNZDEzbjNFRGJmT3FVQm5WSVFWMFk5?= =?utf-8?B?SDhiVDg0R0kva2VhYTFvTnpXQllndjRIYVJ2eTRWUE1nUm5ONlJzVDJqQnVS?= =?utf-8?B?cnI2NjVORzIwdXlXbXdSTUoxem80Ly9jYXpiTUZ6UjJkWWRKNGppb1pTWGN2?= =?utf-8?B?Rzh2ZG4wMWU0WnBjWkZSZy9uckp6UEc2VGZENHZQZElLcVhTOWxCNDJrSHBo?= =?utf-8?B?WTdBYVJhWjJKWTBIQkV4WDNVTXRLWmlHWXV0azVoR0NhK0JWVkc0bzRGNldu?= =?utf-8?B?K2o2Z2JuSXBOeW1ZOEdqZmZsSXJidTdtRU50dkxtZ1hmbHRnQXBxZE90WVhP?= =?utf-8?B?NEVqaVdLSG83Y1c3ZVV2UXhCb2VsYkwyYjVIR1ZITDZpcE5jelRvcGVRbHJa?= =?utf-8?B?SmVacGZyejh5SU1DYmNYNHI4eFNqRUFudkp0MWhudDNBVGZEV0xqckhGUk1l?= =?utf-8?B?aGJVaS8wbjNCNVU4NGpTNmkxc2hVc3NQejFYK2tQVFpXcmRrQkRmVlN3MUJP?= =?utf-8?B?RWsybEYwQjRNS0R0ZURQS2ptZlBydzdVNWk2dU1FaDZEWjg4U3l6MjM3QjJC?= =?utf-8?B?RDhvdVlJWVQ2UzVxWTQ1c0NoMWxGc0NUbkR0NGlMeGZ4R3NLZk54MHliRFhi?= =?utf-8?B?d1VuKzBXREZLTGZjQjU0VWZHNlRmT1Q1b1NpTTdhaGtOWEViaVlvak9xMW5M?= =?utf-8?B?VDhtZDBHeVgzMmcvd1NhQzN0b1AzRXJpSkhncnVHUy8zV29hSzg1MmtIcmtP?= =?utf-8?B?STlCN2hXVUNjd0NXSEVXbUpvZUFxQTlZWXI2N0ZuTFhCcVpOT0w5T3BpRjJi?= =?utf-8?B?M2lsOFFveDYvS2lGNENwN0ovN1I1S01VZ1ZBK0pwckVLbVVUOWF1V1ZiVFVt?= =?utf-8?B?UGZTb0hFZWowRVVsRG0wTm4yTENNdUpGampnK2hEdUhJOVc1N1F0enNTWmVk?= =?utf-8?B?Q0N5OURhODU5aUwxeWZuN1RNQlkyQzhUSndtUTU2R25JMW0xc1F2cWI0cm1N?= =?utf-8?B?L05HWG9sNmtURlduODZwUEpDRytucHlWMVF4M1pta0pYN1VlYUZoY3ovakRn?= =?utf-8?B?dnZabDlKSGIyVXNuT3U0MkcxOStza0ZjK0tjanU1eWFDTEUzOXhQSndLY3d4?= =?utf-8?B?VFNtbkxSOVlaNzNZMlBtWFZPeS8yRUJDNEJGTWlNQWRucWNrdWVSVlFZYXox?= =?utf-8?B?VmVleW1qbmdIUGpnQ3VEVnJxZS9ia2NSMjBuOE1DVTN2SmVEaldKWWxDN2Vv?= =?utf-8?B?OGtjN1JORUEvTU0yMmRVK2F4WmlqaXkrcThkQ2IxNi90UmFra29ueDMwRTZs?= =?utf-8?B?OXJKeTVwS2RSZUJDbFBway93VTBIdW5yRzRieCtBRmpnUjNsRCsvTGlwNDlG?= =?utf-8?B?eXljMDVXb3FFRW9ZczRlOUdHTGRxbmIxT3lhdjRGdExNVW9GUG4wejBrVFZW?= =?utf-8?B?eG9ZN28yVkNma3h4R0hUWlZqUllqdXI2TTdoQytIY3p4OXBBeTVDb3pIVVFN?= =?utf-8?B?a2c9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: ae0b64d6-0fa3-4389-f57d-08db9501a495 X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB3625.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2023 15:44:09.4335 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: iktgPBX0j0JXW5fMSWf3NKSE8YNHJV+5/MT+MYJRDG6z5fz5P6G+dR75BfXE1a/8lHX0eCvSxmGouwyX2fghPV0NBOm11iFjifHp20MuwBg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR11MB5881 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net From: Przemek Kitszel Date: Fri, 4 Aug 2023 15:47:48 +0200 > On 8/2/23 00:31, Kees Cook wrote: > > [...] > >> Initially I was struggling to make __counted_by work, but it seems we can >> use an initializer for that member, as long as we don't touch the >> flexible >> array member in the initializer. So we just need to add the counted-by >> member to the macro, and use a union to do the initialization. And if >> we take the address of the union (and not the struct within it), the >> compiler will see the correct object size with __builtin_object_size: >> >> #define DEFINE_FLEX(type, name, flex, counter, count) \ >>      union { \ >>          u8   bytes[struct_size_t(type, flex, count)]; \ >>          type obj; \ >>      } name##_u __aligned(_Alignof(type)) = { .obj.counter = count }; \ >>      /* take address of whole union to get the correct >> __builtin_object_size */ \ >>      type *name = (type *)&name##_u >> >> i.e. __builtin_object_size(name, 1) (as used by FORTIFY_SOURCE, etc) >> works correctly here, but breaks (sees a zero-sized flex array member) >> if this macro ends with: >> >>      type *name = &name##_u.obj > > __builtin_object_size(name, 0) works fine for both versions (with and > without .obj at the end) > > however it does not work for builds without -O2 switch, so > struct_size_t() is rather a way to go :/ You only need to care about -O2 and -Os, since only those 2 are officially supported by Kbuild. Did you mean it doesn't work on -Os as well? > >> >> >> -Kees >> >> [1] https://git.kernel.org/linus/dd06e72e68bcb4070ef211be100d2896e236c8fb >> > Thanks, Olek