Received: by 2002:a25:b794:0:0:0:0:0 with SMTP id n20csp5871725ybh; Wed, 7 Aug 2019 12:55:42 -0700 (PDT) X-Google-Smtp-Source: APXvYqw+9R+nGHgBauucH4ehzd5U/eKMpbxVx4Ra07z70u8BYoKsXoLTZOMtrnjZIiknXq0poOtA X-Received: by 2002:a62:1652:: with SMTP id 79mr11204533pfw.20.1565207742528; Wed, 07 Aug 2019 12:55:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565207742; cv=none; d=google.com; s=arc-20160816; b=EN2MkNtsvcI3EI0O/wpNZA2raRp8FAGM0o9Z6fATySCfWc6V+/DKvF4YPUjeKh+fL8 Emq4pVB5DSXJnw7uODepFEaGzxO7Mc0rHJuyPpwWtPpNs9E94paY9p5d0kQKbn87NGSn tU7bD9RnAFoUX7vH2D+ssfYevStDieuhO6poiwplHy2Yk3OPFskMp0iHlWz4/ouSZmaU K3/7KZYXZc40Xh2son2B17PZUwCExWf57lU/aLt0tdf3PjVYJCA/yU2y3Ooe5MTkaW7M wJOwhORLuMaF1Ec8JmV3vfOIXHLt+IcV+e9bNzKYRSLmo6US2ooOJfOmg6OmONuiGT9k BOow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:dkim-signature:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=wV0TIhB96lEXdxg4ZAPSQCvLdj50VGvQwt3aeXxT47Y=; b=Wqq6FmRZ0ZSPZkjXdlvl+jPNGj7DQ3stzjJj03hTdiqqRA1CmjafBZVsdN7Hoom8r/ dLtIGeqSRaDb98fYaY2yeX8dKi1f4YMumIAtu6haopbewgWjK0PtQpUNiKEUl6k+EuXF KFrwY5Dl/UNm35qsg6zW+bJv6oxHtqaVygmLPYVozHrcDFHW5Nnl+oQyWnEheRq7kz9N B8dFk00MthLmJp5RPQk0qDz42QGmfzkAl7QrkXjwRyq0Qn8B33YVg6lwZ9SwlU6EXkc+ twQKp75Tw9C8mFHkGMfD062crTMea1otyzeTc2pgDT4wTdP8L/qg147PW8n3ymSOgLH3 HtGw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nvidia.com header.s=n1 header.b=ogFF0d2w; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a17si52637253pff.195.2019.08.07.12.55.26; Wed, 07 Aug 2019 12:55:42 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nvidia.com header.s=n1 header.b=ogFF0d2w; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388867AbfHGTnK (ORCPT + 99 others); Wed, 7 Aug 2019 15:43:10 -0400 Received: from hqemgate16.nvidia.com ([216.228.121.65]:11240 "EHLO hqemgate16.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388270AbfHGTnK (ORCPT ); Wed, 7 Aug 2019 15:43:10 -0400 Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqemgate16.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Wed, 07 Aug 2019 12:43:10 -0700 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Wed, 07 Aug 2019 12:43:09 -0700 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Wed, 07 Aug 2019 12:43:09 -0700 Received: from [10.110.48.28] (10.124.1.5) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 7 Aug 2019 19:43:08 +0000 Subject: Re: [PATCH v2] x86/boot: save fields explicitly, zero out everything else To: David Laight , "H . Peter Anvin" CC: Thomas Gleixner , Ingo Molnar , Borislav Petkov , "x86@kernel.org" , LKML References: <20190731054627.5627-1-jhubbard@nvidia.com> <20190731054627.5627-2-jhubbard@nvidia.com> <531b38aaa15e4de79a5e27fd37c04351@AcuMS.aculab.com> X-Nvconfidentiality: public From: John Hubbard Message-ID: <1ee72eca-1a09-0b71-f202-b1a909ca85b7@nvidia.com> Date: Wed, 7 Aug 2019 12:43:08 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <531b38aaa15e4de79a5e27fd37c04351@AcuMS.aculab.com> X-Originating-IP: [10.124.1.5] X-ClientProxiedBy: HQMAIL105.nvidia.com (172.20.187.12) To HQMAIL107.nvidia.com (172.20.187.13) Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1565206990; bh=wV0TIhB96lEXdxg4ZAPSQCvLdj50VGvQwt3aeXxT47Y=; h=X-PGP-Universal:Subject:To:CC:References:X-Nvconfidentiality:From: Message-ID:Date:User-Agent:MIME-Version:In-Reply-To: X-Originating-IP:X-ClientProxiedBy:Content-Type:Content-Language: Content-Transfer-Encoding; b=ogFF0d2ww1f1FI7jm+ek1zbUaul8cBYZf8dEYS5iLyy2PncViRJnI6L1paYfjr6WR vn8CvVZP1vTKFaOaL8GvV/v3Q8E/A9lH+b5gylKEUc2slbmFn6xqos9vSoZSdyfhrI ndDZ+2ulEbzXjsSld1Cac8vBKZpCJaoWC5m4MXuh2ql7Tvsp7NkGbO/ulZjolI9Nw7 HSw5VWptsSNE0Cmtjpq8l8jL9x8b5G1UPf+CCDvlCyoy+v2baB+yy/PiR5FbSF+mm9 MqN/SlZLGjUtAVt/y2on2Pf4rKSUc3916oMsRCwHjqyyPAiWBBeHNao5nDduU9Y5gh WMGv7AeZwDWqg== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 8/7/19 4:41 AM, David Laight wrote: > From: john.hubbard@gmail.com >> Sent: 31 July 2019 06:46 ... >> if (boot_params->sentinel) { >> - /* fields in boot_params are left uninitialized, clear them */ >> - boot_params->acpi_rsdp_addr = 0; >> - memset(&boot_params->ext_ramdisk_image, 0, >> - (char *)&boot_params->efi_info - >> - (char *)&boot_params->ext_ramdisk_image); >> - memset(&boot_params->kbd_status, 0, >> - (char *)&boot_params->hdr - >> - (char *)&boot_params->kbd_status); >> - memset(&boot_params->_pad7[0], 0, >> - (char *)&boot_params->edd_mbr_sig_buffer[0] - >> - (char *)&boot_params->_pad7[0]); >> - memset(&boot_params->_pad8[0], 0, >> - (char *)&boot_params->eddbuf[0] - >> - (char *)&boot_params->_pad8[0]); >> - memset(&boot_params->_pad9[0], 0, sizeof(boot_params->_pad9)); > ... > > How about replacing the above first using: > #define zero_struct_fields(ptr, from, to) memset(&ptr->from, 0, (char *)&ptr->to - (char *)&ptr->from) > zero_struct_fields(boot_params, ext_ramdisk_image, efi_info); > ... > Which is absolutely identical to the original code. > > The replacing the define with: > #define so(s, m) offsetof(typeof(*s), m) > #define zero_struct_fields(ptr, from, to) memset((char *)ptr + so(ptr, from), 0, so(ptr, to) - so(ptr, from)) > which gcc probably doesn't complain about, but should generate identical code again. > There might be an existing define for so(). > Hi David, There was discussion about that [1], but preference ending up being to flip this around, in order to more closely match the original intent of this function (zero out everything except for certain carefully selected fields), and to therefore be more likely to keep working if fields are added. [1] https://lore.kernel.org/lkml/alpine.DEB.2.21.1907252358240.1791@nanos.tec.linutronix.de/ thanks, -- John Hubbard NVIDIA