Messages in this thread Patch in this message | | | Date | Wed, 4 Mar 2020 18:53:50 +0100 | From | Andrea Righi <> | Subject | [PATCH] ptp: free ptp clock properly |
| |
There is a bug in ptp_clock_unregister() where ptp_clock_release() can free up resources needed by posix_clock_unregister() to properly destroy a related sysfs device.
Fix this by calling posix_clock_unregister() in ptp_clock_release().
See also: commit 75718584cb3c ("ptp: free ptp device pin descriptors properly").
BugLink: https://bugs.launchpad.net/bugs/1864754 Fixes: a33121e5487b ("ptp: fix the race between the release of ptp_clock and cdev") Signed-off-by: Andrea Righi <andrea.righi@canonical.com> --- drivers/ptp/ptp_clock.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c index ac1f2bf9e888..12951023d0c6 100644 --- a/drivers/ptp/ptp_clock.c +++ b/drivers/ptp/ptp_clock.c @@ -171,6 +171,7 @@ static void ptp_clock_release(struct device *dev) struct ptp_clock *ptp = container_of(dev, struct ptp_clock, dev); ptp_cleanup_pin_groups(ptp); + posix_clock_unregister(&ptp->clock); mutex_destroy(&ptp->tsevq_mux); mutex_destroy(&ptp->pincfg_mux); ida_simple_remove(&ptp_clocks_map, ptp->index); @@ -303,8 +304,6 @@ int ptp_clock_unregister(struct ptp_clock *ptp) if (ptp->pps_source) pps_unregister_source(ptp->pps_source); - posix_clock_unregister(&ptp->clock); - return 0; } EXPORT_SYMBOL(ptp_clock_unregister); -- 2.25.0
| |