ptp: fix corrupted list in ptp_open
authorEdward Adam Davis <eadavis@qq.com>
Tue, 7 Nov 2023 08:00:41 +0000 (16:00 +0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 9 Nov 2023 02:47:07 +0000 (18:47 -0800)
commit1bea2c3e6df8caf45d18384abfb707f47e9ff993
tree247a0999ede72aabbdd2c4acf9ada9a843947ebd
parentb714ca2ccf6a90733f6ceb14abb6ce914f8832c3
ptp: fix corrupted list in ptp_open

There is no lock protection when writing ptp->tsevqs in ptp_open() and
ptp_release(), which can cause data corruption, use spin lock to avoid this
issue.

Moreover, ptp_release() should not be used to release the queue in ptp_read(),
and it should be deleted altogether.

Acked-by: Richard Cochran <richardcochran@gmail.com>
Reported-and-tested-by: syzbot+df3f3ef31f60781fa911@syzkaller.appspotmail.com
Fixes: 8f5de6fb2453 ("ptp: support multiple timestamp event readers")
Signed-off-by: Edward Adam Davis <eadavis@qq.com>
Link: https://lore.kernel.org/r/tencent_CD19564FFE8DA8A5918DFE92325D92DD8107@qq.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/ptp/ptp_chardev.c
drivers/ptp/ptp_clock.c
drivers/ptp/ptp_private.h