libwd/0024-uadk-add-null-pointer-check.patch
2024-11-19 11:51:09 +08:00

173 lines
4.3 KiB
Diff

From 3765bba6fceaa59f2afdd32e4061bbde07797c57 Mon Sep 17 00:00:00 2001
From: Qi Tao <taoqi10@huawei.com>
Date: Thu, 10 Oct 2024 11:36:44 +0800
Subject: [PATCH 24/39] uadk: add null pointer check
Add null pointer check to avoid segment errors.
Signed-off-by: Qi Tao <taoqi10@huawei.com>
---
drv/hash_mb/hash_mb.c | 6 +++---
drv/hisi_comp.c | 8 +++-----
drv/hisi_dae.c | 6 +++---
drv/hisi_hpre.c | 8 +++-----
drv/hisi_sec.c | 8 +++-----
drv/isa_ce_sm3.c | 6 +++---
drv/isa_ce_sm4.c | 6 +++---
7 files changed, 21 insertions(+), 27 deletions(-)
diff --git a/drv/hash_mb/hash_mb.c b/drv/hash_mb/hash_mb.c
index e4a9564..9ad36b8 100644
--- a/drv/hash_mb/hash_mb.c
+++ b/drv/hash_mb/hash_mb.c
@@ -217,11 +217,11 @@ static int hash_mb_init(struct wd_alg_driver *drv, void *conf)
static void hash_mb_exit(struct wd_alg_driver *drv)
{
- struct hash_mb_ctx *priv = (struct hash_mb_ctx *)drv->priv;
-
- if (!priv)
+ if(!drv || !drv->priv)
return;
+ struct hash_mb_ctx *priv = (struct hash_mb_ctx *)drv->priv;
+
hash_mb_queue_uninit(&priv->config, priv->config.ctx_num);
free(priv);
drv->priv = NULL;
diff --git a/drv/hisi_comp.c b/drv/hisi_comp.c
index 4c8e18b..c556998 100644
--- a/drv/hisi_comp.c
+++ b/drv/hisi_comp.c
@@ -835,16 +835,14 @@ out:
static void hisi_zip_exit(struct wd_alg_driver *drv)
{
+ if(!drv || !drv->priv)
+ return;
+
struct hisi_zip_ctx *priv = (struct hisi_zip_ctx *)drv->priv;
struct wd_ctx_config_internal *config;
handle_t h_qp;
__u32 i;
- if (!priv) {
- /* return if already exit */
- return;
- }
-
config = &priv->config;
for (i = 0; i < config->ctx_num; i++) {
h_qp = (handle_t)wd_ctx_get_priv(config->ctxs[i].ctx);
diff --git a/drv/hisi_dae.c b/drv/hisi_dae.c
index 09d2387..864d21b 100644
--- a/drv/hisi_dae.c
+++ b/drv/hisi_dae.c
@@ -1604,14 +1604,14 @@ out:
static void dae_exit(struct wd_alg_driver *drv)
{
+ if(!drv || !drv->priv)
+ return;
+
struct hisi_dae_ctx *priv = (struct hisi_dae_ctx *)drv->priv;
struct wd_ctx_config_internal *config;
handle_t h_qp;
__u32 i;
- if (!priv)
- return;
-
config = &priv->config;
for (i = 0; i < config->ctx_num; i++) {
h_qp = (handle_t)wd_ctx_get_priv(config->ctxs[i].ctx);
diff --git a/drv/hisi_hpre.c b/drv/hisi_hpre.c
index 37bb5ee..313cdcc 100644
--- a/drv/hisi_hpre.c
+++ b/drv/hisi_hpre.c
@@ -583,16 +583,14 @@ static int hpre_ecc_init(struct wd_alg_driver *drv, void *conf)
static void hpre_exit(struct wd_alg_driver *drv)
{
+ if(!drv || !drv->priv)
+ return;
+
struct hisi_hpre_ctx *priv = (struct hisi_hpre_ctx *)drv->priv;
struct wd_ctx_config_internal *config;
handle_t h_qp;
__u32 i;
- if (!priv) {
- /* return if already exit */
- return;
- }
-
config = &priv->config;
for (i = 0; i < config->ctx_num; i++) {
h_qp = (handle_t)wd_ctx_get_priv(config->ctxs[i].ctx);
diff --git a/drv/hisi_sec.c b/drv/hisi_sec.c
index 0a1bcc1..6377586 100644
--- a/drv/hisi_sec.c
+++ b/drv/hisi_sec.c
@@ -3102,16 +3102,14 @@ out:
static void hisi_sec_exit(struct wd_alg_driver *drv)
{
+ if(!drv || !drv->priv)
+ return;
+
struct hisi_sec_ctx *priv = (struct hisi_sec_ctx *)drv->priv;
struct wd_ctx_config_internal *config;
handle_t h_qp;
__u32 i;
- if (!priv) {
- /* return if already exit */
- return;
- }
-
config = &priv->config;
for (i = 0; i < config->ctx_num; i++) {
h_qp = (handle_t)wd_ctx_get_priv(config->ctxs[i].ctx);
diff --git a/drv/isa_ce_sm3.c b/drv/isa_ce_sm3.c
index 99cd640..54c2a9e 100644
--- a/drv/isa_ce_sm3.c
+++ b/drv/isa_ce_sm3.c
@@ -392,11 +392,11 @@ static int sm3_ce_drv_init(struct wd_alg_driver *drv, void *conf)
static void sm3_ce_drv_exit(struct wd_alg_driver *drv)
{
- struct sm3_ce_drv_ctx *sctx = (struct sm3_ce_drv_ctx *)drv->priv;
-
- if (!sctx)
+ if(!drv || !drv->priv)
return;
+ struct sm3_ce_drv_ctx *sctx = (struct sm3_ce_drv_ctx *)drv->priv;
+
free(sctx);
drv->priv = NULL;
}
diff --git a/drv/isa_ce_sm4.c b/drv/isa_ce_sm4.c
index 3404465..5e448fa 100644
--- a/drv/isa_ce_sm4.c
+++ b/drv/isa_ce_sm4.c
@@ -53,11 +53,11 @@ static int isa_ce_init(struct wd_alg_driver *drv, void *conf)
static void isa_ce_exit(struct wd_alg_driver *drv)
{
- struct sm4_ce_drv_ctx *sctx = (struct sm4_ce_drv_ctx *)drv->priv;
-
- if (!sctx)
+ if(!drv || !drv->priv)
return;
+ struct sm4_ce_drv_ctx *sctx = (struct sm4_ce_drv_ctx *)drv->priv;
+
free(sctx);
drv->priv = NULL;
}
--
2.25.1