RE: [PATCH 2/5] x86/sgx: Add kernel-doc descriptions for params passed to vDSO user handler
"Huang, Kai" <[email protected]>
| Newsgroups | org.kernel.vger.linux-sgx,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <BL1PR11MB5525861CA0EB9AC16FAF4047F7CDA@BL1PR11MB5525.namprd11.prod.outlook.com> |
> > > Call out that except for RSP, the registers are undefined on > > > asynchronous exits as far as the vDSO ABI is concerned. E.g. the > > > vDSO's exception handler clobbers RDX, RDI, and RSI, and the kernel > > > doesn't guarantee that > > > R8 or R9 will be zero (the synthetic value loaded by the CPU). > > > > Perhaps a nit: > > > > I am not that familiar with this part, but AFAICT the kernel always > > sets RDI/RSI/RDX to exception vector/error code/addr before invoking > > the user handler, after the vDSO's exception handler clobbers them. > > > > Since you are adding description to them, should we somehow call this > > out in the comment, if I didn't miss anything? > > I don't think we want to commit to that as ABI for the vDSO interface, which is > why I documented the values as being "undefined". Maybe were already stuck > with that ABI, e.g. if some funky userspace is looking at the register params > instead of its run structure, but IMO we should at least discourage relying on the > values. > > E.g. if the kernel ever changed its exception fixup to use different registers, then > RDI/RSI/RDX might not hold the same values. In hindsight, we probably should > have scrambled those registers after propagating the exception information to the > run structure. Yeah makes sense to me. Thanks for explaining.