lkml.org 
[lkml]   [2008]   [Nov]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [x86] do_arch_prctl - bug?
    From
    Date
    Le mardi 18 novembre 2008 15:45:56, vous avez écrit :
    > On Tue, 18 Nov 2008 15:33:32 +0100
    >
    > Eric Lacombe <goretux@gmail.com> wrote:
    > > Hello,
    > >
    > > I would like to know why the ARCH_SET_GS action of sys_arch_prctl,
    > > write the MSR MSR_KERNEL_GS_BASE and not the MSR MSR_GS_BASE when the
    > > variable "doit" equals 1? Is that a bug?
    >
    > I don't think it is.
    > The trick is that we use "swapgs" on entering/leaving the kernel, and
    > that will "swap" gs with the MSR, so when we return to userspace, GS
    > gets loaded from the MSR_KERNEL_GS_BASE ...

    Yeah when we enter the kernel swapgs is used, so the MSR_GS_BASE is switched
    with the MSR_KERNEL_GS_BASE.

    In fact, what I certainly misunderstand is why load_gs_index use swapgs
    inside.
    From that function, I trust that only when gs is loaded, its hidden part is
    loaded with the MSR_GS_BASE.

    ENTRY(native_load_gs_index)
    CFI_STARTPROC
    pushf
    CFI_ADJUST_CFA_OFFSET 8
    DISABLE_INTERRUPTS(CLBR_ANY | ~(CLBR_RDI))
    SWAPGS
    gs_change:
    movl %edi,%gs
    2: mfence /* workaround */
    SWAPGS
    popf
    CFI_ADJUST_CFA_OFFSET -8
    ret
    CFI_ENDPROC
    ENDPROC(native_load_gs_index)

    Regards,

    Eric

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2008-11-18 18:37    [W:0.054 / U:118.292 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site