lkml.org 
[lkml]   [2014]   [Sep]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v8 04/10] x86, mpx: hook #BR exception handler to allocate bound tables
    On 09/11/2014 01:46 AM, Qiaowei Ren wrote:
    > +/*
    > + * When a BNDSTX instruction attempts to save bounds to a BD entry
    > + * with the lack of the valid bit being set, a #BR is generated.
    > + * This is an indication that no BT exists for this entry. In this
    > + * case the fault handler will allocate a new BT.
    > + *
    > + * With 32-bit mode, the size of BD is 4MB, and the size of each
    > + * bound table is 16KB. With 64-bit mode, the size of BD is 2GB,
    > + * and the size of each bound table is 4MB.
    > + */
    > +int do_mpx_bt_fault(struct xsave_struct *xsave_buf)
    > +{
    > + unsigned long status;
    > + unsigned long bd_entry, bd_base;
    > +
    > + bd_base = xsave_buf->bndcsr.cfg_reg_u & MPX_BNDCFG_ADDR_MASK;
    > + status = xsave_buf->bndcsr.status_reg;
    > +
    > + bd_entry = status & MPX_BNDSTA_ADDR_MASK;
    > + if ((bd_entry < bd_base) ||
    > + (bd_entry >= bd_base + MPX_BD_SIZE_BYTES))
    > + return -EINVAL;
    > +
    > + return allocate_bt((long __user *)bd_entry);
    > +}

    This needs a comment about how we got the address of the bd_entry.
    Essentially just note that the hardware tells us where the missing/bad
    entry is.

    Would there be any value in ensuring that a VMA is present at bd_entry?




    \
     
     \ /
      Last update: 2014-09-24 17:21    [W:6.376 / U:0.500 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site