From: Greg Kroah-Hartman Date: Wed, 13 May 2026 15:31:00 +0000 (+0200) Subject: fix up a crypto patch in 6.12 X-Git-Tag: v6.12.88~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e66469b1dc0cf5bd6d3eb52f0ec6222f762c8cb5;p=thirdparty%2Fkernel%2Fstable-queue.git fix up a crypto patch in 6.12 --- diff --git a/queue-6.12/crypto-nx-fix-bounce-buffer-leaks-in-nx842_crypto_-alloc-free-_ctx.patch b/queue-6.12/crypto-nx-fix-bounce-buffer-leaks-in-nx842_crypto_-alloc-free-_ctx.patch index 4ef96117b5..67a407dad3 100644 --- a/queue-6.12/crypto-nx-fix-bounce-buffer-leaks-in-nx842_crypto_-alloc-free-_ctx.patch +++ b/queue-6.12/crypto-nx-fix-bounce-buffer-leaks-in-nx842_crypto_-alloc-free-_ctx.patch @@ -27,7 +27,7 @@ Signed-off-by: Greg Kroah-Hartman --- a/drivers/crypto/nx/nx-842.c +++ b/drivers/crypto/nx/nx-842.c -@@ -116,8 +116,8 @@ void *nx842_crypto_alloc_ctx(struct nx84 +@@ -112,8 +112,8 @@ int nx842_crypto_init(struct crypto_tfm ctx->dbounce = (u8 *)__get_free_pages(GFP_KERNEL, BOUNCE_BUFFER_ORDER); if (!ctx->wmem || !ctx->sbounce || !ctx->dbounce) { kfree(ctx->wmem); @@ -35,11 +35,11 @@ Signed-off-by: Greg Kroah-Hartman - free_page((unsigned long)ctx->dbounce); + free_pages((unsigned long)ctx->sbounce, BOUNCE_BUFFER_ORDER); + free_pages((unsigned long)ctx->dbounce, BOUNCE_BUFFER_ORDER); - kfree(ctx); - return ERR_PTR(-ENOMEM); + return -ENOMEM; } -@@ -131,8 +131,8 @@ void nx842_crypto_free_ctx(void *p) - struct nx842_crypto_ctx *ctx = p; + +@@ -126,8 +126,8 @@ void nx842_crypto_exit(struct crypto_tfm + struct nx842_crypto_ctx *ctx = crypto_tfm_ctx(tfm); kfree(ctx->wmem); - free_page((unsigned long)ctx->sbounce); @@ -47,5 +47,5 @@ Signed-off-by: Greg Kroah-Hartman + free_pages((unsigned long)ctx->sbounce, BOUNCE_BUFFER_ORDER); + free_pages((unsigned long)ctx->dbounce, BOUNCE_BUFFER_ORDER); } - EXPORT_SYMBOL_GPL(nx842_crypto_free_ctx); + EXPORT_SYMBOL_GPL(nx842_crypto_exit); diff --git a/queue-6.12/crypto-nx-migrate-to-scomp-api.patch b/queue-6.12/crypto-nx-migrate-to-scomp-api.patch deleted file mode 100644 index 5e3ce53b53..0000000000 --- a/queue-6.12/crypto-nx-migrate-to-scomp-api.patch +++ /dev/null @@ -1,287 +0,0 @@ -From stable+bounces-244893-greg=kroah.com@vger.kernel.org Sat May 9 05:16:46 2026 -From: Sasha Levin -Date: Fri, 8 May 2026 23:16:38 -0400 -Subject: crypto: nx - Migrate to scomp API -To: stable@vger.kernel.org -Cc: Ard Biesheuvel , Herbert Xu , Sasha Levin -Message-ID: <20260509031639.3054679-1-sashal@kernel.org> - -From: Ard Biesheuvel - -[ Upstream commit 980b5705f4e73f567e405cd18337cc32fd51cf79 ] - -The only remaining user of 842 compression has been migrated to the -acomp compression API, and so the NX hardware driver has to follow suit, -given that no users of the obsolete 'comp' API remain, and it is going -to be removed. - -So migrate the NX driver code to scomp. These will be wrapped and -exposed as acomp implementation via the crypto subsystem's -acomp-to-scomp adaptation layer. - -Signed-off-by: Ard Biesheuvel -Signed-off-by: Herbert Xu -Stable-dep-of: adb3faf2db1a ("crypto: nx - fix bounce buffer leaks in nx842_crypto_{alloc,free}_ctx") -Signed-off-by: Sasha Levin -Signed-off-by: Greg Kroah-Hartman ---- - drivers/crypto/nx/nx-842.c | 33 +++++++++++++++++++-------------- - drivers/crypto/nx/nx-842.h | 15 ++++++++------- - drivers/crypto/nx/nx-common-powernv.c | 31 +++++++++++++++---------------- - drivers/crypto/nx/nx-common-pseries.c | 33 ++++++++++++++++----------------- - 4 files changed, 58 insertions(+), 54 deletions(-) - ---- a/drivers/crypto/nx/nx-842.c -+++ b/drivers/crypto/nx/nx-842.c -@@ -101,9 +101,13 @@ static int update_param(struct nx842_cry - return 0; - } - --int nx842_crypto_init(struct crypto_tfm *tfm, struct nx842_driver *driver) -+void *nx842_crypto_alloc_ctx(struct nx842_driver *driver) - { -- struct nx842_crypto_ctx *ctx = crypto_tfm_ctx(tfm); -+ struct nx842_crypto_ctx *ctx; -+ -+ ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); -+ if (!ctx) -+ return ERR_PTR(-ENOMEM); - - spin_lock_init(&ctx->lock); - ctx->driver = driver; -@@ -114,22 +118,23 @@ int nx842_crypto_init(struct crypto_tfm - kfree(ctx->wmem); - free_page((unsigned long)ctx->sbounce); - free_page((unsigned long)ctx->dbounce); -- return -ENOMEM; -+ kfree(ctx); -+ return ERR_PTR(-ENOMEM); - } - -- return 0; -+ return ctx; - } --EXPORT_SYMBOL_GPL(nx842_crypto_init); -+EXPORT_SYMBOL_GPL(nx842_crypto_alloc_ctx); - --void nx842_crypto_exit(struct crypto_tfm *tfm) -+void nx842_crypto_free_ctx(void *p) - { -- struct nx842_crypto_ctx *ctx = crypto_tfm_ctx(tfm); -+ struct nx842_crypto_ctx *ctx = p; - - kfree(ctx->wmem); - free_page((unsigned long)ctx->sbounce); - free_page((unsigned long)ctx->dbounce); - } --EXPORT_SYMBOL_GPL(nx842_crypto_exit); -+EXPORT_SYMBOL_GPL(nx842_crypto_free_ctx); - - static void check_constraints(struct nx842_constraints *c) - { -@@ -246,11 +251,11 @@ nospc: - return update_param(p, slen, dskip + dlen); - } - --int nx842_crypto_compress(struct crypto_tfm *tfm, -+int nx842_crypto_compress(struct crypto_scomp *tfm, - const u8 *src, unsigned int slen, -- u8 *dst, unsigned int *dlen) -+ u8 *dst, unsigned int *dlen, void *pctx) - { -- struct nx842_crypto_ctx *ctx = crypto_tfm_ctx(tfm); -+ struct nx842_crypto_ctx *ctx = pctx; - struct nx842_crypto_header *hdr = - container_of(&ctx->header, - struct nx842_crypto_header, hdr); -@@ -431,11 +436,11 @@ usesw: - return update_param(p, slen + padding, dlen); - } - --int nx842_crypto_decompress(struct crypto_tfm *tfm, -+int nx842_crypto_decompress(struct crypto_scomp *tfm, - const u8 *src, unsigned int slen, -- u8 *dst, unsigned int *dlen) -+ u8 *dst, unsigned int *dlen, void *pctx) - { -- struct nx842_crypto_ctx *ctx = crypto_tfm_ctx(tfm); -+ struct nx842_crypto_ctx *ctx = pctx; - struct nx842_crypto_header *hdr; - struct nx842_crypto_param p; - struct nx842_constraints c = *ctx->driver->constraints; ---- a/drivers/crypto/nx/nx-842.h -+++ b/drivers/crypto/nx/nx-842.h -@@ -3,7 +3,6 @@ - #ifndef __NX_842_H__ - #define __NX_842_H__ - --#include - #include - #include - #include -@@ -101,6 +100,8 @@ - #define LEN_ON_SIZE(pa, size) ((size) - ((pa) & ((size) - 1))) - #define LEN_ON_PAGE(pa) LEN_ON_SIZE(pa, PAGE_SIZE) - -+struct crypto_scomp; -+ - static inline unsigned long nx842_get_pa(void *addr) - { - if (!is_vmalloc_addr(addr)) -@@ -182,13 +183,13 @@ struct nx842_crypto_ctx { - struct nx842_driver *driver; - }; - --int nx842_crypto_init(struct crypto_tfm *tfm, struct nx842_driver *driver); --void nx842_crypto_exit(struct crypto_tfm *tfm); --int nx842_crypto_compress(struct crypto_tfm *tfm, -+void *nx842_crypto_alloc_ctx(struct nx842_driver *driver); -+void nx842_crypto_free_ctx(void *ctx); -+int nx842_crypto_compress(struct crypto_scomp *tfm, - const u8 *src, unsigned int slen, -- u8 *dst, unsigned int *dlen); --int nx842_crypto_decompress(struct crypto_tfm *tfm, -+ u8 *dst, unsigned int *dlen, void *ctx); -+int nx842_crypto_decompress(struct crypto_scomp *tfm, - const u8 *src, unsigned int slen, -- u8 *dst, unsigned int *dlen); -+ u8 *dst, unsigned int *dlen, void *ctx); - - #endif /* __NX_842_H__ */ ---- a/drivers/crypto/nx/nx-common-powernv.c -+++ b/drivers/crypto/nx/nx-common-powernv.c -@@ -9,6 +9,7 @@ - - #include "nx-842.h" - -+#include - #include - - #include -@@ -1031,23 +1032,21 @@ static struct nx842_driver nx842_powernv - .decompress = nx842_powernv_decompress, - }; - --static int nx842_powernv_crypto_init(struct crypto_tfm *tfm) -+static void *nx842_powernv_crypto_alloc_ctx(void) - { -- return nx842_crypto_init(tfm, &nx842_powernv_driver); -+ return nx842_crypto_alloc_ctx(&nx842_powernv_driver); - } - --static struct crypto_alg nx842_powernv_alg = { -- .cra_name = "842", -- .cra_driver_name = "842-nx", -- .cra_priority = 300, -- .cra_flags = CRYPTO_ALG_TYPE_COMPRESS, -- .cra_ctxsize = sizeof(struct nx842_crypto_ctx), -- .cra_module = THIS_MODULE, -- .cra_init = nx842_powernv_crypto_init, -- .cra_exit = nx842_crypto_exit, -- .cra_u = { .compress = { -- .coa_compress = nx842_crypto_compress, -- .coa_decompress = nx842_crypto_decompress } } -+static struct scomp_alg nx842_powernv_alg = { -+ .base.cra_name = "842", -+ .base.cra_driver_name = "842-nx", -+ .base.cra_priority = 300, -+ .base.cra_module = THIS_MODULE, -+ -+ .alloc_ctx = nx842_powernv_crypto_alloc_ctx, -+ .free_ctx = nx842_crypto_free_ctx, -+ .compress = nx842_crypto_compress, -+ .decompress = nx842_crypto_decompress, - }; - - static __init int nx_compress_powernv_init(void) -@@ -1107,7 +1106,7 @@ static __init int nx_compress_powernv_in - nx842_powernv_exec = nx842_exec_vas; - } - -- ret = crypto_register_alg(&nx842_powernv_alg); -+ ret = crypto_register_scomp(&nx842_powernv_alg); - if (ret) { - nx_delete_coprocs(); - return ret; -@@ -1128,7 +1127,7 @@ static void __exit nx_compress_powernv_e - if (!nx842_ct) - vas_unregister_api_powernv(); - -- crypto_unregister_alg(&nx842_powernv_alg); -+ crypto_unregister_scomp(&nx842_powernv_alg); - - nx_delete_coprocs(); - } ---- a/drivers/crypto/nx/nx-common-pseries.c -+++ b/drivers/crypto/nx/nx-common-pseries.c -@@ -11,6 +11,7 @@ - #include - #include - #include -+#include - - #include "nx-842.h" - #include "nx_csbcpb.h" /* struct nx_csbcpb */ -@@ -1008,23 +1009,21 @@ static struct nx842_driver nx842_pseries - .decompress = nx842_pseries_decompress, - }; - --static int nx842_pseries_crypto_init(struct crypto_tfm *tfm) -+static void *nx842_pseries_crypto_alloc_ctx(void) - { -- return nx842_crypto_init(tfm, &nx842_pseries_driver); -+ return nx842_crypto_alloc_ctx(&nx842_pseries_driver); - } - --static struct crypto_alg nx842_pseries_alg = { -- .cra_name = "842", -- .cra_driver_name = "842-nx", -- .cra_priority = 300, -- .cra_flags = CRYPTO_ALG_TYPE_COMPRESS, -- .cra_ctxsize = sizeof(struct nx842_crypto_ctx), -- .cra_module = THIS_MODULE, -- .cra_init = nx842_pseries_crypto_init, -- .cra_exit = nx842_crypto_exit, -- .cra_u = { .compress = { -- .coa_compress = nx842_crypto_compress, -- .coa_decompress = nx842_crypto_decompress } } -+static struct scomp_alg nx842_pseries_alg = { -+ .base.cra_name = "842", -+ .base.cra_driver_name = "842-nx", -+ .base.cra_priority = 300, -+ .base.cra_module = THIS_MODULE, -+ -+ .alloc_ctx = nx842_pseries_crypto_alloc_ctx, -+ .free_ctx = nx842_crypto_free_ctx, -+ .compress = nx842_crypto_compress, -+ .decompress = nx842_crypto_decompress, - }; - - static int nx842_probe(struct vio_dev *viodev, -@@ -1072,7 +1071,7 @@ static int nx842_probe(struct vio_dev *v - if (ret) - goto error; - -- ret = crypto_register_alg(&nx842_pseries_alg); -+ ret = crypto_register_scomp(&nx842_pseries_alg); - if (ret) { - dev_err(&viodev->dev, "could not register comp alg: %d\n", ret); - goto error; -@@ -1120,7 +1119,7 @@ static void nx842_remove(struct vio_dev - if (caps_feat) - sysfs_remove_group(&viodev->dev.kobj, &nxcop_caps_attr_group); - -- crypto_unregister_alg(&nx842_pseries_alg); -+ crypto_unregister_scomp(&nx842_pseries_alg); - - spin_lock_irqsave(&devdata_mutex, flags); - old_devdata = rcu_dereference_check(devdata, -@@ -1252,7 +1251,7 @@ static void __exit nx842_pseries_exit(vo - - vas_unregister_api_pseries(); - -- crypto_unregister_alg(&nx842_pseries_alg); -+ crypto_unregister_scomp(&nx842_pseries_alg); - - spin_lock_irqsave(&devdata_mutex, flags); - old_devdata = rcu_dereference_check(devdata, diff --git a/queue-6.12/series b/queue-6.12/series index 3517fc9f48..95b3ba310c 100644 --- a/queue-6.12/series +++ b/queue-6.12/series @@ -185,7 +185,6 @@ udf-fix-partition-descriptor-append-bookkeeping.patch mtd-spinand-winbond-declare-the-qe-bit-on-w25nxxjw.patch hfsplus-fix-uninit-value-by-validating-catalog-record-size.patch hfsplus-fix-held-lock-freed-on-hfsplus_fill_super.patch -crypto-nx-migrate-to-scomp-api.patch crypto-nx-fix-bounce-buffer-leaks-in-nx842_crypto_-alloc-free-_ctx.patch erofs-move-in-out-pages-into-struct-z_erofs_decompress_req.patch erofs-tidy-up-z_erofs_lz4_handle_overlap.patch