lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 16 Jan 2019 12:14:41 -0500 (EST) From: Mathieu Desnoyers <mathieu.desnoyers@...icios.com> To: Daniel Colascione <dancol@...gle.com> Cc: Paul Turner <pjt@...gle.com>, "Paul E. McKenney" <paulmck@...ux.vnet.ibm.com>, Andy Lutomirski <luto@...capital.net>, Boqun Feng <boqun.feng@...il.com>, Peter Zijlstra <peterz@...radead.org>, Thomas Gleixner <tglx@...utronix.de>, linux-kernel <linux-kernel@...r.kernel.org> Subject: Adaptative busy spinning with rseq Hi! A follow up on the Edinburgh discussion I had with Daniel: I did a prototype implementation of adaptative busy spinning with rseq. It only uses current upstream rseq features. It's not optimized at this stage (and I don't have time to work more on it at the moment), and it's only x86-64, but I'm throwing the code out there for feedback: https://github.com/compudj/rseq-test/blob/adapt-lock/test-rseq-adaptative-lock.c The trick here is to rely on the Zero Flag being invariant for a sub-section of the rseq critical sections, and use it to figure out if it has been aborted after cmpxchg has succeeded. Testing the Zero Flag on abort basically removes the rseq requirement that the very last instruction of a rseq critical section needs to be the "commit" instruction, allowing us to cover an entire loop within a rseq critical section. Feedback is welcome! Thanks, Mathieu -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com
Powered by blists - more mailing lists