mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Baoquan He <bhe@redhat.com>
To: linux-kernel@vger.kernel.org, ncroxon@redhat.com,
	dyoung@redhat.com, mhuang@redhat.com
Cc: Baoquan He <bhe@redhat.com>
Subject: [RHEL6.8 Patch 1/3] kernel: audit/fix non-modular users of module_init in core code
Date: Thu, 16 Jul 2015 16:46:56 +0800	[thread overview]
Message-ID: <1437036437-25408-2-git-send-email-bhe@redhat.com> (raw)
In-Reply-To: <1437036437-25408-1-git-send-email-bhe@redhat.com>

Resolves: bz1236437
https://bugzilla.redhat.com/show_bug.cgi?id=1236437

Brew build:
https://brewweb.devel.redhat.com/taskinfo?taskID=9499237

This is back ported from upstream partionly.

The crash_notes data resides in the percpu in the first kernel.
While percpu use vmalloc to allocate by default. So if many percpu
data is needed it will cause crash_notes data crosses the page boundary.
When the second kernel tries to access this data using the physical
memory address, it sees incorrect data after crossing the page boundary.

In this patch kexec initialization from the 'device' phase to
'the 'subsys' phase. This can prevent crash_notes being allocated in
2 vmalloc pages.

commit c96d6660dc65b0a90aea9834bfd8be1d5656da18
Author: Paul Gortmaker <paul.gortmaker@windriver.com>
Date:   Thu Apr 3 14:48:35 2014 -0700

    kernel: audit/fix non-modular users of module_init in core code

    Code that is obj-y (always built-in) or dependent on a bool Kconfig
    (built-in or absent) can never be modular.  So using module_init as an
    alias for __initcall can be somewhat misleading.

    Fix these up now, so that we can relocate module_init from init.h into
    module.h in the future.  If we don't do this, we'd have to add module.h
    to obviously non-modular code, and that would be a worse thing.

    The audit targets the following module_init users for change:
     kernel/user.c                  obj-y
     kernel/kexec.c                 bool KEXEC (one instance per arch)
     kernel/profile.c               bool PROFILING
     kernel/hung_task.c             bool DETECT_HUNG_TASK
     kernel/sched/stats.c           bool SCHEDSTATS
     kernel/user_namespace.c        bool USER_NS

    Note that direct use of __initcall is discouraged, vs.  one of the
    priority categorized subgroups.  As __initcall gets mapped onto
    device_initcall, our use of subsys_initcall (which makes sense for these
    files) will thus change this registration from level 6-device to level
    4-subsys (i.e.  slightly earlier).  However no observable impact of that
    difference has been observed during testing.

    Also, two instances of missing ";" at EOL are fixed in kexec.

    Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Eric Biederman <ebiederm@xmission.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Baoquan He <bhe@redhat.com>
---
 kernel/kexec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/kexec.c b/kernel/kexec.c
index d977250..779f803 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
@@ -1246,7 +1246,7 @@ static int __init crash_notes_memory_init(void)
 	}
 	return 0;
 }
-module_init(crash_notes_memory_init)
+subsys_initcall(crash_notes_memory_init);
 
 
 /*
-- 
2.1.0


  reply	other threads:[~2015-07-16  8:47 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-16  8:46 [RHEL6.8 Patch 00/19] Support mmap() on /proc/vmcore Baoquan He
2015-07-16  8:46 ` Baoquan He [this message]
2015-07-16  8:46 ` [RHEL6.8 Patch 01/19] [S390] zero page cache synonyms Baoquan He
2015-07-16  8:46 ` [RHEL6.8 Patch 02/19] asm-generic, mm: pgtable: consolidate zero page helpers Baoquan He
2015-07-16  8:46 ` [RHEL6.8 Patch 2/3] vmcore: prevent PT_NOTE p_memsz overflow during header update Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 03/19] fs/proc/vmcore.c: add hook to read_from_oldmem() to check for non-ram pages Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 3/3] vmcore: continue vmcore initialization if PT_NOTE is found empty Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 04/19] fs/proc/vmcore.c: put if tests in the top of the while loop to reduce duplication Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 05/19] include/linux/mm.h: add PAGE_ALIGNED() helper Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 06/19] vmcore: clean up read_vmcore() Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 07/19] vmcore: allocate buffer for ELF headers on page-size alignment Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 08/19] vmcore: treat memory chunks referenced by PT_LOAD program header entries in page-size boundary in vmcore_list Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 09/19] vmalloc: make find_vm_area check in range Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 10/19] vmalloc: introduce remap_vmalloc_range_partial Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 11/19] vmcore: allocate ELF note segment in the 2nd kernel vmalloc memory Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 12/19] vmcore: allow user process to remap ELF note segment buffer Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 13/19] vmcore: calculate vmcore file size from buffer size and total size of vmcore objects Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 14/19] vmcore: support mmap() on /proc/vmcore Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 15/19] s390/kdump: Disable mmap for s390 Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 16/19] s390/kdump: Allow copy_oldmem_page() copy to virtual memory Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 17/19] vmcore: introduce remap_oldmem_pfn_range() Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 18/19] s390/vmcore: implement remap_oldmem_pfn_range for s390 Baoquan He
2015-07-16  8:47 ` [RHEL6.8 Patch 19/19] fs/proc/vmcore.c:mmap_vmcore: skip non-ram pages reported by hypervisors Baoquan He
2015-07-16 11:01 ` [RHEL6.8 Patch 00/19] Support mmap() on /proc/vmcore Baoquan He

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1437036437-25408-2-git-send-email-bhe@redhat.com \
    --to=bhe@redhat.com \
    --cc=dyoung@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mhuang@redhat.com \
    --cc=ncroxon@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®