Message ID | 20200327100706.1356731-1-andrea.righi@canonical.com |
---|---|
Headers | show |
Series | ptp: fix potential general protection fault in ptp_clock_unregister() | expand |
On Fri, Mar 27, 2020 at 11:07:05AM +0100, Andrea Righi wrote: > BugLink: https://bugs.launchpad.net/bugs/1864754 > > v2: move pps_unregister_source() to ptp_clock_release(), instead of > posix_clock_unregister(), that would just introduce a resource leak > > [Impact] > > Disconnecting a thunderbolt docking station on a Dell Inc. XPS 13 > 9360/0D4J15 can cause a general protection fault (with kernel 5.3.0-40 > and above). > > The bug has been introduced by this upstream commit: > > ffe3bcaf02c4 ptp: fix the race between the release of ptp_clock and cdev > > Reverting the commit is not a viable option, because we would > re-introduce another bug. > > The proper fix is to do something similar to this: > > 75718584cb3c64e6269109d4d54f888ac5a5fd15 "ptp: free ptp device pin descriptors properly" > > and call pps_unregister_source() in ptp_clock_release(). NOTE: this bug > is also present upstream. > > [Test case] > > Bug reported provided the test case by physically disconnecting the > docking station. The problems can be easily reproduced and it doesn't > seem to happen anymore with the fix applied. > > [Fix] > > Call call pps_unregister_source() from ptp_clock_release() instead of > ptp_clock_unregister(). > > [Regression potential] > > Minimal regression potential, the change is limited to the ptp clock > unregistering code path. This was applied previously, noting it here for the record.