]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
posix-clock: posix-clock: Fix unbalanced locking in pc_clock_settime()
authorJinjie Ruan <ruanjinjie@huawei.com>
Fri, 18 Oct 2024 10:07:48 +0000 (18:07 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 1 Nov 2024 00:52:37 +0000 (01:52 +0100)
commite56e0ec1b79f5a6272c6e78b36e9d593aa0449af
tree9f689250874d15238221b7c5636fe7763c72559a
parentb96eff3d83408406b30e3fe96493944859848ad8
posix-clock: posix-clock: Fix unbalanced locking in pc_clock_settime()

[ Upstream commit 6e62807c7fbb3c758d233018caf94dfea9c65dbd ]

If get_clock_desc() succeeds, it calls fget() for the clockid's fd,
and get the clk->rwsem read lock, so the error path should release
the lock to make the lock balance and fput the clockid's fd to make
the refcount balance and release the fd related resource.

However the below commit left the error path locked behind resulting in
unbalanced locking. Check timespec64_valid_strict() before
get_clock_desc() to fix it, because the "ts" is not changed
after that.

Fixes: d8794ac20a29 ("posix-clock: Fix missing timespec64 check in pc_clock_settime()")
Acked-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
Acked-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
[pabeni@redhat.com: fixed commit message typo]
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
kernel/time/posix-clock.c