platform/x86/amd/pmf: Fix memory leak in amd_pmf_get_pb_data()
authorCong Liu <liucong2@kylinos.cn>
Wed, 24 Jan 2024 01:29:38 +0000 (09:29 +0800)
committerHans de Goede <hdegoede@redhat.com>
Fri, 26 Jan 2024 19:12:16 +0000 (20:12 +0100)
amd_pmf_get_pb_data() will allocate memory for the policy buffer,
but does not free it if copy_from_user() fails. This leads to a memory
leak.

Fixes: 10817f28e533 ("platform/x86/amd/pmf: Add capability to sideload of policy binary")
Reviewed-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
Signed-off-by: Cong Liu <liucong2@kylinos.cn>
Link: https://lore.kernel.org/r/20240124012939.6550-1-liucong2@kylinos.cn
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/platform/x86/amd/pmf/tee-if.c

index 502ce93d5cddac57f2f482080ea8a0800ea5123f..f8c0177afb0dae60d4f67f2876ba98c6100d1ceb 100644 (file)
@@ -298,8 +298,10 @@ static ssize_t amd_pmf_get_pb_data(struct file *filp, const char __user *buf,
        if (!new_policy_buf)
                return -ENOMEM;
 
-       if (copy_from_user(new_policy_buf, buf, length))
+       if (copy_from_user(new_policy_buf, buf, length)) {
+               kfree(new_policy_buf);
                return -EFAULT;
+       }
 
        kfree(dev->policy_buf);
        dev->policy_buf = new_policy_buf;