Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp1222031rwb; Tue, 27 Sep 2022 09:58:33 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4+DscfG5WQ2qTQvEfPHb67mu1UA8HCdfMpF1wn7Hul1Wj1rwvrwIBGREVhmqZytmdLM92i X-Received: by 2002:a63:d0b:0:b0:439:72d7:ef81 with SMTP id c11-20020a630d0b000000b0043972d7ef81mr24952578pgl.605.1664297913005; Tue, 27 Sep 2022 09:58:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664297912; cv=none; d=google.com; s=arc-20160816; b=noSWmgSXfzoIKYT/ar8QQz8VR8jJ+pq7wLk681VwzJrEi9BFFTknNsqt/HtMbeNI/U isyhSNtH4Ths1CJClzm8H6X+DleWm5dW69FndAwpeHYSVBCJlI3S+F5358FN7IFLeMl1 K27VYce9zUSNwBbv8pvG+d05xSyLCMgCPXXdppfmevnX+qK8eurI6TbRYihZUoC+oYSz gg4tZdnHECMp35MjKpKtLgDp08cwE4Pq5WmaR478CQRpO3AEszFu8XQ5YXGFufUlx5/H MWyb3/geNr/PeSzIDBUyLwXNGfrYgPnV1OpCWeqE66CRIZtUw2GTyQJvfkRmso10ar2v K5Zg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :mime-version:accept-language:in-reply-to:references:message-id:date :thread-index:thread-topic:subject:cc:to:from; bh=+ThXJkvQRC/RmMzArP3rHq7Nm4OFTkEY29aYpwuEKRA=; b=usCTWyFkJrtR+8Zv0uUz5YtHrHT+qQkGKhWiToQ7c69MxKGkFjVwJtqZ+VMsRoaDRh ke+qjAseMWnS8UJUo8xMgFoQXQGTMvnobeb9/Cmlrpce/p44fCw+VLT6RmUPKsq9LcOn zw47lvI4xHlNdMYAEjLZSVSqlxWaHQILdybo3pSd2milHEkOKjcUj/S66gyjylREZ5MH N7A8xVfIZ1dPqGG+OCBbRakP7NaIer+/PfMitBG0HG+NBbsQqQIwMgma3nqm+XCb5rFt Rf/RcboT4DXqgNDAZZnQLItSAEygJuLy9EKi7RyWzI/R13FX1321B4cGbHKvEGGqsSqC Q7PA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=aculab.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id bf17-20020a656d11000000b0042bf6bcaaa5si2064559pgb.395.2022.09.27.09.58.20; Tue, 27 Sep 2022 09:58:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=aculab.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231773AbiI0P6m convert rfc822-to-8bit (ORCPT + 99 others); Tue, 27 Sep 2022 11:58:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59882 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231496AbiI0P6k (ORCPT ); Tue, 27 Sep 2022 11:58:40 -0400 Received: from eu-smtp-delivery-151.mimecast.com (eu-smtp-delivery-151.mimecast.com [185.58.86.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7D0C01B86BE for ; Tue, 27 Sep 2022 08:58:38 -0700 (PDT) Received: from AcuMS.aculab.com (156.67.243.121 [156.67.243.121]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id uk-mtapsc-5-y36asnyBNqmjpPeNW1Btjg-1; Tue, 27 Sep 2022 16:58:35 +0100 X-MC-Unique: y36asnyBNqmjpPeNW1Btjg-1 Received: from AcuMS.Aculab.com (10.202.163.6) by AcuMS.aculab.com (10.202.163.6) with Microsoft SMTP Server (TLS) id 15.0.1497.38; Tue, 27 Sep 2022 16:58:33 +0100 Received: from AcuMS.Aculab.com ([::1]) by AcuMS.aculab.com ([::1]) with mapi id 15.00.1497.040; Tue, 27 Sep 2022 16:58:33 +0100 From: David Laight To: 'YingChi Long' CC: "bp@alien8.de" , "chang.seok.bae@intel.com" , "dave.hansen@linux.intel.com" , "hpa@zytor.com" , "linux-kernel@vger.kernel.org" , "mingo@redhat.com" , "ndesaulniers@google.com" , "pbonzini@redhat.com" , "tglx@linutronix.de" , "x86@kernel.org" Subject: RE: [PATCH v2] x86/fpu: use _Alignof to avoid UB in TYPE_ALIGN Thread-Topic: [PATCH v2] x86/fpu: use _Alignof to avoid UB in TYPE_ALIGN Thread-Index: AQHY0oauCPu6lqkmBkuKoE4b1f9eoq3zbbUQ Date: Tue, 27 Sep 2022 15:58:33 +0000 Message-ID: <38114d1b752c497eba1640360daf5b9e@AcuMS.aculab.com> References: <20220925153151.2467884-1-me@inclyc.cn> <20220927153338.4177854-1-me@inclyc.cn> In-Reply-To: <20220927153338.4177854-1-me@inclyc.cn> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.202.205.107] MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: aculab.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: YingChi Long > Sent: 27 September 2022 16:34 > > WG14 N2350 made very clear that it is an UB having type definitions with > in "offsetof". This patch change the implementation of macro > "TYPE_ALIGN" to builtin "_Alignof" to avoid undefined behavior. Interesting - what justification do they give? Linux kernel requires that the compiler add no unnecessary padding so that structure definitions are well defined. IIRC that standard allows arbitrary padding between members. So using a type definition inside offsetof() won't give a useful value - but it still isn't really UB. ... > #define CHECK_MEMBER_AT_END_OF(TYPE, MEMBER) \ > - BUILD_BUG_ON(sizeof(TYPE) != ALIGN(offsetofend(TYPE, MEMBER), \ > - TYPE_ALIGN(TYPE))) > + BUILD_BUG_ON(sizeof(TYPE) != \ > + ALIGN(offsetofend(TYPE, MEMBER), _Alignof(TYPE))) Has that ever worked? Given: struct foo { int a; char b; char c; }; I think CHECK_MEMBER_AT_END_OF_TYPE(struct foo, b) is true. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)