Re: [PATCH v2] appendedsig: Exclude PKS support for grub-emu

Leo Sandoval via Grub-devel <[email protected]> Tue, 17 Mar 2026 15:04:48 -0600
Newsgroups org.gnu.grub-devel
Message-ID <CACF7NTjLV5o0crOrPpGpoSZPuCELv_jtZtr9_HtOH6EvRie0sA@mail.gmail.com>
--===============1720197596990919637==
Content-Type: multipart/alternative; boundary="0000000000004d7381064d3eb00e"

--0000000000004d7381064d3eb00e
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Sudhakar,

LGTM but please send the PR at freedesktop: all development has moved to
freedesktop as described
https://lists.gnu.org/archive/html/grub-devel/2026-03/msg00002.html

On Wed, Mar 4, 2026 at 2:45=E2=80=AFAM John Paul Adrian Glaubitz <
[email protected]> wrote:

> On Tue, 2026-03-03 at 20:45 +0530, Sudhakar Kuppusamy wrote:
> > Configuring the build with --with-platform=3Demu fails on 32-bit PowerP=
C
> with:
> >
> > /usr/bin/ld: appendedsig.module: in function `grub_mod_init':
> >
> /home/glaubitz/grub/grub-core/commands/appendedsig/appendedsig.c:1615:(.t=
ext+0x2ab4):
> undefined reference to `grub_pks_get_keystore'
> > /usr/bin/ld: appendedsig.module: in function `create_dbs_from_pks':
> >
> /home/glaubitz/grub/grub-core/commands/appendedsig/appendedsig.c:1400:(.t=
ext+0x2c3c):
> undefined reference to `grub_pks_free_data'
> > collect2: error: ld returned 1 exit status
> >
> > Fixing this by excluding the Platform Keystore (PKS) for grub-emu.
> >
> > Reported-by: John Paul Adrian Glaubitz <[email protected]>
> > Signed-off-by: Sudhakar Kuppusamy <[email protected]>
> > ---
> > v1: https://lists.gnu.org/archive/html/grub-devel/2026-02/msg00094.html
> > Thank you, John Paul Adrian Glaubitz and Vladimir 'phcoder' Serbinenko,
> > for your feedback on v1.
> >
> > v2: Avoided the inclusion of the powerpc/ieee1275/platform_keystore.h a=
nd
> >     PKS support in emu.
> > ---
> >  grub-core/commands/appendedsig/appendedsig.c      | 12 ++++++++++++
> >  include/grub/powerpc/ieee1275/platform_keystore.h | 13 -------------
> >  2 files changed, 12 insertions(+), 13 deletions(-)
> >
> > diff --git a/grub-core/commands/appendedsig/appendedsig.c
> b/grub-core/commands/appendedsig/appendedsig.c
> > index 5c53f634c..65ec134c0 100644
> > --- a/grub-core/commands/appendedsig/appendedsig.c
> > +++ b/grub-core/commands/appendedsig/appendedsig.c
> > @@ -33,7 +33,9 @@
> >  #include <libtasn1.h>
> >  #include <grub/env.h>
> >  #include <grub/lockdown.h>
> > +#if !defined(GRUB_MACHINE_EMU)
> >  #include <grub/powerpc/ieee1275/platform_keystore.h>
> > +#endif
> >  #include <grub/efi/pks.h>
> >
> >  #include "appendedsig.h"
> > @@ -123,8 +125,10 @@ static bool check_sigs =3D false;
> >   */
> >  static bool append_key_mgmt =3D false;
> >
> > +#if !defined(GRUB_MACHINE_EMU)
> >  /* Platform KeyStore db and dbx. */
> >  static grub_pks_t *pks_keystore;
> > +#endif
> >
> >  /* Appended signature size. */
> >  static grub_size_t append_sig_len =3D 0;
> > @@ -344,6 +348,7 @@ add_hash (grub_uint8_t *const data, const
> grub_size_t data_size, sb_database_t *
> >    return GRUB_ERR_NONE;
> >  }
> >
> > +#if !defined(GRUB_MACHINE_EMU)
> >  static bool
> >  is_hash (const grub_packed_guid_t *guid)
> >  {
> > @@ -370,6 +375,7 @@ is_x509 (const grub_packed_guid_t *guid)
> >
> >    return false;
> >  }
> > +#endif
> >
> >  static bool
> >  is_cert_match (const grub_x509_cert_t *cert1, const grub_x509_cert_t
> *cert2)
> > @@ -1269,6 +1275,7 @@ grub_cmd_add_dbx_hash (grub_extcmd_context_t ctxt=
,
> int argc __attribute__ ((unus
> >    return rc;
> >  }
> >
> > +#if !defined(GRUB_MACHINE_EMU)
> >  /* Add the X.509 certificates/binary hash to the db list from PKS. */
> >  static grub_err_t
> >  load_pks2db (void)
> > @@ -1330,6 +1337,7 @@ load_pks2dbx (void)
> >
> >    return GRUB_ERR_NONE;
> >  }
> > +#endif
> >
> >  /*
> >   * Extract the X.509 certificates from the ELF Note header, parse it,
> and add
> > @@ -1378,6 +1386,7 @@ load_elf2db (void)
> >  static void
> >  create_dbs_from_pks (void)
> >  {
> > +#if !defined(GRUB_MACHINE_EMU)
> >    grub_err_t err;
> >
> >    err =3D load_pks2dbx ();
> > @@ -1402,6 +1411,7 @@ create_dbs_from_pks (void)
> >                  "the dbx list now has %u keys\n",
> >                  db.hash_entries + db.cert_entries,
> >                  dbx.hash_entries + dbx.cert_entries);
> > +#endif
> >  }
> >
> >  /* Free db list memory */
> > @@ -1611,10 +1621,12 @@ GRUB_MOD_INIT (appendedsig)
> >    if (grub_is_lockdown () =3D=3D GRUB_LOCKDOWN_ENABLED)
> >      check_sigs =3D true;
> >
> > +#if !defined(GRUB_MACHINE_EMU)
> >    /* If PKS keystore is available, use dynamic key management. */
> >    pks_keystore =3D grub_pks_get_keystore ();
> >    if (pks_keystore !=3D NULL)
> >      append_key_mgmt =3D true;
> > +#endif
> >
> >    /*
> >     * This is appended signature verification environment variable. It =
is
> > diff --git a/include/grub/powerpc/ieee1275/platform_keystore.h
> b/include/grub/powerpc/ieee1275/platform_keystore.h
> > index 931ada224..edb342aae 100644
> > --- a/include/grub/powerpc/ieee1275/platform_keystore.h
> > +++ b/include/grub/powerpc/ieee1275/platform_keystore.h
> > @@ -96,7 +96,6 @@ struct grub_pks
> >  };
> >  typedef struct grub_pks grub_pks_t;
> >
> > -#if defined(__powerpc__)
> >  /* Initialization of the Platform Keystore. */
> >  extern void
> >  grub_pks_keystore_init (void);
> > @@ -108,16 +107,4 @@ EXPORT_FUNC (grub_pks_get_keystore) (void);
> >  /* Free allocated memory. */
> >  extern void
> >  EXPORT_FUNC (grub_pks_free_data) (void);
> > -#else
> > -static inline grub_pks_t *
> > -grub_pks_get_keystore (void)
> > -{
> > -  return NULL;
> > -}
> > -
> > -static inline void
> > -grub_pks_free_data (void)
> > -{
> > -}
> > -#endif /* __powerpc__ */
> >  #endif
>
> This fixes the issue for me.
>
> Tested-by: John Paul Adrian Glaubitz <[email protected]>
>
> Thanks,
> Adrian
>
> --
>  .''`.  John Paul Adrian Glaubitz
> : :' :  Debian Developer
> `. `'   Physicist
>   `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913
>
> _______________________________________________
> Grub-devel mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/grub-devel
>

--0000000000004d7381064d3eb00e
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Sudhakar,</div><div><br></div><div>LGTM but please se=
nd the PR at freedesktop: all development has moved to freedesktop as descr=
ibed <a href=3D"https://lists.gnu.org/archive/html/grub-devel/2026-03/msg00=
002.html">https://lists.gnu.org/archive/html/grub-devel/2026-03/msg00002.ht=
ml</a></div></div><br><div class=3D"gmail_quote gmail_quote_container"><div=
 dir=3D"ltr" class=3D"gmail_attr">On Wed, Mar 4, 2026 at 2:45=E2=80=AFAM Jo=
hn Paul Adrian Glaubitz &lt;<a href=3D"mailto:[email protected]"=
>[email protected]</a>&gt; wrote:<br></div><blockquote class=3D"=
gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(20=
4,204,204);padding-left:1ex">On Tue, 2026-03-03 at 20:45 +0530, Sudhakar Ku=
ppusamy wrote:<br>
&gt; Configuring the build with --with-platform=3Demu fails on 32-bit Power=
PC with:<br>
&gt; <br>
&gt; /usr/bin/ld: appendedsig.module: in function `grub_mod_init&#39;:<br>
&gt; /home/glaubitz/grub/grub-core/commands/appendedsig/appendedsig.c:1615:=
(.text+0x2ab4): undefined reference to `grub_pks_get_keystore&#39;<br>
&gt; /usr/bin/ld: appendedsig.module: in function `create_dbs_from_pks&#39;=
:<br>
&gt; /home/glaubitz/grub/grub-core/commands/appendedsig/appendedsig.c:1400:=
(.text+0x2c3c): undefined reference to `grub_pks_free_data&#39;<br>
&gt; collect2: error: ld returned 1 exit status<br>
&gt; <br>
&gt; Fixing this by excluding the Platform Keystore (PKS) for grub-emu.<br>
&gt; <br>
&gt; Reported-by: John Paul Adrian Glaubitz &lt;<a href=3D"mailto:glaubitz@=
physik.fu-berlin.de" target=3D"_blank">[email protected]</a>&gt;=
<br>
&gt; Signed-off-by: Sudhakar Kuppusamy &lt;<a href=3D"mailto:sudhakar@linux=
.ibm.com" target=3D"_blank">[email protected]</a>&gt;<br>
&gt; ---<br>
&gt; v1: <a href=3D"https://lists.gnu.org/archive/html/grub-devel/2026-02/m=
sg00094.html" rel=3D"noreferrer" target=3D"_blank">https://lists.gnu.org/ar=
chive/html/grub-devel/2026-02/msg00094.html</a><br>
&gt; Thank you, John Paul Adrian Glaubitz and Vladimir &#39;phcoder&#39; Se=
rbinenko,<br>
&gt; for your feedback on v1.<br>
&gt; <br>
&gt; v2: Avoided the inclusion of the powerpc/ieee1275/platform_keystore.h =
and<br>
&gt;=C2=A0 =C2=A0 =C2=A0PKS support in emu.<br>
&gt; ---<br>
&gt;=C2=A0 grub-core/commands/appendedsig/appendedsig.c=C2=A0 =C2=A0 =C2=A0=
 | 12 ++++++++++++<br>
&gt;=C2=A0 include/grub/powerpc/ieee1275/platform_keystore.h | 13 ---------=
----<br>
&gt;=C2=A0 2 files changed, 12 insertions(+), 13 deletions(-)<br>
&gt; <br>
&gt; diff --git a/grub-core/commands/appendedsig/appendedsig.c b/grub-core/=
commands/appendedsig/appendedsig.c<br>
&gt; index 5c53f634c..65ec134c0 100644<br>
&gt; --- a/grub-core/commands/appendedsig/appendedsig.c<br>
&gt; +++ b/grub-core/commands/appendedsig/appendedsig.c<br>
&gt; @@ -33,7 +33,9 @@<br>
&gt;=C2=A0 #include &lt;libtasn1.h&gt;<br>
&gt;=C2=A0 #include &lt;grub/env.h&gt;<br>
&gt;=C2=A0 #include &lt;grub/lockdown.h&gt;<br>
&gt; +#if !defined(GRUB_MACHINE_EMU)<br>
&gt;=C2=A0 #include &lt;grub/powerpc/ieee1275/platform_keystore.h&gt;<br>
&gt; +#endif<br>
&gt;=C2=A0 #include &lt;grub/efi/pks.h&gt;<br>
&gt;=C2=A0 <br>
&gt;=C2=A0 #include &quot;appendedsig.h&quot;<br>
&gt; @@ -123,8 +125,10 @@ static bool check_sigs =3D false;<br>
&gt;=C2=A0 =C2=A0*/<br>
&gt;=C2=A0 static bool append_key_mgmt =3D false;<br>
&gt;=C2=A0 <br>
&gt; +#if !defined(GRUB_MACHINE_EMU)<br>
&gt;=C2=A0 /* Platform KeyStore db and dbx. */<br>
&gt;=C2=A0 static grub_pks_t *pks_keystore;<br>
&gt; +#endif<br>
&gt;=C2=A0 <br>
&gt;=C2=A0 /* Appended signature size. */<br>
&gt;=C2=A0 static grub_size_t append_sig_len =3D 0;<br>
&gt; @@ -344,6 +348,7 @@ add_hash (grub_uint8_t *const data, const grub_siz=
e_t data_size, sb_database_t *<br>
&gt;=C2=A0 =C2=A0 return GRUB_ERR_NONE;<br>
&gt;=C2=A0 }<br>
&gt;=C2=A0 <br>
&gt; +#if !defined(GRUB_MACHINE_EMU)<br>
&gt;=C2=A0 static bool<br>
&gt;=C2=A0 is_hash (const grub_packed_guid_t *guid)<br>
&gt;=C2=A0 {<br>
&gt; @@ -370,6 +375,7 @@ is_x509 (const grub_packed_guid_t *guid)<br>
&gt;=C2=A0 <br>
&gt;=C2=A0 =C2=A0 return false;<br>
&gt;=C2=A0 }<br>
&gt; +#endif<br>
&gt;=C2=A0 <br>
&gt;=C2=A0 static bool<br>
&gt;=C2=A0 is_cert_match (const grub_x509_cert_t *cert1, const grub_x509_ce=
rt_t *cert2)<br>
&gt; @@ -1269,6 +1275,7 @@ grub_cmd_add_dbx_hash (grub_extcmd_context_t ctx=
t, int argc __attribute__ ((unus<br>
&gt;=C2=A0 =C2=A0 return rc;<br>
&gt;=C2=A0 }<br>
&gt;=C2=A0 <br>
&gt; +#if !defined(GRUB_MACHINE_EMU)<br>
&gt;=C2=A0 /* Add the X.509 certificates/binary hash to the db list from PK=
S. */<br>
&gt;=C2=A0 static grub_err_t<br>
&gt;=C2=A0 load_pks2db (void)<br>
&gt; @@ -1330,6 +1337,7 @@ load_pks2dbx (void)<br>
&gt;=C2=A0 <br>
&gt;=C2=A0 =C2=A0 return GRUB_ERR_NONE;<br>
&gt;=C2=A0 }<br>
&gt; +#endif<br>
&gt;=C2=A0 <br>
&gt;=C2=A0 /*<br>
&gt;=C2=A0 =C2=A0* Extract the X.509 certificates from the ELF Note header,=
 parse it, and add<br>
&gt; @@ -1378,6 +1386,7 @@ load_elf2db (void)<br>
&gt;=C2=A0 static void<br>
&gt;=C2=A0 create_dbs_from_pks (void)<br>
&gt;=C2=A0 {<br>
&gt; +#if !defined(GRUB_MACHINE_EMU)<br>
&gt;=C2=A0 =C2=A0 grub_err_t err;<br>
&gt;=C2=A0 <br>
&gt;=C2=A0 =C2=A0 err =3D load_pks2dbx ();<br>
&gt; @@ -1402,6 +1411,7 @@ create_dbs_from_pks (void)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &quot;th=
e dbx list now has %u keys\n&quot;,<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 db.hash_=
entries + db.cert_entries,<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 dbx.hash=
_entries + dbx.cert_entries);<br>
&gt; +#endif<br>
&gt;=C2=A0 }<br>
&gt;=C2=A0 <br>
&gt;=C2=A0 /* Free db list memory */<br>
&gt; @@ -1611,10 +1621,12 @@ GRUB_MOD_INIT (appendedsig)<br>
&gt;=C2=A0 =C2=A0 if (grub_is_lockdown () =3D=3D GRUB_LOCKDOWN_ENABLED)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 check_sigs =3D true;<br>
&gt;=C2=A0 <br>
&gt; +#if !defined(GRUB_MACHINE_EMU)<br>
&gt;=C2=A0 =C2=A0 /* If PKS keystore is available, use dynamic key manageme=
nt. */<br>
&gt;=C2=A0 =C2=A0 pks_keystore =3D grub_pks_get_keystore ();<br>
&gt;=C2=A0 =C2=A0 if (pks_keystore !=3D NULL)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 append_key_mgmt =3D true;<br>
&gt; +#endif<br>
&gt;=C2=A0 <br>
&gt;=C2=A0 =C2=A0 /*<br>
&gt;=C2=A0 =C2=A0 =C2=A0* This is appended signature verification environme=
nt variable. It is<br>
&gt; diff --git a/include/grub/powerpc/ieee1275/platform_keystore.h b/inclu=
de/grub/powerpc/ieee1275/platform_keystore.h<br>
&gt; index 931ada224..edb342aae 100644<br>
&gt; --- a/include/grub/powerpc/ieee1275/platform_keystore.h<br>
&gt; +++ b/include/grub/powerpc/ieee1275/platform_keystore.h<br>
&gt; @@ -96,7 +96,6 @@ struct grub_pks<br>
&gt;=C2=A0 };<br>
&gt;=C2=A0 typedef struct grub_pks grub_pks_t;<br>
&gt;=C2=A0 <br>
&gt; -#if defined(__powerpc__)<br>
&gt;=C2=A0 /* Initialization of the Platform Keystore. */<br>
&gt;=C2=A0 extern void<br>
&gt;=C2=A0 grub_pks_keystore_init (void);<br>
&gt; @@ -108,16 +107,4 @@ EXPORT_FUNC (grub_pks_get_keystore) (void);<br>
&gt;=C2=A0 /* Free allocated memory. */<br>
&gt;=C2=A0 extern void<br>
&gt;=C2=A0 EXPORT_FUNC (grub_pks_free_data) (void);<br>
&gt; -#else<br>
&gt; -static inline grub_pks_t *<br>
&gt; -grub_pks_get_keystore (void)<br>
&gt; -{<br>
&gt; -=C2=A0 return NULL;<br>
&gt; -}<br>
&gt; -<br>
&gt; -static inline void<br>
&gt; -grub_pks_free_data (void)<br>
&gt; -{<br>
&gt; -}<br>
&gt; -#endif /* __powerpc__ */<br>
&gt;=C2=A0 #endif<br>
<br>
This fixes the issue for me.<br>
<br>
Tested-by: John Paul Adrian Glaubitz &lt;<a href=3D"mailto:glaubitz@physik.=
fu-berlin.de" target=3D"_blank">[email protected]</a>&gt;<br>
<br>
Thanks,<br>
Adrian<br>
<br>
-- <br>
=C2=A0.&#39;&#39;`.=C2=A0 John Paul Adrian Glaubitz<br>
: :&#39; :=C2=A0 Debian Developer<br>
`. `&#39;=C2=A0 =C2=A0Physicist<br>
=C2=A0 `-=C2=A0 =C2=A0 GPG: 62FF 8A75 84E0 2956 9546=C2=A0 0006 7426 3B37 F=
5B5 F913<br>
<br>
_______________________________________________<br>
Grub-devel mailing list<br>
<a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]<=
/a><br>
<a href=3D"https://lists.gnu.org/mailman/listinfo/grub-devel" rel=3D"norefe=
rrer" target=3D"_blank">https://lists.gnu.org/mailman/listinfo/grub-devel</=
a><br>
</blockquote></div>

--0000000000004d7381064d3eb00e--



--===============1720197596990919637==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KR3J1Yi1kZXZl
bCBtYWlsaW5nIGxpc3QKR3J1Yi1kZXZlbEBnbnUub3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL2dydWItZGV2ZWwK

--===============1720197596990919637==--