From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1lMqrW-0002DC-2a for mharc-grub-devel@gnu.org; Thu, 18 Mar 2021 07:30:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44502) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lMqrU-0002BN-Hp for grub-devel@gnu.org; Thu, 18 Mar 2021 07:30:44 -0400 Received: from de-smtp-delivery-102.mimecast.com ([62.140.7.102]:51786) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lMqrS-0002MX-7l for grub-devel@gnu.org; Thu, 18 Mar 2021 07:30:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1616067040; h=from:from: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:content-transfer-encoding; bh=Pgvg2mNUFZR4XtWWPYQDsLoLs4Un+Nu0smi5wEBWUq8=; b=DgUpsR2/6MB0xbtViwiCS/UAZ92LRtaaIRhntMOH+p1F5Hto6Zq2sOcFcHVEcjhKcdcFdD oRQg409cVXHkQJoTOxmjVKmtayw9VYuhX/Gf2VjWXMZmbh3/Ahq0an4i2ZAHU55X3gJGtH 7TPGewKG6OWMiBlID7erX1ceG5Xvm94= Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2054.outbound.protection.outlook.com [104.47.9.54]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-14-_B0uEVZpPFiKM2AZQ6kWWA-1; Thu, 18 Mar 2021 12:30:39 +0100 X-MC-Unique: _B0uEVZpPFiKM2AZQ6kWWA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eJSCmvQ+5oKJvJUvk5TlR4B+VFXJIaoxiQy3OG7M/SEaFDaFQ6iwz5GuusmSvS/rvpHBe2ujyyNdASSeHXmWxCQ9u11WjgneSDETQx4vmEj0/0p/BFPcoivIPOKxkutHUXPf6Ba8GpwMzqGoFCexzSJV3s46Mbg5pF0S07nz7MG2/8+EQrjZjY/nkxBJEtsw6gM61SEHzeXDYpjjiEk/8ydVI4SPMLpH6Z9nELBgDo0ECuQW7zKmrIH6uNaVO+XSB8I1C/+CJH6btdF98tJWi9805OxMxiF+6xnktRApTanzkEhiVo5ervGm5DFvnxNpzVhYNDLBaopnXhlBPCKnZg== 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-SenderADCheck; bh=lCKVgq6vKUTLwFfLSme/9WEZb04T20ixNmsOBYZuyg8=; b=QB3WA+Q4yGpWsK2XnuBbWwUlTfSYaxJARlEGkjzWB6VUBn3RScc6EbjqX29SKw7Njw3/JOFM+F00K78PuUacp1sgqCMEc6mrQs0FCXdUQGIm3icgsyE/7574gSbEm3uEFair/gjwSbDyorYU7/obv35f9upH6NKA+lsWGOZggWgPyzJGrBafhhJ9mHXKTWfSr1m94/3N7voeUGhvv0TbUUNHvRCa4zYynydsvYb0n/l+8xCWkBbzFmnR2OuvskITpJawP4E/ji0U4ZIU2TGCdjx6qg3EBsiLgepIouamafleOguiXdkayqvxlCyZ2s2ATndY8/wyMKq17K6TrVlZyA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Authentication-Results: gnu.org; dkim=none (message not signed) header.d=none;gnu.org; dmarc=none action=none header.from=suse.com; Received: from VI1PR04MB4991.eurprd04.prod.outlook.com (2603:10a6:803:57::28) by VI1PR0401MB2639.eurprd04.prod.outlook.com (2603:10a6:800:58::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3955.18; Thu, 18 Mar 2021 11:30:38 +0000 Received: from VI1PR04MB4991.eurprd04.prod.outlook.com ([fe80::28b7:e423:c3d7:7ccf]) by VI1PR04MB4991.eurprd04.prod.outlook.com ([fe80::28b7:e423:c3d7:7ccf%6]) with mapi id 15.20.3933.032; Thu, 18 Mar 2021 11:30:38 +0000 From: Michael Chang To: The development of GNU GRUB CC: Colin Watson , Marco A Benatto , Javier Martinez Canillas , Daniel Kiper Subject: [PATCH v2] i386-pc: build verifiers API as module Date: Thu, 18 Mar 2021 19:30:26 +0800 Message-ID: <20210318113026.24963-1-mchang@suse.com> X-Mailer: git-send-email 2.26.2 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain X-Originating-IP: [2001:b011:30d0:14af:cb28:3a0c:91f:362b] X-ClientProxiedBy: HK0PR03CA0109.apcprd03.prod.outlook.com (2603:1096:203:b0::25) To VI1PR04MB4991.eurprd04.prod.outlook.com (2603:10a6:803:57::28) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mercury.nue.suse.com (2001:b011:30d0:14af:cb28:3a0c:91f:362b) by HK0PR03CA0109.apcprd03.prod.outlook.com (2603:1096:203:b0::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3955.18 via Frontend Transport; Thu, 18 Mar 2021 11:30:36 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bec88741-2b9d-4338-37bf-08d8ea014104 X-MS-TrafficTypeDiagnostic: VI1PR0401MB2639: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: L1yYlnOj20/NrdL5dF87Aeh0WEJmWna/jAS9OpkzvfU980MEwCymkK0SfN3NK8Q+t+gB3w7cml5Dq31d1gv7gK3QXMjWOQDrg8iO8Gy5JEDl/IJTjEgtvsz2/2+Fy57HJW4NrDE9I1BvPZ93zOJ7vC1/2OZg+ua/PRrUW/S4jzRWOEGLs0DlF3bD6p7NEIZ6FELjgR6sq1CzdoYc6+WLkaPNuQgWMBPndHvWYgbGV2g/x2BSauIeq4NfNlyWCTKZ0jUCxwYWiuekxi+4XRwa9W6Iz1o+CooSrk5hXPYYRSfK3u83qtpV0ZtNH4T0yfTz+mzRibAflRo63rMTRyAfRRQIn+6yE5qtLMKosGd/Tat0IvVdi1qqZRt+AC5zsz7O9Le8cOCx20Oc1c7tKJgCABL/fAPkgvMlAlALLPa6xVHRyq3YN5LvRyC97lEGy9GQKuM7UfDWg6BSA6gpPaObiz14MPYf6/MkFNqai0CDb3aglJn3ZdPzs59o+ZjLRujszjEVhNg0W+JksVkFh1McbTnY7DDd+tJzPJQ+MtSmb7+erhB+Ei/yDd2IwAGYEmfYUr8aiuEtmJW/W4m331auorx2ILUkdk1iZ6JDavjJMLTtSnwxCeydAy284ikyXmM+paYzlHB+iR4bQNla+FDuQ/CQc2Ui1uTn2tbKJsLoxcvW5HJVYPgJsX8nmo6eCgwy X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR04MB4991.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(376002)(366004)(136003)(39860400002)(346002)(396003)(86362001)(6486002)(6916009)(2906002)(186003)(16526019)(83380400001)(36756003)(38100700001)(966005)(1076003)(478600001)(2616005)(4326008)(8676002)(5660300002)(6666004)(54906003)(66946007)(66556008)(66476007)(7696005)(8936002)(52116002)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?hR3Q3YRdWRTGzBa2F7iHBczqE2wsHIg2DSXfDahM99XLvb29CXROxO/SMD60?= =?us-ascii?Q?fTfTAn+HYB8BxVYL962VgsBuZTa/QOBsgOPYE7mFEyeefPyTOQSYk2ftX3Um?= =?us-ascii?Q?Pf8bObidenGMACRqe1M54M/MCMiEspCxWRtxEvVmPHBTKEW0U4wpu583BbbL?= =?us-ascii?Q?pgbV3Dc2K524u8nBjV1/Yb4zdhU31n2uysh3TfaQtg+Xty92sRQO7jUtNjU/?= =?us-ascii?Q?c1+QULBdetuUOL4haEYIzFRN1u50cYR7rTt8Hh2zqntW0O6SwjGPrI4wO8pD?= =?us-ascii?Q?M6QhbCi49vNEwtpBO7izBEayxMX2/unLSpRfxzLzSar7m7/QJMGPVMO0qHcD?= =?us-ascii?Q?GJ3OXSfKMs6nUMlNWLSUQjbGWP/UX4YS/MvspXQKWNPL/wr5oZ1JfePGlMif?= =?us-ascii?Q?AzD+cSDRg1DBSkD7zVKVEWTfyUT6yqGgb8lgiVMzZzqPhF4zXFB1nymrVGzU?= =?us-ascii?Q?XDGAEhJmbJsqQ/+kqY9jGNtrxGy61pPGujjt4Ac27CUpjBjAfBI8ouJdUSQJ?= =?us-ascii?Q?yM+rMUMfPNL0ObKknnzN30y6TJilfUDn6WiHuDGri5/Mz3YlxGhUNC/AbzZH?= =?us-ascii?Q?KEUwg9pKranXC/HZg+4tMoHNN8mrgCgUm6qcIaxOHAv133W8QMVEtrBDhM6Q?= =?us-ascii?Q?be3jE6C0efB9XGT/ch75TDHWwagoK+MJmEiyxrpbP0fA35bUbwYzb4AxmysO?= =?us-ascii?Q?lvW7HAgA43lm0gzvxKyelWbJeD9aRKrzQZzcU/ylya+WCAhw+P57DF0wX3C7?= =?us-ascii?Q?//jz+/lTPKjapftZR3rwkmERZy8QdN/su3908TPm2ZNaz9L3l6BRSzqxCkoe?= =?us-ascii?Q?k+etZyiyVkiceQ7/nt/uSpjPYCW1+TK94Wx9c0a22X8txxirfZIW+MEo9Mbu?= =?us-ascii?Q?ypm4y7JXioNRd1YPSTtTjIhernKzKJHm3Q7HiqT9ZGaMIX8YMwT8Htac5VXN?= =?us-ascii?Q?Uy8Ya9yvvH1YdRBme+3A67qIPx6raEost1mJB6aTZiF4Y9o/J/29dokB3eQQ?= =?us-ascii?Q?zdvO1Wg4LhOf5Q3PnqldehA2TaC6AWq5t/AMnIt/wGWPo1J1xNYC/FGV9/nN?= =?us-ascii?Q?xEe0US2K0BcI5tsHKpAz3Ra8bm20TzceQZg/MECvZt5ZhJppmkO5AVV0Rz1x?= =?us-ascii?Q?1C7afrUQgD5EPf8G7EMGgZWA0fTM0gPznwQj7bqw+zVIxgYcPIdOXSxvIJvY?= =?us-ascii?Q?1Xd75Ei7q0Wsr+OouL174PyWXiGWVK8HAi+XomzvFoFg5tLhBZiTak17BQzy?= =?us-ascii?Q?wv+1yMzpocm1ZfQTWd61/vkwIycZYkaVb731eiRkqDcsiwXHBDMc2b/LUMDR?= =?us-ascii?Q?+pMSu+PpA4GgClG3RQeLS/uUoQNKcSUJRd4uFTZt27YXyFBY6n8IDlRnzs60?= =?us-ascii?Q?zh/VkAs9Yk7KkzG1JGYfTR0o6s8H?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: bec88741-2b9d-4338-37bf-08d8ea014104 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB4991.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2021 11:30:38.2006 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: E/D0twEtsabmH31Uu3xe00pw9lTd1/rgmohLOgIHaRvXau+OqTseemjgSgR5lQRq X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2639 Received-SPF: pass client-ip=62.140.7.102; envelope-from=mchang@suse.com; helo=de-smtp-delivery-102.mimecast.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Mar 2021 11:30:44 -0000 Given no core functions on i386-pc would require verifiers to work and the only consumer of the verifier API is the pgp module, it looks good to me that we can move the verifiers out of the kernel image and let moddep.lst to auto-load it when pgp is loaded on i386-pc platform. This helps to reduce the size of core image and thus can relax the tension of exploding on some i386-pc system with very short MBR gap size. See also a very comprehensive summary from Colin [1] about the details. [1] https://lists.gnu.org/archive/html/grub-devel/2021-03/msg00240.html V2: Drop COND_NOT_i386_pc and use !COND_i386_pc. Add comment in kern/verifiers.c to help understanding what's going on without digging into the commit history. Reported-by: Colin Watson Reviewed-by: Colin Watson Signed-off-by: Michael Chang --- grub-core/Makefile.am | 2 ++ grub-core/Makefile.core.def | 8 +++++++- grub-core/kern/main.c | 4 ++++ grub-core/kern/verifiers.c | 17 +++++++++++++++++ include/grub/verify.h | 9 +++++++++ 5 files changed, 39 insertions(+), 1 deletion(-) diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am index ee88e44e9..b6872d20f 100644 --- a/grub-core/Makefile.am +++ b/grub-core/Makefile.am @@ -93,7 +93,9 @@ KERNEL_HEADER_FILES +=3D $(top_srcdir)/include/grub/parti= tion.h KERNEL_HEADER_FILES +=3D $(top_srcdir)/include/grub/stack_protector.h KERNEL_HEADER_FILES +=3D $(top_srcdir)/include/grub/term.h KERNEL_HEADER_FILES +=3D $(top_srcdir)/include/grub/time.h +if !COND_i386_pc KERNEL_HEADER_FILES +=3D $(top_srcdir)/include/grub/verify.h +endif KERNEL_HEADER_FILES +=3D $(top_srcdir)/include/grub/mm_private.h KERNEL_HEADER_FILES +=3D $(top_srcdir)/include/grub/net.h KERNEL_HEADER_FILES +=3D $(top_srcdir)/include/grub/memory.h diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def index 8022e1c0a..77fdccdb1 100644 --- a/grub-core/Makefile.core.def +++ b/grub-core/Makefile.core.def @@ -141,7 +141,7 @@ kernel =3D { common =3D kern/rescue_parser.c; common =3D kern/rescue_reader.c; common =3D kern/term.c; - common =3D kern/verifiers.c; + nopc =3D kern/verifiers.c; =20 noemu =3D kern/compiler-rt.c; noemu =3D kern/mm.c; @@ -946,6 +946,12 @@ module =3D { cppflags =3D '-I$(srcdir)/lib/posix_wrap'; }; =20 +module =3D { + name =3D verifiers; + common =3D kern/verifiers.c; + enable =3D i386_pc; +}; + module =3D { name =3D hdparm; common =3D commands/hdparm.c; diff --git a/grub-core/kern/main.c b/grub-core/kern/main.c index 73967e2f5..c7c6d2d0b 100644 --- a/grub-core/kern/main.c +++ b/grub-core/kern/main.c @@ -29,7 +29,9 @@ #include #include #include +#ifndef GRUB_MACHINE_PCBIOS #include +#endif =20 #ifdef GRUB_MACHINE_PCBIOS #include @@ -275,8 +277,10 @@ grub_main (void) grub_printf ("Welcome to GRUB!\n\n"); grub_setcolorstate (GRUB_TERM_COLOR_STANDARD); =20 +#ifndef GRUB_MACHINE_PCBIOS /* Init verifiers API. */ grub_verifiers_init (); +#endif =20 grub_load_config (); =20 diff --git a/grub-core/kern/verifiers.c b/grub-core/kern/verifiers.c index 75d7994cf..1245d0d9e 100644 --- a/grub-core/kern/verifiers.c +++ b/grub-core/kern/verifiers.c @@ -221,8 +221,25 @@ grub_verify_string (char *str, enum grub_verify_string= _type type) return GRUB_ERR_NONE; } =20 +/* + * It is intended to build verifiers as module on i386-pc platform to mini= mize + * the impact of growing core image size could blow up the 63 sectors limi= t of + * some MBR gap one day. It is also adequate to do so, given no core funct= ion + * on i386-pc would require the verifiers API to work. + */ +#ifdef GRUB_MACHINE_PCBIOS +GRUB_MOD_INIT(verifiers) +#else void grub_verifiers_init (void) +#endif { grub_file_filter_register (GRUB_FILE_FILTER_VERIFY, grub_verifiers_open)= ; } + +#ifdef GRUB_MACHINE_PCBIOS +GRUB_MOD_FINI(verifiers) +{ + grub_file_filter_unregister (GRUB_FILE_FILTER_VERIFY); +} +#endif diff --git a/include/grub/verify.h b/include/grub/verify.h index cd129c398..6fde244fc 100644 --- a/include/grub/verify.h +++ b/include/grub/verify.h @@ -64,10 +64,14 @@ struct grub_file_verifier grub_err_t (*verify_string) (char *str, enum grub_verify_string_type typ= e); }; =20 +#ifdef GRUB_MACHINE_PCBIOS +extern struct grub_file_verifier *grub_file_verifiers; +#else extern struct grub_file_verifier *EXPORT_VAR (grub_file_verifiers); =20 extern void grub_verifiers_init (void); +#endif =20 static inline void grub_verifier_register (struct grub_file_verifier *ver) @@ -81,7 +85,12 @@ grub_verifier_unregister (struct grub_file_verifier *ver= ) grub_list_remove (GRUB_AS_LIST (ver)); } =20 +#ifdef GRUB_MACHINE_PCBIOS +grub_err_t +grub_verify_string (char *str, enum grub_verify_string_type type); +#else extern grub_err_t EXPORT_FUNC (grub_verify_string) (char *str, enum grub_verify_string_type = type); +#endif =20 #endif /* ! GRUB_VERIFY_HEADER */ --=20 2.26.2