Hello Sascha, On 06.09.24 12:40, Sascha Hauer wrote: > Instead of collecting the public keys directly in a section, we used to > collect pointers to the public keys. This indirection is unnecessary, > so drop it and put the keys directly into a section. The loop adding the keys duplicates them first, so this change looks sensible. > Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> Reviewed-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> > --- > crypto/public-keys.c | 10 +++++----- > scripts/keytoc.c | 12 ++++-------- > 2 files changed, 9 insertions(+), 13 deletions(-) > > diff --git a/crypto/public-keys.c b/crypto/public-keys.c > index 36c308908d..dc51ef18f8 100644 > --- a/crypto/public-keys.c > +++ b/crypto/public-keys.c > @@ -73,15 +73,15 @@ int public_key_verify(const struct public_key *key, const uint8_t *sig, > return -ENOKEY; > } > > -extern const struct public_key * const __public_keys_start; > -extern const struct public_key * const __public_keys_end; > +extern const struct public_key __public_keys_start[]; > +extern const struct public_key __public_keys_end[]; > > static int init_public_keys(void) > { > - const struct public_key * const *iter; > + const struct public_key *iter; > > - for (iter = &__public_keys_start; iter != &__public_keys_end; iter++) { > - struct public_key *key = public_key_dup(*iter); > + for (iter = __public_keys_start; iter != __public_keys_end; iter++) { > + struct public_key *key = public_key_dup(iter); > > if (!key) > continue; > diff --git a/scripts/keytoc.c b/scripts/keytoc.c > index 8b29118c95..bdda059759 100644 > --- a/scripts/keytoc.c > +++ b/scripts/keytoc.c > @@ -489,13 +489,11 @@ static int gen_key_ecdsa(EVP_PKEY *key, const char *key_name, const char *key_na > fprintf(outfilep, "\t.y = %s_y,\n", key_name_c); > fprintf(outfilep, "};\n"); > if (!standalone) { > - fprintf(outfilep, "\nstatic struct public_key %s_public_key = {\n", key_name_c); > + fprintf(outfilep, "\nstruct public_key __attribute__((section(\".public_keys.rodata.%s\"))) %s_public_key = {\n", key_name_c, key_name_c); > fprintf(outfilep, "\t.type = PUBLIC_KEY_TYPE_ECDSA,\n"); > fprintf(outfilep, "\t.key_name_hint = \"%s\",\n", key_name); > fprintf(outfilep, "\t.ecdsa = &%s,\n", key_name_c); > - fprintf(outfilep, "};"); > - fprintf(outfilep, "\nstruct public_key *%s_ecdsa_p __attribute__((section(\".public_keys.rodata.%s\"))) = &%s_public_key;\n", > - key_name_c, key_name_c, key_name_c); > + fprintf(outfilep, "};\n"); > } > } > > @@ -555,13 +553,11 @@ static int gen_key_rsa(EVP_PKEY *key, const char *key_name, const char *key_name > fprintf(outfilep, "};\n"); > > if (!standalone) { > - fprintf(outfilep, "\nstatic struct public_key %s_public_key = {\n", key_name_c); > + fprintf(outfilep, "\nstruct public_key __attribute__((section(\".public_keys.rodata.%s\"))) %s_public_key = {\n", key_name_c, key_name_c); > fprintf(outfilep, "\t.type = PUBLIC_KEY_TYPE_RSA,\n"); > fprintf(outfilep, "\t.key_name_hint = \"%s\",\n", key_name); > fprintf(outfilep, "\t.rsa = &%s,\n", key_name_c); > - fprintf(outfilep, "};"); > - fprintf(outfilep, "\nstruct public_key *%sp __attribute__((section(\".public_keys.rodata.%s\"))) = &%s_public_key;\n", > - key_name_c, key_name_c, key_name_c); > + fprintf(outfilep, "};\n"); > } > } > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |