• Yang Yingliang's avatar
    ptp: Fix possible memory leak in ptp_clock_register() · 4225fea1
    Yang Yingliang authored
    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: default avatarHulk Robot <hulkci@huawei.com>
    Fixes: a33121e5 ("ptp: fix the race between the release of ptp_clock and cdev")
    Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    4225fea1
ptp_clock.c 10.6 KB