]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
crypto: hisilicon/qm - fix wrong release after using strsep
authorSihang Chen <chensihang1@hisilicon.com>
Sat, 15 Aug 2020 09:56:08 +0000 (17:56 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 21 Aug 2020 04:47:50 +0000 (14:47 +1000)
Save the string address before pass to strsep, release it at end.
Because strsep will update the string address to point after the
token.

Fixes: c31dc9fe165d("crypto: hisilicon/qm - add DebugFS for xQC and...")
Signed-off-by: Sihang Chen <chensihang1@hisilicon.com>
Signed-off-by: Yang Shen <shenyang39@huawei.com>
Reviewed-by: Zhou Wang <wangzhou1@hisilicon.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/hisilicon/qm.c

index 6527c53b073fe17a4296801e1d052aa4d6d3285e..fb389c030c44628535193897b74ff32919dcd0db 100644 (file)
@@ -1420,17 +1420,18 @@ static int qm_dbg_help(struct hisi_qm *qm, char *s)
 static int qm_cmd_write_dump(struct hisi_qm *qm, const char *cmd_buf)
 {
        struct device *dev = &qm->pdev->dev;
-       char *presult, *s;
+       char *presult, *s, *s_tmp;
        int ret;
 
        s = kstrdup(cmd_buf, GFP_KERNEL);
        if (!s)
                return -ENOMEM;
 
+       s_tmp = s;
        presult = strsep(&s, " ");
        if (!presult) {
-               kfree(s);
-               return -EINVAL;
+               ret = -EINVAL;
+               goto err_buffer_free;
        }
 
        if (!strcmp(presult, "sqc"))
@@ -1459,7 +1460,8 @@ static int qm_cmd_write_dump(struct hisi_qm *qm, const char *cmd_buf)
        if (ret)
                dev_info(dev, "Please echo help\n");
 
-       kfree(s);
+err_buffer_free:
+       kfree(s_tmp);
 
        return ret;
 }