libwd: update to 2.6.0

use openssl 1.1

Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
This commit is contained in:
Zhangfei Gao 2024-01-17 09:24:04 +00:00
parent bd495bc48d
commit 783b00bebc
12 changed files with 636 additions and 227 deletions

View File

@ -1,223 +0,0 @@
From 566d703c6739cf3a854cfd6321d1b367aacf5ff4 Mon Sep 17 00:00:00 2001
From: 15859157387 <977713017@qq.com>
Date: Tue, 24 Oct 2023 14:50:37 +0800
Subject: [PATCH] support clang compile
---
test/wd_mempool_test.c | 4 +---
v1/wd_rsa.c | 18 ++++++++++--------
wd_mempool.c | 7 +------
wd_rsa.c | 22 ++++++++++++----------
4 files changed, 24 insertions(+), 27 deletions(-)
diff --git a/test/wd_mempool_test.c b/test/wd_mempool_test.c
index ad04636..7d18752 100644
--- a/test/wd_mempool_test.c
+++ b/test/wd_mempool_test.c
@@ -644,7 +644,7 @@ static void *sva_sec_cipher_async(void *arg)
int cnt = g_times;
handle_t h_sess;
int ret;
- int j, i;
+ int j;
setup->alg = WD_CIPHER_AES;
setup->mode = WD_CIPHER_CBC;
@@ -658,7 +658,6 @@ static void *sva_sec_cipher_async(void *arg)
SEC_TST_PRT("test sec cipher set key is failed!\n");
goto out;;
}
- i = cnt;
/* run task */
do {
try_do_again:
@@ -666,7 +665,6 @@ try_do_again:
req->src = pdata->bd_pool->bds[j].src;
req->dst = pdata->bd_pool->bds[j].dst;
ret = wd_do_cipher_async(h_sess, req);
- i--;
if (ret == -EBUSY) { // busy
usleep(100);
goto try_do_again;
diff --git a/v1/wd_rsa.c b/v1/wd_rsa.c
index 61de3cc..49249b4 100644
--- a/v1/wd_rsa.c
+++ b/v1/wd_rsa.c
@@ -105,8 +105,10 @@ struct wcrypto_rsa_prikey2 {
};
struct wcrypto_rsa_prikey {
- struct wcrypto_rsa_prikey1 pkey1;
- struct wcrypto_rsa_prikey2 pkey2;
+ union {
+ struct wcrypto_rsa_prikey1 pkey1;
+ struct wcrypto_rsa_prikey2 pkey2;
+ } pkey;
};
/* RSA CRT private key parameter types */
@@ -444,7 +446,7 @@ static int create_ctx_key(struct wcrypto_rsa_ctx_setup *setup,
WD_ERR("alloc prikey2 fail!\n");
return -WD_ENOMEM;
}
- pkey2 = &ctx->prikey->pkey2;
+ pkey2 = &ctx->prikey->pkey.pkey2;
memset(ctx->prikey, 0, len);
init_pkey2(pkey2, ctx->key_size);
} else {
@@ -459,7 +461,7 @@ static int create_ctx_key(struct wcrypto_rsa_ctx_setup *setup,
WD_ERR("alloc prikey1 fail!\n");
return -WD_ENOMEM;
}
- pkey1 = &ctx->prikey->pkey1;
+ pkey1 = &ctx->prikey->pkey.pkey1;
memset(ctx->prikey, 0, len);
init_pkey1(pkey1, ctx->key_size);
}
@@ -713,7 +715,7 @@ int wcrypto_set_rsa_prikey_params(void *ctx, struct wd_dtb *d, struct wd_dtb *n)
WD_ERR("ctx err in set rsa private key1!\n");
return -WD_EINVAL;
}
- pkey1 = &c->prikey->pkey1;
+ pkey1 = &c->prikey->pkey.pkey1;
if (d) {
if (d->dsize > pkey1->key_size || !d->data) {
WD_ERR("d err in set rsa private key1!\n");
@@ -747,7 +749,7 @@ void wcrypto_get_rsa_prikey_params(struct wcrypto_rsa_prikey *pvk, struct wd_dtb
return;
}
- pkey1 = &pvk->pkey1;
+ pkey1 = &pvk->pkey.pkey1;
if (d)
*d = &pkey1->d;
@@ -819,7 +821,7 @@ int wcrypto_set_rsa_crt_prikey_params(void *ctx, struct wd_dtb *dq,
return ret;
}
- pkey2 = &c->prikey->pkey2;
+ pkey2 = &c->prikey->pkey.pkey2;
ret = rsa_prikey2_param_set(pkey2, dq, WD_CRT_PRIKEY_DQ);
if (ret) {
WD_ERR("dq err in set rsa private key2!\n");
@@ -865,7 +867,7 @@ void wcrypto_get_rsa_crt_prikey_params(struct wcrypto_rsa_prikey *pvk,
return;
}
- pkey2 = &pvk->pkey2;
+ pkey2 = &pvk->pkey.pkey2;
if (dq)
*dq = &pkey2->dq;
diff --git a/wd_mempool.c b/wd_mempool.c
index cb8c80b..864ba13 100644
--- a/wd_mempool.c
+++ b/wd_mempool.c
@@ -71,7 +71,7 @@ static inline int wd_atomic_test_add(struct wd_ref *ref, int a, int u)
c = __atomic_load_n(&ref->ref, __ATOMIC_RELAXED);
if (c == u)
break;
- } while (! __atomic_compare_exchange_n(&ref->ref, &c, c + a, true,
+ } while (! __atomic_compare_exchange_n(&ref->ref, (__u32 *)&c, c + a, true,
__ATOMIC_RELAXED, __ATOMIC_RELAXED));
return c;
@@ -299,11 +299,6 @@ static int test_bit(struct bitmap *bm, unsigned int nr)
return !(*p & mask);
}
-inline static size_t wd_get_page_size(void)
-{
- return sysconf(_SC_PAGESIZE);
-}
-
void *wd_block_alloc(handle_t blkpool)
{
struct blkpool *bp = (struct blkpool*)blkpool;
diff --git a/wd_rsa.c b/wd_rsa.c
index 4bd1d30..8301d57 100644
--- a/wd_rsa.c
+++ b/wd_rsa.c
@@ -48,8 +48,10 @@ struct wd_rsa_prikey2 {
};
struct wd_rsa_prikey {
- struct wd_rsa_prikey1 pkey1;
- struct wd_rsa_prikey2 pkey2;
+ union {
+ struct wd_rsa_prikey1 pkey1;
+ struct wd_rsa_prikey2 pkey2;
+ } pkey;
};
/* RSA private key parameter types */
@@ -844,7 +846,7 @@ static int create_sess_key(struct wd_rsa_sess_setup *setup,
WD_ERR("failed to alloc sess prikey2!\n");
return -WD_ENOMEM;
}
- pkey2 = &sess->prikey->pkey2;
+ pkey2 = &sess->prikey->pkey.pkey2;
memset(sess->prikey, 0, len);
init_pkey2(pkey2, sess->key_size);
} else {
@@ -855,7 +857,7 @@ static int create_sess_key(struct wd_rsa_sess_setup *setup,
WD_ERR("failed to alloc sess prikey1!\n");
return -WD_ENOMEM;
}
- pkey1 = &sess->prikey->pkey1;
+ pkey1 = &sess->prikey->pkey.pkey1;
memset(sess->prikey, 0, len);
init_pkey1(pkey1, sess->key_size);
}
@@ -886,9 +888,9 @@ static void del_sess_key(struct wd_rsa_sess *sess)
}
if (sess->setup.is_crt)
- wd_memset_zero(prk->pkey2.data, CRT_PARAMS_SZ(sess->key_size));
+ wd_memset_zero(prk->pkey.pkey2.data, CRT_PARAMS_SZ(sess->key_size));
else
- wd_memset_zero(prk->pkey1.data, GEN_PARAMS_SZ(sess->key_size));
+ wd_memset_zero(prk->pkey.pkey1.data, GEN_PARAMS_SZ(sess->key_size));
free(sess->prikey);
free(sess->pubkey);
}
@@ -1041,7 +1043,7 @@ int wd_rsa_set_prikey_params(handle_t sess, struct wd_dtb *d, struct wd_dtb *n)
WD_ERR("invalid: sess err in set rsa private key1!\n");
return -WD_EINVAL;
}
- pkey1 = &c->prikey->pkey1;
+ pkey1 = &c->prikey->pkey.pkey1;
if (d) {
if (!d->dsize || !d->data || d->dsize > pkey1->key_size) {
WD_ERR("invalid: d err in set rsa private key1!\n");
@@ -1076,7 +1078,7 @@ void wd_rsa_get_prikey_params(struct wd_rsa_prikey *pvk, struct wd_dtb **d,
return;
}
- pkey1 = &pvk->pkey1;
+ pkey1 = &pvk->pkey.pkey1;
if (d)
*d = &pkey1->d;
@@ -1148,7 +1150,7 @@ int wd_rsa_set_crt_prikey_params(handle_t sess, struct wd_dtb *dq,
return ret;
}
- pkey2 = &c->prikey->pkey2;
+ pkey2 = &c->prikey->pkey.pkey2;
ret = rsa_prikey2_param_set(pkey2, dq, WD_CRT_PRIKEY_DQ);
if (ret) {
WD_ERR("failed to set dq for rsa private key2!\n");
@@ -1194,7 +1196,7 @@ void wd_rsa_get_crt_prikey_params(struct wd_rsa_prikey *pvk,
return;
}
- pkey2 = &pvk->pkey2;
+ pkey2 = &pvk->pkey.pkey2;
if (dq)
*dq = &pkey2->dq;
--
2.27.0

View File

@ -0,0 +1,39 @@
From 7ef31a9e64706d8312f7137b771c47e1658d4f6d Mon Sep 17 00:00:00 2001
From: Zhangfei Gao <zhangfei.gao@linaro.org>
Date: Wed, 10 Jan 2024 10:24:19 +0000
Subject: [PATCH 1/8] uadk: fix build issue of pthread_atfork
In ubuntu 16.04 and 18.04, build uadk fail
log:
/bin/bash ../libtool --tag=CC --mode=link aarch64-linux-gnu-gcc -Wall -O0 -Werror -fno-strict-aliasing -I../include -I.. -g -O2 -Wl,-rpath,'/usr/local/lib' -pthread -o wd_mempool_test wd_mempool_test.o -L../.libs -lwd -ldl -lwd_crypto -lnuma
libtool: link: aarch64-linux-gnu-gcc -Wall -O0 -Werror -fno-strict-aliasing -I../include -I.. -g -O2 -Wl,-rpath -Wl,/usr/local/lib -pthread -o .libs/wd_mempool_test wd_mempool_test.o -L../.libs /mnt/uadk/.libs/libwd.so -ldl /mnt/uadk/.libs/libwd_crypto.so -lnuma -lpthread
/usr/bin/ld: .libs/wd_mempool_test: hidden symbol `pthread_atfork' in /usr/lib/aarch64-linux-gnu/libpthread_nonshared.a(pthread_atfork.oS) is referenced by DSO
Reason is pthread_atfork in wd_xxx.c, missing -lpthread.
Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
---
Makefile.am | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index d81e8cc..a369b7e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -114,11 +114,11 @@ libwd_la_LDFLAGS=$(UADK_VERSION) $(UADK_WD_SYMBOL) $(UADK_V1_SYMBOL)
libwd_la_LIBADD= -ldl -lnuma
libwd_comp_la_LIBADD= -lwd -ldl -lnuma
-libwd_comp_la_LDFLAGS=$(UADK_VERSION) $(UADK_COMP_SYMBOL)
+libwd_comp_la_LDFLAGS=$(UADK_VERSION) $(UADK_COMP_SYMBOL) -lpthread
libwd_comp_la_DEPENDENCIES= libwd.la
libwd_crypto_la_LIBADD= -lwd -ldl -lnuma
-libwd_crypto_la_LDFLAGS=$(UADK_VERSION) $(UADK_CRYPTO_SYMBOL)
+libwd_crypto_la_LDFLAGS=$(UADK_VERSION) $(UADK_CRYPTO_SYMBOL) -lpthread
libwd_crypto_la_DEPENDENCIES= libwd.la
libhisi_zip_la_LIBADD= -lwd -ldl -lwd_comp
--
2.25.1

View File

@ -0,0 +1,36 @@
From e50c7b8ab28696c904afa86741a4b6951c90b0b3 Mon Sep 17 00:00:00 2001
From: Zhangfei Gao <zhangfei.gao@linaro.org>
Date: Wed, 10 Jan 2024 13:33:18 +0000
Subject: [PATCH 2/8] uadk: fix static build error
static build fail on both ubuntu and openEuler
/usr/bin/ld: ../.libs/libwd_comp.a(wd_comp.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `stderr@@GLIBC_2.17' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: ../.libs/libwd_comp.a(wd_comp.o)(.text+0x84): unresolvable R_AARCH64_ADR_PREL_PG_HI21 relocation against symbol `stderr@@GLIBC_2.17'
Solved by adding -fPIC
The -fPIC option in GCC stands for "Position Independent Code."
When this option is used, the generated machine code is not dependent
on being located at a specific address in order to work
Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
---
Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile.am b/Makefile.am
index a369b7e..51691cb 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -86,7 +86,7 @@ libhisi_sec_la_SOURCES=drv/hisi_sec.c drv/hisi_qm_udrv.c \
libhisi_hpre_la_SOURCES=drv/hisi_hpre.c drv/hisi_qm_udrv.c \
hisi_qm_udrv.h wd_hpre_drv.h
if WD_STATIC_DRV
-AM_CFLAGS += -DWD_STATIC_DRV
+AM_CFLAGS += -DWD_STATIC_DRV -fPIC
AM_CFLAGS += -DWD_NO_LOG
libwd_la_LIBADD = $(libwd_la_OBJECTS) -ldl -lnuma
--
2.25.1

View File

@ -0,0 +1,70 @@
From 4cd0b3e82205767ac151835e69736c61aca4eda8 Mon Sep 17 00:00:00 2001
From: Qi Tao <taoqi10@huawei.com>
Date: Thu, 18 Jan 2024 21:07:26 +0800
Subject: [PATCH 3/8] uadk: add secure compilation option
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Add PIE, PIC, BIND_NOW, SP, NO Rpath/RunPath, FS,
Ftrapv and Strip compilation options.
PIC-fPIC):
Generate position-Independent-Code and andomly
load dynamic libraries.
PIE(-fPIE -pie):
Generate location-independent executables,which
reduces the probability of fixed address attacks
and buffer overflow attacks.
BIND_NOW(-Wl,-z,relro,-z,now):
GOT table redirects all read-only,which defends
against ret2plt attacks.
SP(-fstack-protector-strong/all):
Determine whether an overflow attack occurs.
Strip(-Wl,-s):
Deleting symbol tables defends against hacker
attacks and reduces the file size.
FS(-D_FORTIFY_SOURCE=2 -O2):
Provides access checks for fixed-size buffers
at compile time and at run time.
Ftrapv(-ftrapv):
Detects integer overflow.
NO Rpath/RunPath(hardcode_into_libs=no):
Eliminates dynamic library search paths,
which defense against attacks by replacing
dynamic libraries with the same name.
Signed-off-by: Qi Tao <taoqi10@huawei.com>
---
Makefile.am | 2 ++
configure.ac | 1 +
2 files changed, 3 insertions(+)
diff --git a/Makefile.am b/Makefile.am
index 51691cb..64cfa44 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,6 +1,8 @@
ACLOCAL_AMFLAGS = -I m4 -I./include
AUTOMAKE_OPTIONS = foreign subdir-objects
AM_CFLAGS=-Wall -Werror -fno-strict-aliasing -I$(top_srcdir)/include
+AM_CFLAGS+=-fPIC -fPIE -pie -fstack-protector-strong -D_FORTIFY_SOURCE=2 \
+ -O2 -ftrapv -Wl,-z,relro,-z,now -Wl,-s
CLEANFILES =
if WITH_LOG_FILE
diff --git a/configure.ac b/configure.ac
index 2692175..b198417 100644
--- a/configure.ac
+++ b/configure.ac
@@ -18,6 +18,7 @@ AM_PROG_AR
AC_PROG_LIBTOOL
AM_PROG_LIBTOOL
LT_INIT
+AC_SUBST([hardcode_into_libs], [no])
AM_PROG_CC_C_O
AC_ARG_ENABLE([debug-log],
--
2.25.1

View File

@ -0,0 +1,153 @@
From 797031c0562786591f9837650c1521573dee356c Mon Sep 17 00:00:00 2001
From: Zhangfei Gao <zhangfei.gao@linaro.org>
Date: Wed, 24 Jan 2024 04:00:50 +0000
Subject: [PATCH 4/8] uadk_tool: fix build error
Fix build errors, like
"overlapping comparisons always evaluate to true",
"used uninitialized" etc.
Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Signed-off-by: 15859157387 <977713017@qq.com>
---
uadk_tool/benchmark/hpre_uadk_benchmark.c | 4 ++--
uadk_tool/benchmark/hpre_wd_benchmark.c | 4 ++--
uadk_tool/benchmark/sec_uadk_benchmark.c | 8 ++++----
uadk_tool/benchmark/sec_wd_benchmark.c | 8 ++++----
uadk_tool/benchmark/uadk_benchmark.c | 12 ------------
uadk_tool/benchmark/uadk_benchmark.h | 1 -
uadk_tool/test/test_sec.c | 1 -
7 files changed, 12 insertions(+), 26 deletions(-)
diff --git a/uadk_tool/benchmark/hpre_uadk_benchmark.c b/uadk_tool/benchmark/hpre_uadk_benchmark.c
index 028e102..0cbbdf2 100644
--- a/uadk_tool/benchmark/hpre_uadk_benchmark.c
+++ b/uadk_tool/benchmark/hpre_uadk_benchmark.c
@@ -2130,7 +2130,7 @@ static void *ecc_uadk_sync_run(void *arg)
memset(&req, 0, sizeof(req));
memset(&setup, 0, sizeof(setup));
- if (subtype != X448_TYPE || subtype != X25519_TYPE) {
+ if (subtype != X448_TYPE && subtype != X25519_TYPE) {
ret = get_ecc_curve(&setup, cid);
if (ret)
return NULL;
@@ -2289,7 +2289,7 @@ static void *ecc_uadk_async_run(void *arg)
memset(&req, 0, sizeof(req));
memset(&setup, 0, sizeof(setup));
- if (subtype != X448_TYPE || subtype != X25519_TYPE) {
+ if (subtype != X448_TYPE && subtype != X25519_TYPE) {
ret = get_ecc_curve(&setup, cid);
if (ret)
return NULL;
diff --git a/uadk_tool/benchmark/hpre_wd_benchmark.c b/uadk_tool/benchmark/hpre_wd_benchmark.c
index 67d57c6..2873ffd 100644
--- a/uadk_tool/benchmark/hpre_wd_benchmark.c
+++ b/uadk_tool/benchmark/hpre_wd_benchmark.c
@@ -2090,7 +2090,7 @@ static void *ecc_wd_sync_run(void *arg)
queue = g_thread_queue.bd_res[pdata->td_id].queue;
memset(&setup, 0, sizeof(setup));
- if (subtype != X448_TYPE || subtype != X25519_TYPE) {
+ if (subtype != X448_TYPE && subtype != X25519_TYPE) {
ret = get_ecc_curve(&setup, cid);
if (ret)
return NULL;
@@ -2248,7 +2248,7 @@ static void *ecc_wd_async_run(void *arg)
queue = g_thread_queue.bd_res[pdata->td_id].queue;
memset(&setup, 0, sizeof(setup));
- if (subtype != X448_TYPE || subtype != X25519_TYPE) {
+ if (subtype != X448_TYPE && subtype != X25519_TYPE) {
ret = get_ecc_curve(&setup, cid);
if (ret)
return NULL;
diff --git a/uadk_tool/benchmark/sec_uadk_benchmark.c b/uadk_tool/benchmark/sec_uadk_benchmark.c
index f1ae18b..c99ae89 100644
--- a/uadk_tool/benchmark/sec_uadk_benchmark.c
+++ b/uadk_tool/benchmark/sec_uadk_benchmark.c
@@ -148,10 +148,10 @@ static int sec_uadk_param_parse(thread_data *tddata, struct acc_option *options)
bool is_union = false;
u8 keysize = 0;
u8 ivsize = 0;
- u8 dmode;
- u8 dalg;
- u8 mode;
- u8 alg;
+ u8 dmode = 0;
+ u8 dalg = 0;
+ u8 mode = 0;
+ u8 alg = 0;
switch(algtype) {
case AES_128_ECB:
diff --git a/uadk_tool/benchmark/sec_wd_benchmark.c b/uadk_tool/benchmark/sec_wd_benchmark.c
index 6e5c8a0..aa03db8 100644
--- a/uadk_tool/benchmark/sec_wd_benchmark.c
+++ b/uadk_tool/benchmark/sec_wd_benchmark.c
@@ -214,10 +214,10 @@ static int sec_wd_param_parse(thread_data *tddata, struct acc_option *options)
bool is_union = false;
u8 keysize = 0;
u8 ivsize = 0;
- u8 dmode;
- u8 dalg;
- u8 mode;
- u8 alg;
+ u8 dmode = 0;
+ u8 dalg = 0;
+ u8 mode = 0;
+ u8 alg = 0;
switch(algtype) {
case AES_128_ECB:
diff --git a/uadk_tool/benchmark/uadk_benchmark.c b/uadk_tool/benchmark/uadk_benchmark.c
index 6d5d009..cf3a93c 100644
--- a/uadk_tool/benchmark/uadk_benchmark.c
+++ b/uadk_tool/benchmark/uadk_benchmark.c
@@ -364,18 +364,6 @@ int get_pid_cpu_time(u32 *ptime)
return 0;
}
-void mdelay(u32 ms)
-{
- int clock_tcy = 2600000000; // 2.6Ghz CPU;
- int i;
-
- while(ms) {
- i++;
- if (i == clock_tcy)
- ms--;
- }
-}
-
static void alarm_end(int sig)
{
if (sig == SIGALRM) {
diff --git a/uadk_tool/benchmark/uadk_benchmark.h b/uadk_tool/benchmark/uadk_benchmark.h
index 1cce63d..1752948 100644
--- a/uadk_tool/benchmark/uadk_benchmark.h
+++ b/uadk_tool/benchmark/uadk_benchmark.h
@@ -198,7 +198,6 @@ enum test_alg {
ALG_MAX,
};
-extern void mdelay(u32 ms);
extern int get_pid_cpu_time(u32 *ptime);
extern void cal_perfermance_data(struct acc_option *option, u32 sttime);
extern void time_start(u32 seconds);
diff --git a/uadk_tool/test/test_sec.c b/uadk_tool/test/test_sec.c
index b00a933..16feaf0 100644
--- a/uadk_tool/test/test_sec.c
+++ b/uadk_tool/test/test_sec.c
@@ -60,7 +60,6 @@ static unsigned int g_ctxnum;
static unsigned int g_data_fmt = WD_FLAT_BUF;
static unsigned int g_sgl_num = 0;
static unsigned int g_init;
-static pthread_spinlock_t lock = 0;
static struct hash_testvec g_long_hash_tv;
--
2.25.1

View File

@ -0,0 +1,134 @@
From cb909f390823ec007cfe62aae9cf0dc750c0de2b Mon Sep 17 00:00:00 2001
From: Zhangfei Gao <zhangfei.gao@linaro.org>
Date: Wed, 24 Jan 2024 04:06:04 +0000
Subject: [PATCH 5/8] v1: fix build error
Fix build errors, like
"'struct wcrypto_rsa_prikey1' not at the end of a struct or class",
"__TEST_WD_MEM_H not match" etc.
Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Signed-off-by: 15859157387 <977713017@qq.com>
---
v1/test/hisi_zip_test_sgl/zip_alg_sgl.h | 2 +-
v1/test/test_mm/test_wd_mem.c | 5 -----
v1/test/test_mm/test_wd_mem.h | 2 +-
v1/wd_rsa.c | 18 ++++++++++--------
4 files changed, 12 insertions(+), 15 deletions(-)
diff --git a/v1/test/hisi_zip_test_sgl/zip_alg_sgl.h b/v1/test/hisi_zip_test_sgl/zip_alg_sgl.h
index 0baa35b..1e35069 100644
--- a/v1/test/hisi_zip_test_sgl/zip_alg_sgl.h
+++ b/v1/test/hisi_zip_test_sgl/zip_alg_sgl.h
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-#ifndef __WD_ZIP_ALG_SGL__H__
+#ifndef __WD_ZIP_ALG_SGL_H__
#define __WD_ZIP_ALG_SGL_H__
#include <stdio.h>
diff --git a/v1/test/test_mm/test_wd_mem.c b/v1/test/test_mm/test_wd_mem.c
index ba873f9..09824b9 100644
--- a/v1/test/test_mm/test_wd_mem.c
+++ b/v1/test/test_mm/test_wd_mem.c
@@ -75,11 +75,6 @@ static inline unsigned long long va_to_pa(struct wd_queue *q, void *va)
return (unsigned long long)wd_iova_map(q, va, 0);
}
-static inline void *pa_to_va(struct wd_queue *q, unsigned long long pa)
-{
- return wd_dma_to_va(q, (void *)pa);
-}
-
struct mmt_queue_mempool *mmt_test_mempool_create(struct wd_queue *q,
unsigned int block_size, unsigned int block_num)
{
diff --git a/v1/test/test_mm/test_wd_mem.h b/v1/test/test_mm/test_wd_mem.h
index 8a7f561..0962b44 100644
--- a/v1/test/test_mm/test_wd_mem.h
+++ b/v1/test/test_mm/test_wd_mem.h
@@ -15,7 +15,7 @@
*/
#ifndef __TEST_WD_MEM_H
-#define ___TEST_WD_MEM_H
+#define __TEST_WD_MEM_H
#include <stdio.h>
#include <string.h>
diff --git a/v1/wd_rsa.c b/v1/wd_rsa.c
index bda8d31..2c8692b 100644
--- a/v1/wd_rsa.c
+++ b/v1/wd_rsa.c
@@ -105,8 +105,10 @@ struct wcrypto_rsa_prikey2 {
};
struct wcrypto_rsa_prikey {
- struct wcrypto_rsa_prikey1 pkey1;
- struct wcrypto_rsa_prikey2 pkey2;
+ union {
+ struct wcrypto_rsa_prikey1 pkey1;
+ struct wcrypto_rsa_prikey2 pkey2;
+ } pkey;
};
/* RSA CRT private key parameter types */
@@ -444,7 +446,7 @@ static int create_ctx_key(struct wcrypto_rsa_ctx_setup *setup,
WD_ERR("alloc prikey2 fail!\n");
return -WD_ENOMEM;
}
- pkey2 = &ctx->prikey->pkey2;
+ pkey2 = &ctx->prikey->pkey.pkey2;
memset(ctx->prikey, 0, len);
init_pkey2(pkey2, ctx->key_size);
} else {
@@ -459,7 +461,7 @@ static int create_ctx_key(struct wcrypto_rsa_ctx_setup *setup,
WD_ERR("alloc prikey1 fail!\n");
return -WD_ENOMEM;
}
- pkey1 = &ctx->prikey->pkey1;
+ pkey1 = &ctx->prikey->pkey.pkey1;
memset(ctx->prikey, 0, len);
init_pkey1(pkey1, ctx->key_size);
}
@@ -716,7 +718,7 @@ int wcrypto_set_rsa_prikey_params(void *ctx, struct wd_dtb *d, struct wd_dtb *n)
WD_ERR("ctx err in set rsa private key1!\n");
return -WD_EINVAL;
}
- pkey1 = &c->prikey->pkey1;
+ pkey1 = &c->prikey->pkey.pkey1;
if (d) {
if (d->dsize > pkey1->key_size || !d->data) {
WD_ERR("d err in set rsa private key1!\n");
@@ -750,7 +752,7 @@ void wcrypto_get_rsa_prikey_params(struct wcrypto_rsa_prikey *pvk, struct wd_dtb
return;
}
- pkey1 = &pvk->pkey1;
+ pkey1 = &pvk->pkey.pkey1;
if (d)
*d = &pkey1->d;
@@ -825,7 +827,7 @@ int wcrypto_set_rsa_crt_prikey_params(void *ctx, struct wd_dtb *dq,
return ret;
}
- pkey2 = &c->prikey->pkey2;
+ pkey2 = &c->prikey->pkey.pkey2;
ret = rsa_prikey2_param_set(pkey2, dq, WD_CRT_PRIKEY_DQ);
if (ret) {
WD_ERR("dq err in set rsa private key2!\n");
@@ -871,7 +873,7 @@ void wcrypto_get_rsa_crt_prikey_params(struct wcrypto_rsa_prikey *pvk,
return;
}
- pkey2 = &pvk->pkey2;
+ pkey2 = &pvk->pkey.pkey2;
if (dq)
*dq = &pkey2->dq;
--
2.25.1

View File

@ -0,0 +1,43 @@
From d335549b1d076a22735bb7211823c2f4140c62af Mon Sep 17 00:00:00 2001
From: Zhangfei Gao <zhangfei.gao@linaro.org>
Date: Wed, 24 Jan 2024 04:15:46 +0000
Subject: [PATCH 6/8] wd_mempool: fix build error
Fix build errors like
"passing 'int *' to parameter of type '__u32 *' (aka 'unsigned int *')
converts between pointers to integer types with different sign"
Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Signed-off-by: 15859157387 <977713017@qq.com>
---
wd_mempool.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/wd_mempool.c b/wd_mempool.c
index ed107d1..47ad36b 100644
--- a/wd_mempool.c
+++ b/wd_mempool.c
@@ -71,7 +71,7 @@ static inline int wd_atomic_test_add(struct wd_ref *ref, int a, int u)
c = __atomic_load_n(&ref->ref, __ATOMIC_RELAXED);
if (c == u)
break;
- } while (! __atomic_compare_exchange_n(&ref->ref, &c, c + a, true,
+ } while (!__atomic_compare_exchange_n(&ref->ref, (__u32 *)&c, c + a, true,
__ATOMIC_RELAXED, __ATOMIC_RELAXED));
return c;
@@ -299,11 +299,6 @@ static int test_bit(struct bitmap *bm, unsigned int nr)
return !(*p & mask);
}
-inline static size_t wd_get_page_size(void)
-{
- return sysconf(_SC_PAGESIZE);
-}
-
void *wd_block_alloc(handle_t blkpool)
{
struct blkpool *bp = (struct blkpool*)blkpool;
--
2.25.1

View File

@ -0,0 +1,101 @@
From 6077f4317961f8e308ecad2f02c3cdbb09aa707a Mon Sep 17 00:00:00 2001
From: Zhangfei Gao <zhangfei.gao@linaro.org>
Date: Wed, 24 Jan 2024 04:18:57 +0000
Subject: [PATCH 7/8] wd_rsa: fix build error
Fix build errors, like
"field 'pkey1' with variable sized type 'struct wd_rsa_prikey1'
not at the end of a struct or class is a GNU extension"
Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Signed-off-by: 15859157387 <977713017@qq.com>
---
wd_rsa.c | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/wd_rsa.c b/wd_rsa.c
index a27f061..de0b796 100644
--- a/wd_rsa.c
+++ b/wd_rsa.c
@@ -45,8 +45,10 @@ struct wd_rsa_prikey2 {
};
struct wd_rsa_prikey {
- struct wd_rsa_prikey1 pkey1;
- struct wd_rsa_prikey2 pkey2;
+ union {
+ struct wd_rsa_prikey1 pkey1;
+ struct wd_rsa_prikey2 pkey2;
+ } pkey;
};
/* RSA private key parameter types */
@@ -830,7 +832,7 @@ static int create_sess_key(struct wd_rsa_sess_setup *setup,
WD_ERR("failed to alloc sess prikey2!\n");
return -WD_ENOMEM;
}
- pkey2 = &sess->prikey->pkey2;
+ pkey2 = &sess->prikey->pkey.pkey2;
memset(sess->prikey, 0, len);
init_pkey2(pkey2, sess->key_size);
} else {
@@ -841,7 +843,7 @@ static int create_sess_key(struct wd_rsa_sess_setup *setup,
WD_ERR("failed to alloc sess prikey1!\n");
return -WD_ENOMEM;
}
- pkey1 = &sess->prikey->pkey1;
+ pkey1 = &sess->prikey->pkey.pkey1;
memset(sess->prikey, 0, len);
init_pkey1(pkey1, sess->key_size);
}
@@ -872,9 +874,9 @@ static void del_sess_key(struct wd_rsa_sess *sess)
}
if (sess->setup.is_crt)
- wd_memset_zero(prk->pkey2.data, CRT_PARAMS_SZ(sess->key_size));
+ wd_memset_zero(prk->pkey.pkey2.data, CRT_PARAMS_SZ(sess->key_size));
else
- wd_memset_zero(prk->pkey1.data, GEN_PARAMS_SZ(sess->key_size));
+ wd_memset_zero(prk->pkey.pkey1.data, GEN_PARAMS_SZ(sess->key_size));
free(sess->prikey);
free(sess->pubkey);
}
@@ -1027,7 +1029,7 @@ int wd_rsa_set_prikey_params(handle_t sess, struct wd_dtb *d, struct wd_dtb *n)
WD_ERR("invalid: sess err in set rsa private key1!\n");
return -WD_EINVAL;
}
- pkey1 = &c->prikey->pkey1;
+ pkey1 = &c->prikey->pkey.pkey1;
if (d) {
if (!d->dsize || !d->data || d->dsize > pkey1->key_size) {
WD_ERR("invalid: d err in set rsa private key1!\n");
@@ -1062,7 +1064,7 @@ void wd_rsa_get_prikey_params(struct wd_rsa_prikey *pvk, struct wd_dtb **d,
return;
}
- pkey1 = &pvk->pkey1;
+ pkey1 = &pvk->pkey.pkey1;
if (d)
*d = &pkey1->d;
@@ -1134,7 +1136,7 @@ int wd_rsa_set_crt_prikey_params(handle_t sess, struct wd_dtb *dq,
return ret;
}
- pkey2 = &c->prikey->pkey2;
+ pkey2 = &c->prikey->pkey.pkey2;
ret = rsa_prikey2_param_set(pkey2, dq, WD_CRT_PRIKEY_DQ);
if (ret) {
WD_ERR("failed to set dq for rsa private key2!\n");
@@ -1180,7 +1182,7 @@ void wd_rsa_get_crt_prikey_params(struct wd_rsa_prikey *pvk,
return;
}
- pkey2 = &pvk->pkey2;
+ pkey2 = &pvk->pkey.pkey2;
if (dq)
*dq = &pkey2->dq;
--
2.25.1

View File

@ -0,0 +1,45 @@
From 4a451be8acc77467d6ffec9506b8f89ef92def8a Mon Sep 17 00:00:00 2001
From: Zhangfei Gao <zhangfei.gao@linaro.org>
Date: Wed, 24 Jan 2024 04:34:16 +0000
Subject: [PATCH 8/8] test: fix build error
Fix build errors like "unused variable"
Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Signed-off-by: 15859157387 <977713017@qq.com>
---
test/wd_mempool_test.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/test/wd_mempool_test.c b/test/wd_mempool_test.c
index ad04636..6e28b46 100644
--- a/test/wd_mempool_test.c
+++ b/test/wd_mempool_test.c
@@ -644,7 +644,7 @@ static void *sva_sec_cipher_async(void *arg)
int cnt = g_times;
handle_t h_sess;
int ret;
- int j, i;
+ int j;
setup->alg = WD_CIPHER_AES;
setup->mode = WD_CIPHER_CBC;
@@ -658,7 +658,6 @@ static void *sva_sec_cipher_async(void *arg)
SEC_TST_PRT("test sec cipher set key is failed!\n");
goto out;;
}
- i = cnt;
/* run task */
do {
try_do_again:
@@ -666,7 +665,6 @@ try_do_again:
req->src = pdata->bd_pool->bds[j].src;
req->dst = pdata->bd_pool->bds[j].dst;
ret = wd_do_cipher_async(h_sess, req);
- i--;
if (ret == -EBUSY) { // busy
usleep(100);
goto try_do_again;
--
2.25.1

Binary file not shown.

BIN
libwd-2.6.0.tar.gz Normal file

Binary file not shown.

View File

@ -1,11 +1,18 @@
Name: libwd Name: libwd
Summary: User Space Accelerator Development Kit Summary: User Space Accelerator Development Kit
Version: 2.5.0 Version: 2.6.0
Release: 4 Release: 1
License: Apache-2.0 License: Apache-2.0
Source: %{name}-%{version}.tar.gz Source: %{name}-%{version}.tar.gz
Patch01: 0001-support-clang-compile.patch Patch01: 0001-uadk-fix-build-issue-of-pthread_atfork.patch
Patch02: 0002-uadk-fix-static-build-error.patch
Patch03: 0003-uadk-add-secure-compilation-option.patch
Patch04: 0004-uadk_tool-fix-build-error.patch
Patch05: 0005-v1-fix-build-error.patch
Patch06: 0006-wd_mempool-fix-build-error.patch
Patch07: 0007-wd_rsa-fix-build-error.patch
Patch08: 0008-test-fix-build-error.patch
Vendor: Huawei Corporation Vendor: Huawei Corporation
ExclusiveOS: linux ExclusiveOS: linux
@ -13,7 +20,7 @@ URL: https://support.huawei.com
BuildRoot: %{_tmppath}/%{name}-%{version}-root BuildRoot: %{_tmppath}/%{name}-%{version}-root
Conflicts: %{name} < %{version}-%{release} Conflicts: %{name} < %{version}-%{release}
Provides: %{name} = %{version}-%{release} Provides: %{name} = %{version}-%{release}
BuildRequires: numactl-devel, openssl-devel, zlib-devel BuildRequires: numactl-devel, compat-openssl11-devel, zlib-devel
BuildRequires: automake, autoconf, libtool, chrpath BuildRequires: automake, autoconf, libtool, chrpath
BuildRequires: gcc, make BuildRequires: gcc, make
ExclusiveArch: aarch64 ExclusiveArch: aarch64
@ -23,6 +30,7 @@ This package contains the User Space Accelerator Library
for hardware accelerator, compress, symmetric encryption for hardware accelerator, compress, symmetric encryption
and decryption, asymmetric encryption and decryption. and decryption, asymmetric encryption and decryption.
%global debug_package %{nil}
%prep %prep
%autosetup -n %{name}-%{version} -p1 %autosetup -n %{name}-%{version} -p1
@ -190,6 +198,9 @@ fi
/sbin/ldconfig /sbin/ldconfig
%changelog %changelog
* Mon Jan 22 2024 Zhangfei Gao <zhangfei.gao@linaro.org> 2.6.0-1
- libwd: update to 2.6.0
* Mon Sep 18 2023 renyi <977713017@qq.com> 2.5.0-4 * Mon Sep 18 2023 renyi <977713017@qq.com> 2.5.0-4
- support clang compile - support clang compile