Re: mm: convert vma->vm_flags to 64bit

From: Russell King - ARM Linux
Date: Tue Apr 12 2011 - 16:32:00 EST


On Mon, Apr 11, 2011 at 11:33:58PM -0700, Andrew Morton wrote:
> How the heck did we end up using 32 flags??

Good question.

> > @@ -217,7 +217,7 @@ vivt_flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned
> > {
> > if (cpumask_test_cpu(smp_processor_id(), mm_cpumask(vma->vm_mm)))
> > __cpuc_flush_user_range(start & PAGE_MASK, PAGE_ALIGN(end),
> > - vma->vm_flags);
> > + (unsigned long)vma->vm_flags);
> > }
>
> I'm surprised this change (and similar) are needed?
>
> Is it risky? What happens if we add yet another vm_flags bit and
> __cpuc_flush_user_range() wants to use it? I guess when that happens,
> __cpuc_flush_user_range() needs to be changed to take a ull.

The truncation is fine provided VM_EXEC is within the least significant
word. If it isn't, then we'll blow up when the cache handling assembly
gets parsed by the assembler as the VM_EXEC value will overflow.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/