Hi there,

Any objection to filing a CVE for that?

Best regards,

Thomas

On 19 April 2018 at 18:17, Thomas Preudhomme <thomas.preudho...@linaro.org>
wrote:

> Hi,
>
> For stack protector to be robust, at no point in time the guard against
> which the canari is compared must be spilled to the stack. This is achieved
> by having dedicated insn pattern for setting the canari and comparing it
> against the guard which doesn't reflect at RTL what is happening. However
> computing the address of the guard is done using standard movsi pattern and
> can thus be spilled (see PR85434). I'm reaching out to the community for
> ideas on how to avoid this.
>
> Spilling is more likely in the context of PIC where the address is loaded
> from the GOT and is thus not rematerialized. Likewise CSE make things worse
> by reusing the address computed in the prologue to set the canari later in
> the epilogue when performing the check, thereby being sensitive to peak
> register pressure in the function. Aarch64 and I believe x86 backends don't
> have the CSE issue for PIC because the GOT access is represented by an
> outer UNSPEC whereas arm backend represent it by a MEM of an UNSPEC. I
> think all targets are prone to issues in theory because the scheduler could
> reorder the GOT access away from the guard/canari comparison which would
> make a spill possible.
>
> So far my feeling is that we would need new patterns that also cover the
> guard's address computation but that would make such a pattern quite
> complex to cover all the possible address.
>
> Thoughts?
>
> Best regards,
>
> Thomas
>

Reply via email to