Split Lock Detection Sent In For Linux 5.7 To Spot Performance Issues, Unprivileged DoS
Split locks occur when an atomic instruction spans multiple cache lines and requires a global bus lock for ensuring atomicity. These split locks can take at least 1,000 more cycles than an atomic operation within a single cache line.
The split lock detection was initially volleyed last year by an Intel engineer and went on to explain, "During bus locking, request from other CPUs or bus agents for control of the bus are blocked. Blocking bus access from other CPUs plus overhead of configuring bus locking protocol degrade not only performance on one CPU but also overall system performance."
Beyond the performance implications of split locks, exploiting the behavior can also lead to an unprivileged denial of service vulnerability.
Modern Intel CPUs can generate an alignment check exception on hitting a split lock and the kernel is now employing this technique for split lock detection to either warn or kill offending software. The default behavior is to warn of problematic user-space applications while using the split_lock_detect=fatal kernel parameter will kill the application using SIGBUS.
This split lock detection is sent in as a pull request for the now-open Linux 5.7 kernel merge window.