On Wed, Aug 21, 2024 at 09:50:22AM +0100, Catalin Marinas wrote:
On Tue, Aug 20, 2024 at 06:56:19PM +0100, Mark Brown wrote:
I forgot when writing the above that we always allow reads from GCSPR_EL0 in order to avoid corner cases for unwinders in the case of asynchronous disable. I'd expect that to be cheap to access though.
But then gcs_preserve_current_state() doesn't save the GCSPR_EL0 value if the shadow stack was disabled. At the subsequent switch to this task, we write some stale value.
True, we should make the disable save the current value.