lkml.org 
[lkml]   [2007]   [Dec]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 16/19] modify get_desc_base
    Date
    This patch makes get_desc_base() receive a struct desc_struct,
    and then uses its internal fields to compute the base address.

    Signed-off-by: Glauber de Oliveira Costa <gcosta@redhat.com>
    ---
    arch/x86/kernel/tls.c | 2 +-
    arch/x86/mm/fault_32.c | 2 +-
    include/asm-x86/desc.h | 8 ++------
    3 files changed, 4 insertions(+), 8 deletions(-)

    diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c
    index 74d2b65..98f428b 100644
    --- a/arch/x86/kernel/tls.c
    +++ b/arch/x86/kernel/tls.c
    @@ -112,7 +112,7 @@ int do_get_thread_area(struct task_struct *p, int idx,

    memset(&info, 0, sizeof(struct user_desc));
    info.entry_number = idx;
    - info.base_addr = get_desc_base((void *)desc);
    + info.base_addr = get_desc_base((struct desc_struct *)desc);
    info.limit = GET_LIMIT(desc);
    info.seg_32bit = GET_32BIT(desc);
    info.contents = GET_CONTENTS(desc);
    diff --git a/arch/x86/mm/fault_32.c b/arch/x86/mm/fault_32.c
    index 6056c6d..ef5ab2b 100644
    --- a/arch/x86/mm/fault_32.c
    +++ b/arch/x86/mm/fault_32.c
    @@ -115,7 +115,7 @@ static inline unsigned long get_segment_eip(struct pt_regs *regs,
    }

    /* Decode the code segment base from the descriptor */
    - base = get_desc_base((unsigned long *)desc);
    + base = get_desc_base((struct desc_struct *)desc);

    if (seg & (1<<2)) {
    mutex_unlock(&current->mm->context.lock);
    diff --git a/include/asm-x86/desc.h b/include/asm-x86/desc.h
    index 926d6f8..3480cb1 100644
    --- a/include/asm-x86/desc.h
    +++ b/include/asm-x86/desc.h
    @@ -55,13 +55,9 @@ static inline void load_LDT(mm_context_t *pc)
    preempt_enable();
    }

    -static inline unsigned long get_desc_base(unsigned long *desc)
    +static inline unsigned long get_desc_base(struct desc_struct *desc)
    {
    - unsigned long base;
    - base = ((desc[0] >> 16) & 0x0000ffff) |
    - ((desc[1] << 16) & 0x00ff0000) |
    - (desc[1] & 0xff000000);
    - return base;
    + return desc->base0 | ((desc->base1) << 16) | ((desc->base2) << 24);
    }

    #else
    --
    1.5.0.6


    \
     
     \ /
      Last update: 2007-12-12 16:51    [W:0.023 / U:0.284 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site