]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
thunderbolt: Fix memory leaks in {port|retimer}_sb_regs_write()
authorAapo Vienamo <aapo.vienamo@linux.intel.com>
Thu, 20 Jun 2024 10:43:03 +0000 (13:43 +0300)
committerMika Westerberg <mika.westerberg@linux.intel.com>
Fri, 2 Aug 2024 06:59:51 +0000 (09:59 +0300)
Add missing free_page() call for the memory allocated by
validate_and_copy_from_user().

Fixes: 6d241fa00159 ("thunderbolt: Add sideband register access to debugfs")
Signed-off-by: Aapo Vienamo <aapo.vienamo@linux.intel.com>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/thunderbolt/debugfs.c

index 11185cc1db92994c5b2db3b1b21b3ed8848b4347..9ed4bb2e8d05fd2bb779c071612c6c16a45c19a5 100644 (file)
@@ -323,16 +323,17 @@ static ssize_t port_sb_regs_write(struct file *file, const char __user *user_buf
 
        if (mutex_lock_interruptible(&tb->lock)) {
                ret = -ERESTARTSYS;
-               goto out_rpm_put;
+               goto out;
        }
 
        ret = sb_regs_write(port, port_sb_regs, ARRAY_SIZE(port_sb_regs),
                            USB4_SB_TARGET_ROUTER, 0, buf, count, ppos);
 
        mutex_unlock(&tb->lock);
-out_rpm_put:
+out:
        pm_runtime_mark_last_busy(&sw->dev);
        pm_runtime_put_autosuspend(&sw->dev);
+       free_page((unsigned long)buf);
 
        return ret < 0 ? ret : count;
 }
@@ -355,16 +356,17 @@ static ssize_t retimer_sb_regs_write(struct file *file,
 
        if (mutex_lock_interruptible(&tb->lock)) {
                ret = -ERESTARTSYS;
-               goto out_rpm_put;
+               goto out;
        }
 
        ret = sb_regs_write(rt->port, retimer_sb_regs, ARRAY_SIZE(retimer_sb_regs),
                            USB4_SB_TARGET_RETIMER, rt->index, buf, count, ppos);
 
        mutex_unlock(&tb->lock);
-out_rpm_put:
+out:
        pm_runtime_mark_last_busy(&rt->dev);
        pm_runtime_put_autosuspend(&rt->dev);
+       free_page((unsigned long)buf);
 
        return ret < 0 ? ret : count;
 }