From: Weili Qian <qianweili@huawei.com> wd_alg_init_fallback in wd_util.c discarded fb_driver->init() return value and always returned 0, and wd_agg_rehash_sync_inner in wd_agg.c ignored wd_agg_set_col_size return value, allowing invalid column sizes to hardware DMA. Propagate the init return value and check wd_agg_set_col_size so callers can detect failures. Signed-off-by: Weili Qian <qianweili@huawei.com> --- wd_agg.c | 4 +++- wd_util.c | 4 +--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/wd_agg.c b/wd_agg.c index 95cb869..951e03d 100644 --- a/wd_agg.c +++ b/wd_agg.c @@ -1500,7 +1500,9 @@ static int wd_agg_rehash_sync_inner(struct wd_agg_sess *sess, struct wd_agg_req } out_req->real_out_row_count = msg.out_row_count; - wd_agg_set_col_size(sess, in_req, out_req->real_out_row_count); + ret = wd_agg_set_col_size(sess, in_req, out_req->real_out_row_count); + if (unlikely(ret)) + return ret; in_req->in_row_count = out_req->real_out_row_count; fill_request_msg_input(&in_msg, in_req, sess, true); diff --git a/wd_util.c b/wd_util.c index 0d482f9..b5eaa7d 100644 --- a/wd_util.c +++ b/wd_util.c @@ -1566,9 +1566,7 @@ static int wd_alg_init_fallback(struct wd_alg_driver *fb_driver) return -WD_EINVAL; } - fb_driver->init(NULL, NULL); - - return 0; + return fb_driver->init(NULL, NULL); } static void wd_alg_uninit_fallback(struct wd_alg_driver *fb_driver) -- 2.50.1.windows.1