On Mon, Nov 30, 2015 at 4:01 PM, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > On Mon, 30 Nov 2015 15:54:12 -0800 Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > >> On Thu, 26 Nov 2015 14:59:42 -0800 Daniel Cashman <dcashman@xxxxxxxxxxx> wrote: >> >> > ASLR only uses as few as 8 bits to generate the random offset for the >> > mmap base address on 32 bit architectures. This value was chosen to >> > prevent a poorly chosen value from dividing the address space in such >> > a way as to prevent large allocations. This may not be an issue on all >> > platforms. Allow the specification of a minimum number of bits so that >> > platforms desiring greater ASLR protection may determine where to place >> > the trade-off. >> > >> > --- a/kernel/sysctl.c >> > +++ b/kernel/sysctl.c >> > @@ -1568,6 +1568,28 @@ static struct ctl_table vm_table[] = { >> > .mode = 0644, >> > .proc_handler = proc_doulongvec_minmax, >> > }, >> > +#ifdef CONFIG_HAVE_ARCH_MMAP_RND_BITS >> > + { >> > + .procname = "mmap_rnd_bits", >> > + .data = &mmap_rnd_bits, >> > + .maxlen = sizeof(mmap_rnd_bits), >> > + .mode = 0600, >> > + .proc_handler = proc_dointvec_minmax, >> > + .extra1 = (void *) &mmap_rnd_bits_min, >> > + .extra2 = (void *) &mmap_rnd_bits_max, >> >> hm, why the typecasts? They're unneeded and are omitted everywhere(?) >> else in kernel/sysctl.c. > > Oh. Casting away constness. > > What's the thinking here? They can change at any time so they aren't > const so we shouldn't declare them to be const? The _min and _max values shouldn't be changing: they're decided based on the various CONFIG options that calculate the valid min/maxes. Only mmap_rnd_bits itself should be changing. -Kees -- Kees Cook Chrome OS & Brillo Security -- 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>