Messages in this thread | ![/](/images/icornerl.gif) | | Subject | Re: [PATCH 1/4] [tip:x86/mm] Correcting improper large page preservation | From | Suresh Siddha <> | Date | Fri, 02 Apr 2010 23:43:20 -0700 |
| |
On Wed, 2010-03-31 at 18:59 -0700, Siarhei Liakh wrote: > + /* > + * .data and .bss should always be writable. > + */ > + if ((within(pfn, __pa((unsigned long)_sdata) >> PAGE_SHIFT, > + __pa((unsigned long)_edata) >> PAGE_SHIFT)) || > + (within(pfn, __pa((unsigned long)__bss_start) >> PAGE_SHIFT, > + __pa((unsigned long)__bss_stop) >> PAGE_SHIFT))) { > + pgprot_val(required) |= _PAGE_RW; > + }
I have reviewed this patch and the only comment I have is:
On 64bit kernels, kernel text/data mapping and kernel identity mappings are different virtual addresses mapping to same pfn ranges. For the data/bss pages, does it help (in identifying certain data corruptions more easily) in making the kernel identity mapping to be set to read-only and enforce the need of RW only for the kernel data mappings.
Or is there some obscure code that uses something like __va(__pa(data_symbol)) and writes to it?
If not, we can remove the __pa() constructs above and use the addr for comparisons.
Otherwise this patch looks good to me.
Reviewed-by: Suresh Siddha <suresh.b.siddha@intel.com>
| ![\](/images/icornerr.gif) |