Backport this series to 6.1&6.6 because we get build errors with GCC14 and OpenSSL3 (or later):
certs/extract-cert.c: In function 'main': certs/extract-cert.c:124:17: error: implicit declaration of function 'ENGINE_load_builtin_engines' [-Wimplicit-function-declaration] 124 | ENGINE_load_builtin_engines(); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ certs/extract-cert.c:126:21: error: implicit declaration of function 'ENGINE_by_id' [-Wimplicit-function-declaration] 126 | e = ENGINE_by_id("pkcs11"); | ^~~~~~~~~~~~ certs/extract-cert.c:126:19: error: assignment to 'ENGINE *' {aka 'struct engine_st *'} from 'int' makes pointer from integer without a cast [-Wint-conversion] 126 | e = ENGINE_by_id("pkcs11"); | ^ certs/extract-cert.c:128:21: error: implicit declaration of function 'ENGINE_init' [-Wimplicit-function-declaration] 128 | if (ENGINE_init(e)) | ^~~~~~~~~~~ certs/extract-cert.c:133:30: error: implicit declaration of function 'ENGINE_ctrl_cmd_string' [-Wimplicit-function-declaration] 133 | ERR(!ENGINE_ctrl_cmd_string(e, "PIN", key_pass, 0), "Set PKCS#11 PIN"); | ^~~~~~~~~~~~~~~~~~~~~~ certs/extract-cert.c:64:32: note: in definition of macro 'ERR' 64 | bool __cond = (cond); \ | ^~~~ certs/extract-cert.c:134:17: error: implicit declaration of function 'ENGINE_ctrl_cmd' [-Wimplicit-function-declaration] 134 | ENGINE_ctrl_cmd(e, "LOAD_CERT_CTRL", 0, &parms, NULL, 1); | ^~~~~~~~~~~~~~~
In theory 5.4&5.10&5.15 also need this, but they need more efforts because file paths are different.
The ENGINE interface has its limitations and it has been superseded by the PROVIDER API, it is deprecated in OpenSSL version 3.0. Some distros have started removing it from header files.
Update sign-file and extract-cert to use PROVIDER API for OpenSSL Major >= 3.
Tested on F39 with openssl-3.1.1, pkcs11-provider-0.5-2, openssl-pkcs11-0.4.12-4 and softhsm-2.6.1-5 by using same key/cert as PEM and PKCS11 and comparing that the result is identical.
V1 -> V2: Add upstream commit id.
V2 -> V3: Add correct version id.
Jan Stancek (3): sign-file,extract-cert: move common SSL helper functions to a header sign-file,extract-cert: avoid using deprecated ERR_get_error_line() sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
Signed-off-by: Jan Stancek jstancek@redhat.com Signed-off-by: Huacai Chen chenhuacai@loongson.cn --- MAINTAINERS | 1 + certs/Makefile | 2 +- certs/extract-cert.c | 138 +++++++++++++++++++++++-------------------- scripts/sign-file.c | 134 +++++++++++++++++++++-------------------- scripts/ssl-common.h | 32 ++++++++++ 5 files changed, 178 insertions(+), 129 deletions(-) create mode 100644 scripts/ssl-common.h --- 2.27.0
From: Jan Stancek jstancek@redhat.com
commit 300e6d4116f956b035281ec94297dc4dc8d4e1d3 upstream.
Couple error handling helpers are repeated in both tools, so move them to a common header.
Signed-off-by: Jan Stancek jstancek@redhat.com Reviewed-by: Jarkko Sakkinen jarkko@kernel.org Tested-by: R Nageswara Sastry rnsastry@linux.ibm.com Reviewed-by: Neal Gompa neal@gompa.dev Signed-off-by: Jarkko Sakkinen jarkko@kernel.org Signed-off-by: Huacai Chen chenhuacai@loongson.cn --- MAINTAINERS | 1 + certs/Makefile | 2 +- certs/extract-cert.c | 37 ++----------------------------------- scripts/sign-file.c | 37 ++----------------------------------- scripts/ssl-common.h | 39 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 45 insertions(+), 71 deletions(-) create mode 100644 scripts/ssl-common.h
diff --git a/MAINTAINERS b/MAINTAINERS index ae4c0cec5073..294d2ce29b73 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4784,6 +4784,7 @@ S: Maintained F: Documentation/admin-guide/module-signing.rst F: certs/ F: scripts/sign-file.c +F: scripts/ssl-common.h F: tools/certs/
CFAG12864B LCD DRIVER diff --git a/certs/Makefile b/certs/Makefile index 799ad7b9e68a..67e1f2707c2f 100644 --- a/certs/Makefile +++ b/certs/Makefile @@ -84,5 +84,5 @@ targets += x509_revocation_list
hostprogs := extract-cert
-HOSTCFLAGS_extract-cert.o = $(shell $(HOSTPKG_CONFIG) --cflags libcrypto 2> /dev/null) +HOSTCFLAGS_extract-cert.o = $(shell $(HOSTPKG_CONFIG) --cflags libcrypto 2> /dev/null) -I$(srctree)/scripts HOSTLDLIBS_extract-cert = $(shell $(HOSTPKG_CONFIG) --libs libcrypto 2> /dev/null || echo -lcrypto) diff --git a/certs/extract-cert.c b/certs/extract-cert.c index 70e9ec89d87d..8e7ba9974a1f 100644 --- a/certs/extract-cert.c +++ b/certs/extract-cert.c @@ -23,6 +23,8 @@ #include <openssl/err.h> #include <openssl/engine.h>
+#include "ssl-common.h" + /* * OpenSSL 3.0 deprecates the OpenSSL's ENGINE API. * @@ -40,41 +42,6 @@ void format(void) exit(2); }
-static void display_openssl_errors(int l) -{ - const char *file; - char buf[120]; - int e, line; - - if (ERR_peek_error() == 0) - return; - fprintf(stderr, "At main.c:%d:\n", l); - - while ((e = ERR_get_error_line(&file, &line))) { - ERR_error_string(e, buf); - fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line); - } -} - -static void drain_openssl_errors(void) -{ - const char *file; - int line; - - if (ERR_peek_error() == 0) - return; - while (ERR_get_error_line(&file, &line)) {} -} - -#define ERR(cond, fmt, ...) \ - do { \ - bool __cond = (cond); \ - display_openssl_errors(__LINE__); \ - if (__cond) { \ - err(1, fmt, ## __VA_ARGS__); \ - } \ - } while(0) - static const char *key_pass; static BIO *wb; static char *cert_dst; diff --git a/scripts/sign-file.c b/scripts/sign-file.c index 3edb156ae52c..39ba58db5d4e 100644 --- a/scripts/sign-file.c +++ b/scripts/sign-file.c @@ -29,6 +29,8 @@ #include <openssl/err.h> #include <openssl/engine.h>
+#include "ssl-common.h" + /* * OpenSSL 3.0 deprecates the OpenSSL's ENGINE API. * @@ -83,41 +85,6 @@ void format(void) exit(2); }
-static void display_openssl_errors(int l) -{ - const char *file; - char buf[120]; - int e, line; - - if (ERR_peek_error() == 0) - return; - fprintf(stderr, "At main.c:%d:\n", l); - - while ((e = ERR_get_error_line(&file, &line))) { - ERR_error_string(e, buf); - fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line); - } -} - -static void drain_openssl_errors(void) -{ - const char *file; - int line; - - if (ERR_peek_error() == 0) - return; - while (ERR_get_error_line(&file, &line)) {} -} - -#define ERR(cond, fmt, ...) \ - do { \ - bool __cond = (cond); \ - display_openssl_errors(__LINE__); \ - if (__cond) { \ - errx(1, fmt, ## __VA_ARGS__); \ - } \ - } while(0) - static const char *key_pass;
static int pem_pw_cb(char *buf, int len, int w, void *v) diff --git a/scripts/ssl-common.h b/scripts/ssl-common.h new file mode 100644 index 000000000000..e6711c75ed91 --- /dev/null +++ b/scripts/ssl-common.h @@ -0,0 +1,39 @@ +/* SPDX-License-Identifier: LGPL-2.1+ */ +/* + * SSL helper functions shared by sign-file and extract-cert. + */ + +static void display_openssl_errors(int l) +{ + const char *file; + char buf[120]; + int e, line; + + if (ERR_peek_error() == 0) + return; + fprintf(stderr, "At main.c:%d:\n", l); + + while ((e = ERR_get_error_line(&file, &line))) { + ERR_error_string(e, buf); + fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line); + } +} + +static void drain_openssl_errors(void) +{ + const char *file; + int line; + + if (ERR_peek_error() == 0) + return; + while (ERR_get_error_line(&file, &line)) {} +} + +#define ERR(cond, fmt, ...) \ + do { \ + bool __cond = (cond); \ + display_openssl_errors(__LINE__); \ + if (__cond) { \ + errx(1, fmt, ## __VA_ARGS__); \ + } \ + } while (0)
[ Sasha's backport helper bot ]
Hi,
The upstream commit SHA1 provided is correct: 300e6d4116f956b035281ec94297dc4dc8d4e1d3
WARNING: Author mismatch between patch and upstream commit: Backport author: Huacai Chenchenhuacai@loongson.cn Commit author: Jan Stancekjstancek@redhat.com
Status in newer kernel trees: 6.13.y | Present (exact SHA1) 6.12.y | Present (exact SHA1) 6.6.y | Not found
Note: The patch differs from the upstream commit: --- 1: 300e6d4116f95 ! 1: feb32525515c2 sign-file,extract-cert: move common SSL helper functions to a header @@ Metadata ## Commit message ## sign-file,extract-cert: move common SSL helper functions to a header
+ commit 300e6d4116f956b035281ec94297dc4dc8d4e1d3 upstream. + Couple error handling helpers are repeated in both tools, so move them to a common header.
@@ Commit message Tested-by: R Nageswara Sastry rnsastry@linux.ibm.com Reviewed-by: Neal Gompa neal@gompa.dev Signed-off-by: Jarkko Sakkinen jarkko@kernel.org + Signed-off-by: Huacai Chen chenhuacai@loongson.cn
## MAINTAINERS ## @@ MAINTAINERS: S: Maintained ---
Results of testing on various branches:
| Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | Current branch | Success | Success |
From: Jan Stancek jstancek@redhat.com
commit 467d60eddf55588add232feda325da7215ddaf30 upstream.
ERR_get_error_line() is deprecated since OpenSSL 3.0.
Use ERR_peek_error_line() instead, and combine display_openssl_errors() and drain_openssl_errors() to a single function where parameter decides if it should consume errors silently.
Signed-off-by: Jan Stancek jstancek@redhat.com Reviewed-by: Jarkko Sakkinen jarkko@kernel.org Tested-by: R Nageswara Sastry rnsastry@linux.ibm.com Reviewed-by: Neal Gompa neal@gompa.dev Signed-off-by: Jarkko Sakkinen jarkko@kernel.org Signed-off-by: Huacai Chen chenhuacai@loongson.cn --- certs/extract-cert.c | 4 ++-- scripts/sign-file.c | 6 +++--- scripts/ssl-common.h | 23 ++++++++--------------- 3 files changed, 13 insertions(+), 20 deletions(-)
diff --git a/certs/extract-cert.c b/certs/extract-cert.c index 8e7ba9974a1f..61bbe0085671 100644 --- a/certs/extract-cert.c +++ b/certs/extract-cert.c @@ -99,11 +99,11 @@ int main(int argc, char **argv) parms.cert = NULL;
ENGINE_load_builtin_engines(); - drain_openssl_errors(); + drain_openssl_errors(__LINE__, 1); e = ENGINE_by_id("pkcs11"); ERR(!e, "Load PKCS#11 ENGINE"); if (ENGINE_init(e)) - drain_openssl_errors(); + drain_openssl_errors(__LINE__, 1); else ERR(1, "ENGINE_init"); if (key_pass) diff --git a/scripts/sign-file.c b/scripts/sign-file.c index 39ba58db5d4e..bb3fdf1a617c 100644 --- a/scripts/sign-file.c +++ b/scripts/sign-file.c @@ -114,11 +114,11 @@ static EVP_PKEY *read_private_key(const char *private_key_name) ENGINE *e;
ENGINE_load_builtin_engines(); - drain_openssl_errors(); + drain_openssl_errors(__LINE__, 1); e = ENGINE_by_id("pkcs11"); ERR(!e, "Load PKCS#11 ENGINE"); if (ENGINE_init(e)) - drain_openssl_errors(); + drain_openssl_errors(__LINE__, 1); else ERR(1, "ENGINE_init"); if (key_pass) @@ -273,7 +273,7 @@ int main(int argc, char **argv)
/* Digest the module data. */ OpenSSL_add_all_digests(); - display_openssl_errors(__LINE__); + drain_openssl_errors(__LINE__, 0); digest_algo = EVP_get_digestbyname(hash_algo); ERR(!digest_algo, "EVP_get_digestbyname");
diff --git a/scripts/ssl-common.h b/scripts/ssl-common.h index e6711c75ed91..2db0e181143c 100644 --- a/scripts/ssl-common.h +++ b/scripts/ssl-common.h @@ -3,7 +3,7 @@ * SSL helper functions shared by sign-file and extract-cert. */
-static void display_openssl_errors(int l) +static void drain_openssl_errors(int l, int silent) { const char *file; char buf[120]; @@ -11,28 +11,21 @@ static void display_openssl_errors(int l)
if (ERR_peek_error() == 0) return; - fprintf(stderr, "At main.c:%d:\n", l); + if (!silent) + fprintf(stderr, "At main.c:%d:\n", l);
- while ((e = ERR_get_error_line(&file, &line))) { + while ((e = ERR_peek_error_line(&file, &line))) { ERR_error_string(e, buf); - fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line); + if (!silent) + fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line); + ERR_get_error(); } }
-static void drain_openssl_errors(void) -{ - const char *file; - int line; - - if (ERR_peek_error() == 0) - return; - while (ERR_get_error_line(&file, &line)) {} -} - #define ERR(cond, fmt, ...) \ do { \ bool __cond = (cond); \ - display_openssl_errors(__LINE__); \ + drain_openssl_errors(__LINE__, 0); \ if (__cond) { \ errx(1, fmt, ## __VA_ARGS__); \ } \
[ Sasha's backport helper bot ]
Hi,
The upstream commit SHA1 provided is correct: 467d60eddf55588add232feda325da7215ddaf30
WARNING: Author mismatch between patch and upstream commit: Backport author: Huacai Chenchenhuacai@loongson.cn Commit author: Jan Stancekjstancek@redhat.com
Status in newer kernel trees: 6.13.y | Present (exact SHA1) 6.12.y | Present (exact SHA1) 6.6.y | Not found
Note: The patch differs from the upstream commit: --- 1: 467d60eddf555 ! 1: 9c23463f15459 sign-file,extract-cert: avoid using deprecated ERR_get_error_line() @@ Metadata ## Commit message ## sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
+ commit 467d60eddf55588add232feda325da7215ddaf30 upstream. + ERR_get_error_line() is deprecated since OpenSSL 3.0.
Use ERR_peek_error_line() instead, and combine display_openssl_errors() @@ Commit message Tested-by: R Nageswara Sastry rnsastry@linux.ibm.com Reviewed-by: Neal Gompa neal@gompa.dev Signed-off-by: Jarkko Sakkinen jarkko@kernel.org + Signed-off-by: Huacai Chen chenhuacai@loongson.cn
## certs/extract-cert.c ## @@ certs/extract-cert.c: int main(int argc, char **argv) ---
Results of testing on various branches:
| Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | Current branch | Success | Success |
From: Jan Stancek jstancek@redhat.com
commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
ENGINE API has been deprecated since OpenSSL version 3.0 [1]. Distros have started dropping support from headers and in future it will likely disappear also from library.
It has been superseded by the PROVIDER API, so use it instead for OPENSSL MAJOR >= 3.
[1] https://github.com/openssl/openssl/blob/master/README-ENGINES.md
[jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
Signed-off-by: Jan Stancek jstancek@redhat.com Reviewed-by: Jarkko Sakkinen jarkko@kernel.org Tested-by: R Nageswara Sastry rnsastry@linux.ibm.com Reviewed-by: Neal Gompa neal@gompa.dev Signed-off-by: Jarkko Sakkinen jarkko@kernel.org Signed-off-by: Huacai Chen chenhuacai@loongson.cn --- certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++------------- scripts/sign-file.c | 93 ++++++++++++++++++++++++++------------ 2 files changed, 138 insertions(+), 58 deletions(-)
diff --git a/certs/extract-cert.c b/certs/extract-cert.c index 61bbe0085671..7d6d468ed612 100644 --- a/certs/extract-cert.c +++ b/certs/extract-cert.c @@ -21,17 +21,18 @@ #include <openssl/bio.h> #include <openssl/pem.h> #include <openssl/err.h> -#include <openssl/engine.h> - +#if OPENSSL_VERSION_MAJOR >= 3 +# define USE_PKCS11_PROVIDER +# include <openssl/provider.h> +# include <openssl/store.h> +#else +# if !defined(OPENSSL_NO_ENGINE) && !defined(OPENSSL_NO_DEPRECATED_3_0) +# define USE_PKCS11_ENGINE +# include <openssl/engine.h> +# endif +#endif #include "ssl-common.h"
-/* - * OpenSSL 3.0 deprecates the OpenSSL's ENGINE API. - * - * Remove this if/when that API is no longer used - */ -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - #define PKEY_ID_PKCS7 2
static __attribute__((noreturn)) @@ -61,6 +62,66 @@ static void write_cert(X509 *x509) fprintf(stderr, "Extracted cert: %s\n", buf); }
+static X509 *load_cert_pkcs11(const char *cert_src) +{ + X509 *cert = NULL; +#ifdef USE_PKCS11_PROVIDER + OSSL_STORE_CTX *store; + + if (!OSSL_PROVIDER_try_load(NULL, "pkcs11", true)) + ERR(1, "OSSL_PROVIDER_try_load(pkcs11)"); + if (!OSSL_PROVIDER_try_load(NULL, "default", true)) + ERR(1, "OSSL_PROVIDER_try_load(default)"); + + store = OSSL_STORE_open(cert_src, NULL, NULL, NULL, NULL); + ERR(!store, "OSSL_STORE_open"); + + while (!OSSL_STORE_eof(store)) { + OSSL_STORE_INFO *info = OSSL_STORE_load(store); + + if (!info) { + drain_openssl_errors(__LINE__, 0); + continue; + } + if (OSSL_STORE_INFO_get_type(info) == OSSL_STORE_INFO_CERT) { + cert = OSSL_STORE_INFO_get1_CERT(info); + ERR(!cert, "OSSL_STORE_INFO_get1_CERT"); + } + OSSL_STORE_INFO_free(info); + if (cert) + break; + } + OSSL_STORE_close(store); +#elif defined(USE_PKCS11_ENGINE) + ENGINE *e; + struct { + const char *cert_id; + X509 *cert; + } parms; + + parms.cert_id = cert_src; + parms.cert = NULL; + + ENGINE_load_builtin_engines(); + drain_openssl_errors(__LINE__, 1); + e = ENGINE_by_id("pkcs11"); + ERR(!e, "Load PKCS#11 ENGINE"); + if (ENGINE_init(e)) + drain_openssl_errors(__LINE__, 1); + else + ERR(1, "ENGINE_init"); + if (key_pass) + ERR(!ENGINE_ctrl_cmd_string(e, "PIN", key_pass, 0), "Set PKCS#11 PIN"); + ENGINE_ctrl_cmd(e, "LOAD_CERT_CTRL", 0, &parms, NULL, 1); + ERR(!parms.cert, "Get X.509 from PKCS#11"); + cert = parms.cert; +#else + fprintf(stderr, "no pkcs11 engine/provider available\n"); + exit(1); +#endif + return cert; +} + int main(int argc, char **argv) { char *cert_src; @@ -89,28 +150,10 @@ int main(int argc, char **argv) fclose(f); exit(0); } else if (!strncmp(cert_src, "pkcs11:", 7)) { - ENGINE *e; - struct { - const char *cert_id; - X509 *cert; - } parms; + X509 *cert = load_cert_pkcs11(cert_src);
- parms.cert_id = cert_src; - parms.cert = NULL; - - ENGINE_load_builtin_engines(); - drain_openssl_errors(__LINE__, 1); - e = ENGINE_by_id("pkcs11"); - ERR(!e, "Load PKCS#11 ENGINE"); - if (ENGINE_init(e)) - drain_openssl_errors(__LINE__, 1); - else - ERR(1, "ENGINE_init"); - if (key_pass) - ERR(!ENGINE_ctrl_cmd_string(e, "PIN", key_pass, 0), "Set PKCS#11 PIN"); - ENGINE_ctrl_cmd(e, "LOAD_CERT_CTRL", 0, &parms, NULL, 1); - ERR(!parms.cert, "Get X.509 from PKCS#11"); - write_cert(parms.cert); + ERR(!cert, "load_cert_pkcs11 failed"); + write_cert(cert); } else { BIO *b; X509 *x509; diff --git a/scripts/sign-file.c b/scripts/sign-file.c index bb3fdf1a617c..7070245edfc1 100644 --- a/scripts/sign-file.c +++ b/scripts/sign-file.c @@ -27,17 +27,18 @@ #include <openssl/evp.h> #include <openssl/pem.h> #include <openssl/err.h> -#include <openssl/engine.h> - +#if OPENSSL_VERSION_MAJOR >= 3 +# define USE_PKCS11_PROVIDER +# include <openssl/provider.h> +# include <openssl/store.h> +#else +# if !defined(OPENSSL_NO_ENGINE) && !defined(OPENSSL_NO_DEPRECATED_3_0) +# define USE_PKCS11_ENGINE +# include <openssl/engine.h> +# endif +#endif #include "ssl-common.h"
-/* - * OpenSSL 3.0 deprecates the OpenSSL's ENGINE API. - * - * Remove this if/when that API is no longer used - */ -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - /* * Use CMS if we have openssl-1.0.0 or newer available - otherwise we have to * assume that it's not available and its header file is missing and that we @@ -106,28 +107,64 @@ static int pem_pw_cb(char *buf, int len, int w, void *v) return pwlen; }
-static EVP_PKEY *read_private_key(const char *private_key_name) +static EVP_PKEY *read_private_key_pkcs11(const char *private_key_name) { - EVP_PKEY *private_key; + EVP_PKEY *private_key = NULL; +#ifdef USE_PKCS11_PROVIDER + OSSL_STORE_CTX *store;
- if (!strncmp(private_key_name, "pkcs11:", 7)) { - ENGINE *e; + if (!OSSL_PROVIDER_try_load(NULL, "pkcs11", true)) + ERR(1, "OSSL_PROVIDER_try_load(pkcs11)"); + if (!OSSL_PROVIDER_try_load(NULL, "default", true)) + ERR(1, "OSSL_PROVIDER_try_load(default)"); + + store = OSSL_STORE_open(private_key_name, NULL, NULL, NULL, NULL); + ERR(!store, "OSSL_STORE_open");
- ENGINE_load_builtin_engines(); + while (!OSSL_STORE_eof(store)) { + OSSL_STORE_INFO *info = OSSL_STORE_load(store); + + if (!info) { + drain_openssl_errors(__LINE__, 0); + continue; + } + if (OSSL_STORE_INFO_get_type(info) == OSSL_STORE_INFO_PKEY) { + private_key = OSSL_STORE_INFO_get1_PKEY(info); + ERR(!private_key, "OSSL_STORE_INFO_get1_PKEY"); + } + OSSL_STORE_INFO_free(info); + if (private_key) + break; + } + OSSL_STORE_close(store); +#elif defined(USE_PKCS11_ENGINE) + ENGINE *e; + + ENGINE_load_builtin_engines(); + drain_openssl_errors(__LINE__, 1); + e = ENGINE_by_id("pkcs11"); + ERR(!e, "Load PKCS#11 ENGINE"); + if (ENGINE_init(e)) drain_openssl_errors(__LINE__, 1); - e = ENGINE_by_id("pkcs11"); - ERR(!e, "Load PKCS#11 ENGINE"); - if (ENGINE_init(e)) - drain_openssl_errors(__LINE__, 1); - else - ERR(1, "ENGINE_init"); - if (key_pass) - ERR(!ENGINE_ctrl_cmd_string(e, "PIN", key_pass, 0), - "Set PKCS#11 PIN"); - private_key = ENGINE_load_private_key(e, private_key_name, - NULL, NULL); - ERR(!private_key, "%s", private_key_name); + else + ERR(1, "ENGINE_init"); + if (key_pass) + ERR(!ENGINE_ctrl_cmd_string(e, "PIN", key_pass, 0), "Set PKCS#11 PIN"); + private_key = ENGINE_load_private_key(e, private_key_name, NULL, NULL); + ERR(!private_key, "%s", private_key_name); +#else + fprintf(stderr, "no pkcs11 engine/provider available\n"); + exit(1); +#endif + return private_key; +} + +static EVP_PKEY *read_private_key(const char *private_key_name) +{ + if (!strncmp(private_key_name, "pkcs11:", 7)) { + return read_private_key_pkcs11(private_key_name); } else { + EVP_PKEY *private_key; BIO *b;
b = BIO_new_file(private_key_name, "rb"); @@ -136,9 +173,9 @@ static EVP_PKEY *read_private_key(const char *private_key_name) NULL); ERR(!private_key, "%s", private_key_name); BIO_free(b); - }
- return private_key; + return private_key; + } }
static X509 *read_x509(const char *x509_name)
[ Sasha's backport helper bot ]
Hi,
The upstream commit SHA1 provided is correct: 558bdc45dfb2669e1741384a0c80be9c82fa052c
WARNING: Author mismatch between patch and upstream commit: Backport author: Huacai Chenchenhuacai@loongson.cn Commit author: Jan Stancekjstancek@redhat.com
Status in newer kernel trees: 6.13.y | Present (exact SHA1) 6.12.y | Present (exact SHA1) 6.6.y | Not found
Note: The patch differs from the upstream commit: --- 1: 558bdc45dfb26 ! 1: 170b80ba5ce0b sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 @@ Metadata ## Commit message ## sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
+ commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream. + ENGINE API has been deprecated since OpenSSL version 3.0 [1]. Distros have started dropping support from headers and in future it will likely disappear also from library. @@ Commit message Tested-by: R Nageswara Sastry rnsastry@linux.ibm.com Reviewed-by: Neal Gompa neal@gompa.dev Signed-off-by: Jarkko Sakkinen jarkko@kernel.org + Signed-off-by: Huacai Chen chenhuacai@loongson.cn
## certs/extract-cert.c ## @@ @@ certs/extract-cert.c: static void write_cert(X509 *x509) fprintf(stderr, "Extracted cert: %s\n", buf); }
+-int main(int argc, char **argv) +static X509 *load_cert_pkcs11(const char *cert_src) -+{ + { +- char *cert_src; +- +- OpenSSL_add_all_algorithms(); +- ERR_load_crypto_strings(); +- ERR_clear_error(); + X509 *cert = NULL; +#ifdef USE_PKCS11_PROVIDER + OSSL_STORE_CTX *store; -+ + +- kbuild_verbose = atoi(getenv("KBUILD_VERBOSE")?:"0"); + if (!OSSL_PROVIDER_try_load(NULL, "pkcs11", true)) + ERR(1, "OSSL_PROVIDER_try_load(pkcs11)"); + if (!OSSL_PROVIDER_try_load(NULL, "default", true)) + ERR(1, "OSSL_PROVIDER_try_load(default)"); -+ + +- key_pass = getenv("KBUILD_SIGN_PIN"); +- +- if (argc != 3) +- format(); + store = OSSL_STORE_open(cert_src, NULL, NULL, NULL, NULL); + ERR(!store, "OSSL_STORE_open"); -+ + +- cert_src = argv[1]; +- cert_dst = argv[2]; + while (!OSSL_STORE_eof(store)) { + OSSL_STORE_INFO *info = OSSL_STORE_load(store); -+ + +- if (!cert_src[0]) { +- /* Invoked with no input; create empty file */ +- FILE *f = fopen(cert_dst, "wb"); +- ERR(!f, "%s", cert_dst); +- fclose(f); +- exit(0); +- } else if (!strncmp(cert_src, "pkcs11:", 7)) { + if (!info) { + drain_openssl_errors(__LINE__, 0); + continue; @@ certs/extract-cert.c: static void write_cert(X509 *x509) + } + OSSL_STORE_close(store); +#elif defined(USE_PKCS11_ENGINE) -+ ENGINE *e; -+ struct { -+ const char *cert_id; -+ X509 *cert; -+ } parms; -+ -+ parms.cert_id = cert_src; -+ parms.cert = NULL; -+ -+ ENGINE_load_builtin_engines(); -+ drain_openssl_errors(__LINE__, 1); -+ e = ENGINE_by_id("pkcs11"); -+ ERR(!e, "Load PKCS#11 ENGINE"); -+ if (ENGINE_init(e)) -+ drain_openssl_errors(__LINE__, 1); -+ else -+ ERR(1, "ENGINE_init"); -+ if (key_pass) -+ ERR(!ENGINE_ctrl_cmd_string(e, "PIN", key_pass, 0), "Set PKCS#11 PIN"); -+ ENGINE_ctrl_cmd(e, "LOAD_CERT_CTRL", 0, &parms, NULL, 1); -+ ERR(!parms.cert, "Get X.509 from PKCS#11"); + ENGINE *e; + struct { + const char *cert_id; +@@ certs/extract-cert.c: int main(int argc, char **argv) + ERR(!ENGINE_ctrl_cmd_string(e, "PIN", key_pass, 0), "Set PKCS#11 PIN"); + ENGINE_ctrl_cmd(e, "LOAD_CERT_CTRL", 0, &parms, NULL, 1); + ERR(!parms.cert, "Get X.509 from PKCS#11"); +- write_cert(parms.cert); + cert = parms.cert; +#else + fprintf(stderr, "no pkcs11 engine/provider available\n"); @@ certs/extract-cert.c: static void write_cert(X509 *x509) + return cert; +} + - int main(int argc, char **argv) - { - char *cert_src; -@@ certs/extract-cert.c: int main(int argc, char **argv) - fclose(f); - exit(0); - } else if (!strncmp(cert_src, "pkcs11:", 7)) { -- ENGINE *e; -- struct { -- const char *cert_id; -- X509 *cert; -- } parms; ++int main(int argc, char **argv) ++{ ++ char *cert_src; ++ ++ OpenSSL_add_all_algorithms(); ++ ERR_load_crypto_strings(); ++ ERR_clear_error(); ++ ++ kbuild_verbose = atoi(getenv("KBUILD_VERBOSE")?:"0"); ++ ++ key_pass = getenv("KBUILD_SIGN_PIN"); ++ ++ if (argc != 3) ++ format(); ++ ++ cert_src = argv[1]; ++ cert_dst = argv[2]; ++ ++ if (!cert_src[0]) { ++ /* Invoked with no input; create empty file */ ++ FILE *f = fopen(cert_dst, "wb"); ++ ERR(!f, "%s", cert_dst); ++ fclose(f); ++ exit(0); ++ } else if (!strncmp(cert_src, "pkcs11:", 7)) { + X509 *cert = load_cert_pkcs11(cert_src); - -- parms.cert_id = cert_src; -- parms.cert = NULL; -- -- ENGINE_load_builtin_engines(); -- drain_openssl_errors(__LINE__, 1); -- e = ENGINE_by_id("pkcs11"); -- ERR(!e, "Load PKCS#11 ENGINE"); -- if (ENGINE_init(e)) -- drain_openssl_errors(__LINE__, 1); -- else -- ERR(1, "ENGINE_init"); -- if (key_pass) -- ERR(!ENGINE_ctrl_cmd_string(e, "PIN", key_pass, 0), "Set PKCS#11 PIN"); -- ENGINE_ctrl_cmd(e, "LOAD_CERT_CTRL", 0, &parms, NULL, 1); -- ERR(!parms.cert, "Get X.509 from PKCS#11"); -- write_cert(parms.cert); ++ + ERR(!cert, "load_cert_pkcs11 failed"); + write_cert(cert); } else { ---
Results of testing on various branches:
| Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | Current branch | Success | Success |
On Wed, Mar 19, 2025 at 02:40:31PM +0800, Huacai Chen wrote:
From: Jan Stancek jstancek@redhat.com
commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
ENGINE API has been deprecated since OpenSSL version 3.0 [1]. Distros have started dropping support from headers and in future it will likely disappear also from library.
It has been superseded by the PROVIDER API, so use it instead for OPENSSL MAJOR >= 3.
[1] https://github.com/openssl/openssl/blob/master/README-ENGINES.md
[jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
Signed-off-by: Jan Stancek jstancek@redhat.com Reviewed-by: Jarkko Sakkinen jarkko@kernel.org Tested-by: R Nageswara Sastry rnsastry@linux.ibm.com Reviewed-by: Neal Gompa neal@gompa.dev Signed-off-by: Jarkko Sakkinen jarkko@kernel.org Signed-off-by: Huacai Chen chenhuacai@loongson.cn
certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++------------- scripts/sign-file.c | 93 ++++++++++++++++++++++++++------------ 2 files changed, 138 insertions(+), 58 deletions(-)
This seems to differ from what is upstream by a lot, please document what you changed from it and why when you resend this series again.
thanks,
greg k-h
On Wed, Mar 19, 2025 at 07:13:13AM -0700, Greg Kroah-Hartman wrote:
On Wed, Mar 19, 2025 at 02:40:31PM +0800, Huacai Chen wrote:
From: Jan Stancek jstancek@redhat.com
commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
ENGINE API has been deprecated since OpenSSL version 3.0 [1]. Distros have started dropping support from headers and in future it will likely disappear also from library.
It has been superseded by the PROVIDER API, so use it instead for OPENSSL MAJOR >= 3.
[1] https://github.com/openssl/openssl/blob/master/README-ENGINES.md
[jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
Signed-off-by: Jan Stancek jstancek@redhat.com Reviewed-by: Jarkko Sakkinen jarkko@kernel.org Tested-by: R Nageswara Sastry rnsastry@linux.ibm.com Reviewed-by: Neal Gompa neal@gompa.dev Signed-off-by: Jarkko Sakkinen jarkko@kernel.org Signed-off-by: Huacai Chen chenhuacai@loongson.cn
certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++------------- scripts/sign-file.c | 93 ++++++++++++++++++++++++++------------ 2 files changed, 138 insertions(+), 58 deletions(-)
This seems to differ from what is upstream by a lot, please document what you changed from it and why when you resend this series again.
Hunks are arranged differently, but code appears to be identical. When I apply the series to v6.6.83 and compare with upstream I get:
$ git range-diff HEAD~3..HEAD 558bdc45dfb2~3..558bdc45dfb2 1: 02ea9f7368c6 ! 1: 300e6d4116f9 sign-file,extract-cert: move common SSL helper functions to a header @@ Metadata ## Commit message ## sign-file,extract-cert: move common SSL helper functions to a header
- commit 300e6d4116f956b035281ec94297dc4dc8d4e1d3 upstream. - Couple error handling helpers are repeated in both tools, so move them to a common header.
@@ Commit message Tested-by: R Nageswara Sastry rnsastry@linux.ibm.com Reviewed-by: Neal Gompa neal@gompa.dev Signed-off-by: Jarkko Sakkinen jarkko@kernel.org - Signed-off-by: Huacai Chen chenhuacai@loongson.cn
## MAINTAINERS ## @@ MAINTAINERS: S: Maintained 2: 0a81fb059cfd ! 2: 467d60eddf55 sign-file,extract-cert: avoid using deprecated ERR_get_error_line() @@ Metadata ## Commit message ## sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
- commit 467d60eddf55588add232feda325da7215ddaf30 upstream. - ERR_get_error_line() is deprecated since OpenSSL 3.0.
Use ERR_peek_error_line() instead, and combine display_openssl_errors() @@ Commit message Tested-by: R Nageswara Sastry rnsastry@linux.ibm.com Reviewed-by: Neal Gompa neal@gompa.dev Signed-off-by: Jarkko Sakkinen jarkko@kernel.org - Signed-off-by: Huacai Chen chenhuacai@loongson.cn
## certs/extract-cert.c ## @@ certs/extract-cert.c: int main(int argc, char **argv) 3: 0882f379a1f5 ! 3: 558bdc45dfb2 sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 @@ Metadata ## Commit message ## sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
- commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream. - ENGINE API has been deprecated since OpenSSL version 3.0 [1]. Distros have started dropping support from headers and in future it will likely disappear also from library. @@ Commit message Tested-by: R Nageswara Sastry rnsastry@linux.ibm.com Reviewed-by: Neal Gompa neal@gompa.dev Signed-off-by: Jarkko Sakkinen jarkko@kernel.org - Signed-off-by: Huacai Chen chenhuacai@loongson.cn
## certs/extract-cert.c ## @@
Regards, Jan
On Wed, Mar 19, 2025 at 03:44:19PM +0100, Jan Stancek wrote:
On Wed, Mar 19, 2025 at 07:13:13AM -0700, Greg Kroah-Hartman wrote:
On Wed, Mar 19, 2025 at 02:40:31PM +0800, Huacai Chen wrote:
From: Jan Stancek jstancek@redhat.com
commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
ENGINE API has been deprecated since OpenSSL version 3.0 [1]. Distros have started dropping support from headers and in future it will likely disappear also from library.
It has been superseded by the PROVIDER API, so use it instead for OPENSSL MAJOR >= 3.
[1] https://github.com/openssl/openssl/blob/master/README-ENGINES.md
[jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
Signed-off-by: Jan Stancek jstancek@redhat.com Reviewed-by: Jarkko Sakkinen jarkko@kernel.org Tested-by: R Nageswara Sastry rnsastry@linux.ibm.com Reviewed-by: Neal Gompa neal@gompa.dev Signed-off-by: Jarkko Sakkinen jarkko@kernel.org Signed-off-by: Huacai Chen chenhuacai@loongson.cn
certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++------------- scripts/sign-file.c | 93 ++++++++++++++++++++++++++------------ 2 files changed, 138 insertions(+), 58 deletions(-)
This seems to differ from what is upstream by a lot, please document what you changed from it and why when you resend this series again.
Hunks are arranged differently, but code appears to be identical. When I apply the series to v6.6.83 and compare with upstream I get:
If so, why is the diffstat different? Also why are the hunks arranged differently, that's a hint to me that something went wrong and I can't trust the patch at all.
thanks,
greg k-h
On Wed, Mar 19, 2025 at 5:26 PM Greg Kroah-Hartman gregkh@linuxfoundation.org wrote:
On Wed, Mar 19, 2025 at 03:44:19PM +0100, Jan Stancek wrote:
On Wed, Mar 19, 2025 at 07:13:13AM -0700, Greg Kroah-Hartman wrote:
On Wed, Mar 19, 2025 at 02:40:31PM +0800, Huacai Chen wrote:
From: Jan Stancek jstancek@redhat.com
commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
ENGINE API has been deprecated since OpenSSL version 3.0 [1]. Distros have started dropping support from headers and in future it will likely disappear also from library.
It has been superseded by the PROVIDER API, so use it instead for OPENSSL MAJOR >= 3.
[1] https://github.com/openssl/openssl/blob/master/README-ENGINES.md
[jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
Signed-off-by: Jan Stancek jstancek@redhat.com Reviewed-by: Jarkko Sakkinen jarkko@kernel.org Tested-by: R Nageswara Sastry rnsastry@linux.ibm.com Reviewed-by: Neal Gompa neal@gompa.dev Signed-off-by: Jarkko Sakkinen jarkko@kernel.org Signed-off-by: Huacai Chen chenhuacai@loongson.cn
certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++------------- scripts/sign-file.c | 93 ++++++++++++++++++++++++++------------ 2 files changed, 138 insertions(+), 58 deletions(-)
This seems to differ from what is upstream by a lot, please document what you changed from it and why when you resend this series again.
Hunks are arranged differently, but code appears to be identical. When I apply the series to v6.6.83 and compare with upstream I get:
If so, why is the diffstat different? Also why are the hunks arranged differently,
He appears to be using "--diff-algorithm=minimal", while you probably patience or histogram.
$ git format-patch -1 --stdout --diff-algorithm=minimal 558bdc45dfb2 | grep -A3 -m1 -- "---" --- certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++------------- scripts/sign-file.c | 93 ++++++++++++++++++++++++++------------ 2 files changed, 138 insertions(+), 58 deletions(-)
Should be easy to regenerate with different diff-alg for v4.
Regards, Jan
that's a hint to me that something went wrong and I can't trust the patch at all.
thanks,
greg k-h
Hi, all,
On Thu, Mar 20, 2025 at 12:53 AM Jan Stancek jstancek@redhat.com wrote:
On Wed, Mar 19, 2025 at 5:26 PM Greg Kroah-Hartman gregkh@linuxfoundation.org wrote:
On Wed, Mar 19, 2025 at 03:44:19PM +0100, Jan Stancek wrote:
On Wed, Mar 19, 2025 at 07:13:13AM -0700, Greg Kroah-Hartman wrote:
On Wed, Mar 19, 2025 at 02:40:31PM +0800, Huacai Chen wrote:
From: Jan Stancek jstancek@redhat.com
commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
ENGINE API has been deprecated since OpenSSL version 3.0 [1]. Distros have started dropping support from headers and in future it will likely disappear also from library.
It has been superseded by the PROVIDER API, so use it instead for OPENSSL MAJOR >= 3.
[1] https://github.com/openssl/openssl/blob/master/README-ENGINES.md
[jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
Signed-off-by: Jan Stancek jstancek@redhat.com Reviewed-by: Jarkko Sakkinen jarkko@kernel.org Tested-by: R Nageswara Sastry rnsastry@linux.ibm.com Reviewed-by: Neal Gompa neal@gompa.dev Signed-off-by: Jarkko Sakkinen jarkko@kernel.org Signed-off-by: Huacai Chen chenhuacai@loongson.cn
certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++------------- scripts/sign-file.c | 93 ++++++++++++++++++++++++++------------ 2 files changed, 138 insertions(+), 58 deletions(-)
This seems to differ from what is upstream by a lot, please document what you changed from it and why when you resend this series again.
Hunks are arranged differently, but code appears to be identical. When I apply the series to v6.6.83 and compare with upstream I get:
If so, why is the diffstat different? Also why are the hunks arranged differently,
He appears to be using "--diff-algorithm=minimal", while you probably patience or histogram.
$ git format-patch -1 --stdout --diff-algorithm=minimal 558bdc45dfb2 | grep -A3 -m1 -- "---"
certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++------------- scripts/sign-file.c | 93 ++++++++++++++++++++++++++------------ 2 files changed, 138 insertions(+), 58 deletions(-)
Should be easy to regenerate with different diff-alg for v4.
I use the default configuration to generate patches, and since the code is identical, should I really send a V4?
Huacai
Regards, Jan
that's a hint to me that something went wrong and I can't trust the patch at all.
thanks,
greg k-h
On Thu, Mar 20, 2025 at 12:53 AM Jan Stancek jstancek@redhat.com wrote:
On Wed, Mar 19, 2025 at 5:26 PM Greg Kroah-Hartman gregkh@linuxfoundation.org wrote:
On Wed, Mar 19, 2025 at 03:44:19PM +0100, Jan Stancek wrote:
On Wed, Mar 19, 2025 at 07:13:13AM -0700, Greg Kroah-Hartman wrote:
On Wed, Mar 19, 2025 at 02:40:31PM +0800, Huacai Chen wrote:
From: Jan Stancek jstancek@redhat.com
commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
ENGINE API has been deprecated since OpenSSL version 3.0 [1]. Distros have started dropping support from headers and in future it will likely disappear also from library.
It has been superseded by the PROVIDER API, so use it instead for OPENSSL MAJOR >= 3.
[1] https://github.com/openssl/openssl/blob/master/README-ENGINES.md
[jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
Signed-off-by: Jan Stancek jstancek@redhat.com Reviewed-by: Jarkko Sakkinen jarkko@kernel.org Tested-by: R Nageswara Sastry rnsastry@linux.ibm.com Reviewed-by: Neal Gompa neal@gompa.dev Signed-off-by: Jarkko Sakkinen jarkko@kernel.org Signed-off-by: Huacai Chen chenhuacai@loongson.cn
certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++------------- scripts/sign-file.c | 93 ++++++++++++++++++++++++++------------ 2 files changed, 138 insertions(+), 58 deletions(-)
This seems to differ from what is upstream by a lot, please document what you changed from it and why when you resend this series again.
Hunks are arranged differently, but code appears to be identical. When I apply the series to v6.6.83 and compare with upstream I get:
If so, why is the diffstat different? Also why are the hunks arranged differently,
He appears to be using "--diff-algorithm=minimal", while you probably patience or histogram.
Hi, Jan,
I tried --diff-algorithm=minimal/patience/histogram from the upstream commit, they all give the same result as this patch. But Sasha said the upstream diffstat is different, so how does he generate the patch?
Huacai
$ git format-patch -1 --stdout --diff-algorithm=minimal 558bdc45dfb2 | grep -A3 -m1 -- "---"
certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++------------- scripts/sign-file.c | 93 ++++++++++++++++++++++++++------------ 2 files changed, 138 insertions(+), 58 deletions(-)
Should be easy to regenerate with different diff-alg for v4.
Regards, Jan
that's a hint to me that something went wrong and I can't trust the patch at all.
thanks,
greg k-h
On Sun, Mar 30, 2025 at 3:08 PM Huacai Chen chenhuacai@kernel.org wrote:
On Thu, Mar 20, 2025 at 12:53 AM Jan Stancek jstancek@redhat.com wrote:
On Wed, Mar 19, 2025 at 5:26 PM Greg Kroah-Hartman gregkh@linuxfoundation.org wrote:
On Wed, Mar 19, 2025 at 03:44:19PM +0100, Jan Stancek wrote:
On Wed, Mar 19, 2025 at 07:13:13AM -0700, Greg Kroah-Hartman wrote:
On Wed, Mar 19, 2025 at 02:40:31PM +0800, Huacai Chen wrote:
From: Jan Stancek jstancek@redhat.com
commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
ENGINE API has been deprecated since OpenSSL version 3.0 [1]. Distros have started dropping support from headers and in future it will likely disappear also from library.
It has been superseded by the PROVIDER API, so use it instead for OPENSSL MAJOR >= 3.
[1] https://github.com/openssl/openssl/blob/master/README-ENGINES.md
[jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
Signed-off-by: Jan Stancek jstancek@redhat.com Reviewed-by: Jarkko Sakkinen jarkko@kernel.org Tested-by: R Nageswara Sastry rnsastry@linux.ibm.com Reviewed-by: Neal Gompa neal@gompa.dev Signed-off-by: Jarkko Sakkinen jarkko@kernel.org Signed-off-by: Huacai Chen chenhuacai@loongson.cn
certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++------------- scripts/sign-file.c | 93 ++++++++++++++++++++++++++------------ 2 files changed, 138 insertions(+), 58 deletions(-)
This seems to differ from what is upstream by a lot, please document what you changed from it and why when you resend this series again.
Hunks are arranged differently, but code appears to be identical. When I apply the series to v6.6.83 and compare with upstream I get:
If so, why is the diffstat different? Also why are the hunks arranged differently,
He appears to be using "--diff-algorithm=minimal", while you probably patience or histogram.
Hi, Jan,
I tried --diff-algorithm=minimal/patience/histogram from the upstream commit, they all give the same result as this patch. But Sasha said the upstream diffstat is different, so how does he generate the patch?
Hi,
I don't know how he generates the patch, but with git-2.43 I get noticable different patches and diff stats for minimal vs. histogram. "minimal" one matches your v3 patch. I don't know details of Greg's workflow, just offered one possible explanation that would allow this series to progress further.
$ git format-patch -1 --stdout --diff-algorithm=minimal 558bdc45dfb2 | grep -A3 -m1 -- "---" --- certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++------------- scripts/sign-file.c | 93 ++++++++++++++++++++++++++------------ 2 files changed, 138 insertions(+), 58 deletions(-)
$ git format-patch -1 --stdout --diff-algorithm=histogram 558bdc45dfb2 | grep -A3 -m1 -- "---" --- certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++------------- scripts/sign-file.c | 95 +++++++++++++++++++++++++++------------ 2 files changed, 139 insertions(+), 59 deletions(-)
Regards, Jan
Huacai
$ git format-patch -1 --stdout --diff-algorithm=minimal 558bdc45dfb2 | grep -A3 -m1 -- "---"
certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++------------- scripts/sign-file.c | 93 ++++++++++++++++++++++++++------------ 2 files changed, 138 insertions(+), 58 deletions(-)
Should be easy to regenerate with different diff-alg for v4.
Regards, Jan
that's a hint to me that something went wrong and I can't trust the patch at all.
thanks,
greg k-h
linux-stable-mirror@lists.linaro.org