ptp: Fix possible memory leak in ptp_clock_register()
mainline inclusion from mainline-v5.15-rc7 commit 4225fea1 category: bugfix bugzilla: https://gitee.com/src-openeuler/kernel/issues/I9RBLZ CVE: CVE-2021-47455 Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=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@huawei.com> Fixes: a33121e5 ("ptp: fix the race between the release of ptp_clock and cdev") Signed-off-by:
Yang Yingliang <yangyingliang@huawei.com> Signed-off-by:
David S. Miller <davem@davemloft.net> Conflicts: drivers/ptp/ptp_clock.c ['ptp->vclock_index' is introduced since commit 44c494c8 ("ptp: track available ptp vclocks information"), so drop the code `kfree(ptp->vclock_index);`] Signed-off-by:
Zheng Yejian <zhengyejian1@huawei.com>
Loading
Please sign in to comment