From: lizhi <lizhi206@huawei.com> When the last line of the algorithm name matches, the lack of a newline character will cause the algorithm match to fail. Therefore, only check the terminator. Upstream: Yes AR: AR20230722287656 Feature or Bugfix: Feature Signed-off-by: lizhi <lizhi206@huawei.com> --- wd.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/wd.c b/wd.c index 7f26f84..c7dfc10 100644 --- a/wd.c +++ b/wd.c @@ -1126,22 +1126,42 @@ static int wd_read_dev_usage(struct uacce_dev *dev, const char *alg_name, __u8 a return wd_parse_dev_usage(dev, buf, alg_name, alg_op_type); } +static bool check_dev_alg_name(const char *dev_algs, const char *alg_name) +{ + char *str; + + str = strstr(dev_algs, alg_name); + if (!str) + return false; + + if (*(str + strlen(alg_name)) == '\n' || + *(str + strlen(alg_name)) == '\0') + return true; + + return false; +} + int wd_get_dev_usage(struct uacce_dev *dev, const char *alg_name, __u8 alg_op_type) { char *dev_name; int ret; - if (!dev || !alg_name) { + if (!dev || !alg_name || !dev->algs) { WD_ERR("invalid: dev or alg name is NULL!\n"); return -WD_EINVAL; } - if (!dev_has_alg(dev->algs, alg_name)) { + if (!check_dev_alg_name(dev->algs, alg_name)) { WD_ERR("invalid: dev does not support alg %s!\n", alg_name); return -WD_EINVAL; } dev_name = wd_get_accel_name(dev->char_dev_path, 0); + if (!dev_name) { + WD_ERR("failed to get dev_nmae!\n"); + return -WD_EINVAL; + } + ret = wd_alg_get_dev_usage(dev_name, alg_name, alg_op_type); if (ret == -WD_EACCES) return wd_read_dev_usage(dev, alg_name, alg_op_type); -- 2.33.0