On Mon, 18 May 2015, Dave Hansen wrote:
> From: Dave Hansen <dave.han...@linux.intel.com>
> 
> There are two basic things that can happen as the result of
> a bounds exception (#BR):
> 
>       1. We allocate a new bounds table
>       2. We pass up a bounds exception to userspace.
> 
> This patch adds a trace point for the case where we are
> passing the exception up to userspace with a signal.
> 
> We are also explicit that we're printing out the inverse of
> the 'upper' that we encounter.  If you want to filter, for
> instance, you need to ~ the value first.  The reason we do
> this is because of how 'upper' is stored in the bounds table.
> If a pointer's range is:
> 
>       0x1000 -> 0x2000
> 
> it is stored in the bounds table as (32-bits here for brevity):
> 
>       lower: 0x00001000
>       upper: 0xffffdfff
> 
> That is so that an all 0's entry:
> 
>       lower: 0x00000000
>       upper: 0x00000000
> 
> corresponds to the "init" bounds which store a *range* of:
> 
>       0x00000000 -> 0xffffffff
> 
> That is, by far, the common case, and that lets us use the
> zero page, or deduplicate the memory, etc... The 'upper'
> stored in the table is gibberish to print by itself, so we
> print ~upper to get the *actual*, logical, human-readable
> value printed out.

Thanks for clarifying that!
 
> Signed-off-by: Dave Hansen <dave.han...@linux.intel.com>

Reviewed-by: Thomas Gleixner <t...@linutronix.de>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to