On Wed, 1 Feb 2017, Dave Hansen wrote: > FIXME: we also need to ensure that we check the current state of the > larger address space opt-in. If we've opted in to larger address spaces > we can not allow a small bounds directory to be used. Also, if we've > not opted in, we can not allow the larger bounds directory to be used. > This can be fixed once the in-kernel API for opting in/out is settled. Ok. > /* Register/unregister a process' MPX related resource */ > -#define MPX_ENABLE_MANAGEMENT() mpx_enable_management() > +#define MPX_ENABLE_MANAGEMENT(bd_size) mpx_enable_management(bd_size) > #define MPX_DISABLE_MANAGEMENT() mpx_disable_management() Please add another tab before mpx_disable so both are aligned. > -int mpx_enable_management(void) > +int mpx_set_mm_bd_size(unsigned long bd_size) static ? > +{ > + struct mm_struct *mm = current->mm; > + > + switch ((unsigned long long)bd_size) { > + case 0: > + /* Legacy call to prctl(): */ > + mm->context.mpx_bd_shift = 0; > + return 0; > + case MPX_BD_SIZE_BYTES_32: > + /* 32-bit, legacy-sized bounds directory: */ > + if (is_64bit_mm(mm)) > + return -EINVAL; > + mm->context.mpx_bd_shift = 0; > + return 0; > + case MPX_BD_BASE_SIZE_BYTES_64: > + /* 64-bit, legacy-sized bounds directory: */ > + if (!is_64bit_mm(mm) > + // FIXME && ! opted-in to larger address space Hmm. Confused. This is where we enable MPX and decode the requested address space. How can an already opt in happen? If that's a enable call for an already enabled thing, then we should catch that at the call site, I think. > + case MPX_BD_BASE_SIZE_BYTES_64 << MPX_LARGE_BOUNDS_DIR_SHIFT: > + /* > + * Non-legacy call, with larger directory. > + * Note that there is no 32-bit equivalent for > + * this case since its address space does not > + * change sizes. > + */ > + if (!is_64bit_mm(mm)) > + return -EINVAL; > + /* > + * Do not let this be enabled unles we are on > + * 5-level hardware *and* have that feature > + * enabled. FIXME: need runtime check Runtime check? Isn't the feature bit enough? Thanks, tglx -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>