Patch "ptp: Fix possible memory leak in ptp_clock_register()" has been added to the 5.14-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ptp: Fix possible memory leak in ptp_clock_register()

to the 5.14-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     ptp-fix-possible-memory-leak-in-ptp_clock_register.patch
and it can be found in the queue-5.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit c3ac08abd1e1af506091b1ef073b95726c4e140a
Author: Yang Yingliang <yangyingliang@xxxxxxxxxx>
Date:   Wed Oct 20 16:18:34 2021 +0800

    ptp: Fix possible memory leak in ptp_clock_register()
    
    [ Upstream commit 4225fea1cb28370086e17e82c0f69bec2779dca0 ]
    
    I got memory leak as follows when doing fault injection test:
    
    unreferenced object 0xffff88800906c618 (size 8):
      comm "i2c-idt82p33931", pid 4421, jiffies 4294948083 (age 13.188s)
      hex dump (first 8 bytes):
        70 74 70 30 00 00 00 00                          ptp0....
      backtrace:
        [<00000000312ed458>] __kmalloc_track_caller+0x19f/0x3a0
        [<0000000079f6e2ff>] kvasprintf+0xb5/0x150
        [<0000000026aae54f>] kvasprintf_const+0x60/0x190
        [<00000000f323a5f7>] kobject_set_name_vargs+0x56/0x150
        [<000000004e35abdd>] dev_set_name+0xc0/0x100
        [<00000000f20cfe25>] ptp_clock_register+0x9f4/0xd30 [ptp]
        [<000000008bb9f0de>] idt82p33_probe.cold+0x8b6/0x1561 [ptp_idt82p33]
    
    When posix_clock_register() returns an error, the name allocated
    in dev_set_name() will be leaked, the put_device() should be used
    to give up the device reference, then the name will be freed in
    kobject_cleanup() and other memory will be freed in ptp_clock_release().
    
    Reported-by: Hulk Robot <hulkci@xxxxxxxxxx>
    Fixes: a33121e5487b ("ptp: fix the race between the release of ptp_clock and cdev")
    Signed-off-by: Yang Yingliang <yangyingliang@xxxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c
index 4dfc52e06704..7fd02aabd79a 100644
--- a/drivers/ptp/ptp_clock.c
+++ b/drivers/ptp/ptp_clock.c
@@ -283,15 +283,22 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
 	/* Create a posix clock and link it to the device. */
 	err = posix_clock_register(&ptp->clock, &ptp->dev);
 	if (err) {
+	        if (ptp->pps_source)
+	                pps_unregister_source(ptp->pps_source);
+
+		kfree(ptp->vclock_index);
+
+		if (ptp->kworker)
+	                kthread_destroy_worker(ptp->kworker);
+
+		put_device(&ptp->dev);
+
 		pr_err("failed to create posix clock\n");
-		goto no_clock;
+		return ERR_PTR(err);
 	}
 
 	return ptp;
 
-no_clock:
-	if (ptp->pps_source)
-		pps_unregister_source(ptp->pps_source);
 no_pps:
 	ptp_cleanup_pin_groups(ptp);
 no_pin_groups:



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux