Messages in this thread | | | Date | Tue, 26 Aug 2014 19:53:46 +0800 | From | Baoquan He <> | Subject | Re: [PATCH v3] not adding modules range to kcore if it's equal to vmcore range |
| |
On 08/26/14 at 07:38pm, Baoquan He wrote: > On some ARCHs modules range is eauql to vmalloc range. E.g on i686 > "#define MODULES_VADDR VMALLOC_START" > "#define MODULES_END VMALLOC_END" > This will cause 2 duplicate program segments in /proc/kcore, and no > any flag to indicate both of them are different. This is confusing. > > And usually people who need check the elf header or read the content > of kcore will check memory ranges. Two program segments which are the > same completely can't give any help on this. > > So in this patch a judgment added to check if modules range is equal > to or included in vmalloc range completely. If yes, just skip adding > the modules range. If and only if modules range is not completely > included in vmalloc range just add it since the part out of vmalloc > range need be accessible. > > Signed-off-by: Baoquan He <bhe@redhat.com> > --- > fs/proc/kcore.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c > index 6df8d07..a4b7ff1 100644 > --- a/fs/proc/kcore.c > +++ b/fs/proc/kcore.c > @@ -610,8 +610,11 @@ static void __init proc_kcore_text_init(void) > struct kcore_list kcore_modules; > static void __init add_modules_range(void) > { > - kclist_add(&kcore_modules, (void *)MODULES_VADDR, > + if ( (MODULES_VADDR != VMALLOC_START) && > + (MODULES_END <= VMALLOC_END) ) {
Oh, the check should be like below expression which can denote that modules range is equal to or included in vmalloc range.
if ((MODULES_VADDR >= VMALLOC_START) && (MODULES_END <= VMALLOC_END) ) {
Nack this patch, will post a new one.
> + kclist_add(&kcore_modules, (void *)MODULES_VADDR, > MODULES_END - MODULES_VADDR, KCORE_VMALLOC); > + } > } > #else > static void __init add_modules_range(void) > -- > 1.9.0 >
| |