On 12/03/2018 17:13, Andy Lutomirski wrote: >> >> savesegment(fs, vmx->host_state.fs_sel); >> /* >> * When FSGSBASE extensions are enabled, this will have to use >> * RD{FS,GS}BASE instead of accessing current, and the >> * corresponding WR{FS,GS}BASE should be done unconditionally, >> * even if fs_reload_needed (resp. gs_ldt_reload_needed) is 1. >> */ >> if (vmx->host_state.fs_sel <= 3) { >> vmcs_write16(HOST_FS_SELECTOR, vmx->host_state.fs_sel); >> vmcs_write16(HOST_FS_BASE, current->thread.fsbase); >> vmx->host_state.fs_reload_needed = 0; >> } else { >> vmcs_write16(HOST_FS_SELECTOR, 0); >> vmcs_write16(HOST_FS_BASE, 0); >> vmx->host_state.fs_reload_needed = 1; >> } >> savesegment(gs, vmx->host_state.gs_sel); >> ... >> >> ? >> > Hmm, probably, although this still gets the case where the user writes > 0 to %fs wrong. Of course, save_fsgs() also gets that wrong. > > I'm okay with this variant as long as you add a comment to > save_..._legacy pointing at the KVM code. Why in save_..._legacy? If it is about FSGSBASE, shouldn't it be in save_fsgs? (Or if not I'm missing what the comment should be about). Paolo