mirror of
https://github.com/LiBwrt/nss-packages.git
synced 2025-12-16 17:15:09 +00:00
nss-cfi: fix issue with kernel reporting duplicate driver
Kernel 6.1+ expects the driver to be registered with a unique name. Signed-off-by: Sean Khan <datapronix@protonmail.com>
This commit is contained in:
parent
c5fd1f6430
commit
51300e4df4
@ -18,8 +18,8 @@
|
||||
{
|
||||
struct ahash_request *req = app_data;
|
||||
- struct nss_cryptoapi_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
|
||||
+ struct crypto_ahash *ahash = crypto_ahash_reqtfm(req);
|
||||
+ struct nss_cryptoapi_ctx *ctx = crypto_ahash_ctx(ahash);
|
||||
+ struct crypto_ahash *ahash = crypto_ahash_reqtfm(req);
|
||||
+ struct nss_cryptoapi_ctx *ctx = crypto_ahash_ctx(ahash);
|
||||
struct nss_cryptoapi_req_ctx *rctx = ahash_request_ctx(req);
|
||||
+
|
||||
uint8_t *hw_hmac;
|
||||
@ -30,7 +30,7 @@
|
||||
*/
|
||||
nss_cryptoapi_ref_dec(ctx);
|
||||
- req->base.complete(&req->base, error);
|
||||
+ ahash_request_complete(req, error);
|
||||
+ ahash_request_complete(req, error);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -52,8 +52,8 @@
|
||||
{
|
||||
struct skcipher_request *req = app_data;
|
||||
- struct nss_cryptoapi_ctx *ctx = skcipher_request_ctx(req);
|
||||
+ struct crypto_skcipher *cipher = crypto_skcipher_reqtfm(req);
|
||||
+ struct nss_cryptoapi_ctx *ctx = crypto_skcipher_ctx(cipher);
|
||||
+ struct crypto_skcipher *cipher = crypto_skcipher_reqtfm(req);
|
||||
+ struct nss_cryptoapi_ctx *ctx = crypto_skcipher_ctx(cipher);
|
||||
int error;
|
||||
|
||||
BUG_ON(!ch);
|
||||
@ -66,7 +66,7 @@
|
||||
*/
|
||||
nss_cryptoapi_ref_dec(ctx);
|
||||
- req->base.complete(&req->base, error);
|
||||
+ skcipher_request_complete(req, error);
|
||||
+ skcipher_request_complete(req, error);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
126
qca-nss-cfi/patches/0008-cryptoapi-v2.0-fix-dupe-driver.patch
Normal file
126
qca-nss-cfi/patches/0008-cryptoapi-v2.0-fix-dupe-driver.patch
Normal file
@ -0,0 +1,126 @@
|
||||
--- a/cryptoapi/v2.0/nss_cryptoapi.c
|
||||
+++ b/cryptoapi/v2.0/nss_cryptoapi.c
|
||||
@@ -896,7 +896,7 @@ struct aead_alg cryptoapi_aead_algs[] =
|
||||
*/
|
||||
.base = {
|
||||
.cra_name = "echainiv(authenc(hmac(sha1),cbc(aes)))",
|
||||
- .cra_driver_name = "nss-hmac-sha1-cbc-aes",
|
||||
+ .cra_driver_name = "nss-hmac-sha1-cbc-aes-echainiv",
|
||||
.cra_priority = 10000,
|
||||
.cra_flags = CRYPTO_ALG_ASYNC,
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
@@ -961,7 +961,7 @@ struct aead_alg cryptoapi_aead_algs[] =
|
||||
*/
|
||||
.base = {
|
||||
.cra_name = "echainiv(authenc(hmac(sha256),cbc(aes)))",
|
||||
- .cra_driver_name = "nss-hmac-sha256-cbc-aes",
|
||||
+ .cra_driver_name = "nss-hmac-sha256-cbc-aes-echainiv",
|
||||
.cra_priority = 10000,
|
||||
.cra_flags = CRYPTO_ALG_ASYNC,
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
@@ -1070,7 +1070,7 @@ struct aead_alg cryptoapi_aead_algs[] =
|
||||
*/
|
||||
.base = {
|
||||
.cra_name = "echainiv(authenc(hmac(sha384),cbc(aes)))",
|
||||
- .cra_driver_name = "nss-hmac-sha384-cbc-aes",
|
||||
+ .cra_driver_name = "nss-hmac-sha384-cbc-aes-echainiv",
|
||||
.cra_priority = 10000,
|
||||
.cra_flags = CRYPTO_ALG_ASYNC,
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
@@ -1093,7 +1093,7 @@ struct aead_alg cryptoapi_aead_algs[] =
|
||||
*/
|
||||
.base = {
|
||||
.cra_name = "echainiv(authenc(hmac(sha512),cbc(aes)))",
|
||||
- .cra_driver_name = "nss-hmac-sha512-cbc-aes",
|
||||
+ .cra_driver_name = "nss-hmac-sha512-cbc-aes-echainiv",
|
||||
.cra_priority = 10000,
|
||||
.cra_flags = CRYPTO_ALG_ASYNC,
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
@@ -1116,7 +1116,7 @@ struct aead_alg cryptoapi_aead_algs[] =
|
||||
*/
|
||||
.base = {
|
||||
.cra_name = "echainiv(authenc(hmac(sha1),cbc(des3_ede)))",
|
||||
- .cra_driver_name = "nss-hmac-sha1-cbc-3des",
|
||||
+ .cra_driver_name = "nss-hmac-sha1-cbc-3des-echainiv",
|
||||
.cra_priority = 300,
|
||||
.cra_flags = CRYPTO_ALG_ASYNC,
|
||||
.cra_blocksize = DES3_EDE_BLOCK_SIZE,
|
||||
@@ -1139,7 +1139,7 @@ struct aead_alg cryptoapi_aead_algs[] =
|
||||
*/
|
||||
.base = {
|
||||
.cra_name = "echainiv(authenc(hmac(sha256),cbc(des3_ede)))",
|
||||
- .cra_driver_name = "nss-hmac-sha256-cbc-3des",
|
||||
+ .cra_driver_name = "nss-hmac-sha256-cbc-3des-echainiv",
|
||||
.cra_priority = 300,
|
||||
.cra_flags = CRYPTO_ALG_ASYNC,
|
||||
.cra_blocksize = DES3_EDE_BLOCK_SIZE,
|
||||
@@ -1160,7 +1160,7 @@ struct aead_alg cryptoapi_aead_algs[] =
|
||||
{
|
||||
.base = {
|
||||
.cra_name = "authenc(hmac(sha1),cbc(aes))",
|
||||
- .cra_driver_name = "nss-hmac-sha1-cbc-aes",
|
||||
+ .cra_driver_name = "nss-hmac-sha1-cbc-aes-auth",
|
||||
.cra_priority = 10000,
|
||||
.cra_flags = CRYPTO_ALG_ASYNC,
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
@@ -1183,7 +1183,7 @@ struct aead_alg cryptoapi_aead_algs[] =
|
||||
*/
|
||||
.base = {
|
||||
.cra_name = "authenc(hmac(sha256),cbc(aes))",
|
||||
- .cra_driver_name = "nss-hmac-sha256-cbc-aes",
|
||||
+ .cra_driver_name = "nss-hmac-sha256-cbc-aes-auth",
|
||||
.cra_priority = 10000,
|
||||
.cra_flags = CRYPTO_ALG_ASYNC,
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
@@ -1206,7 +1206,7 @@ struct aead_alg cryptoapi_aead_algs[] =
|
||||
*/
|
||||
.base = {
|
||||
.cra_name = "authenc(hmac(sha384),cbc(aes))",
|
||||
- .cra_driver_name = "nss-hmac-sha384-cbc-aes",
|
||||
+ .cra_driver_name = "nss-hmac-sha384-cbc-aes-auth",
|
||||
.cra_priority = 10000,
|
||||
.cra_flags = CRYPTO_ALG_ASYNC,
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
@@ -1298,7 +1298,7 @@ struct aead_alg cryptoapi_aead_algs[] =
|
||||
*/
|
||||
.base = {
|
||||
.cra_name = "rfc4106(gcm(aes))",
|
||||
- .cra_driver_name = "nss-rfc4106-gcm",
|
||||
+ .cra_driver_name = "nss-rfc4106-gcm-aes128",
|
||||
.cra_priority = 10000,
|
||||
.cra_flags = CRYPTO_ALG_ASYNC,
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
@@ -1321,7 +1321,7 @@ struct aead_alg cryptoapi_aead_algs[] =
|
||||
*/
|
||||
.base = {
|
||||
.cra_name = "seqiv(rfc4106(gcm(aes)))",
|
||||
- .cra_driver_name = "nss-rfc4106-gcm",
|
||||
+ .cra_driver_name = "nss-seqiv-rfc4106-gcm",
|
||||
.cra_priority = 10000,
|
||||
.cra_flags = CRYPTO_ALG_ASYNC,
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
@@ -2166,6 +2166,7 @@ static const struct file_operations ctx_
|
||||
void nss_cryptoapi_add_ctx2debugfs(struct nss_cryptoapi_ctx *ctx)
|
||||
{
|
||||
char buf[NSS_CRYPTOAPI_DEBUGFS_MAX_NAME] = {0};
|
||||
+ struct dentry *existing;
|
||||
|
||||
if (!g_cryptoapi.root) {
|
||||
nss_cfi_err("%px: DebugFS root directory missing(%px)\n", &g_cryptoapi, ctx);
|
||||
@@ -2173,6 +2174,16 @@ void nss_cryptoapi_add_ctx2debugfs(struc
|
||||
}
|
||||
|
||||
snprintf(buf, sizeof(buf), "ctx%d", ctx->sid);
|
||||
+
|
||||
+ /* Check if the directory already exists */
|
||||
+ existing = debugfs_lookup(buf, g_cryptoapi.root);
|
||||
+ if (existing) {
|
||||
+ /* Directory already exists, store it and return */
|
||||
+ ctx->dentry = existing;
|
||||
+ nss_cfi_info("%px: Context debugfs entry already exists for ctx%d\n", ctx, ctx->sid);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
ctx->dentry = debugfs_create_dir(buf, g_cryptoapi.root);
|
||||
if (!ctx->dentry) {
|
||||
nss_cfi_err("%px: Unable to create context debugfs entry", ctx);
|
||||
Loading…
Reference in New Issue
Block a user