From: Omar Sandoval <osandov@osandov.com> To: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, Andrew Morton <akpm@linux-foundation.org> Cc: Alexey Dobriyan <adobriyan@gmail.com>, Eric Biederman <ebiederm@xmission.com>, James Morse <james.morse@arm.com>, Bhupesh Sharma <bhsharma@redhat.com>, kernel-team@fb.com Subject: [PATCH v3 2/8] proc/kcore: don't grab lock for memory hotplug notifier Date: Wed, 18 Jul 2018 15:58:42 -0700 [thread overview] Message-ID: <0a4bc89f4dbde8b5b2ea309f7b4fb6a85fe29df2.1531953780.git.osandov@fb.com> (raw) In-Reply-To: <cover.1531953780.git.osandov@fb.com> From: Omar Sandoval <osandov@fb.com> The memory hotplug notifier kcore_callback() only needs kclist_lock to prevent races with __kcore_update_ram(), but we can easily eliminate that race by using an atomic xchg() in __kcore_update_ram(). This is preparation for converting kclist_lock to an rwsem. Signed-off-by: Omar Sandoval <osandov@fb.com> --- fs/proc/kcore.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c index b0b9a76f28d6..e83f15a4f66d 100644 --- a/fs/proc/kcore.c +++ b/fs/proc/kcore.c @@ -118,7 +118,7 @@ static void __kcore_update_ram(struct list_head *list) LIST_HEAD(garbage); write_lock(&kclist_lock); - if (kcore_need_update) { + if (xchg(&kcore_need_update, 0)) { list_for_each_entry_safe(pos, tmp, &kclist_head, list) { if (pos->type == KCORE_RAM || pos->type == KCORE_VMEMMAP) @@ -127,7 +127,6 @@ static void __kcore_update_ram(struct list_head *list) list_splice_tail(list, &kclist_head); } else list_splice(list, &garbage); - kcore_need_update = 0; proc_root_kcore->size = get_kcore_size(&nphdr, &size); write_unlock(&kclist_lock); @@ -593,9 +592,8 @@ static int __meminit kcore_callback(struct notifier_block *self, switch (action) { case MEM_ONLINE: case MEM_OFFLINE: - write_lock(&kclist_lock); kcore_need_update = 1; - write_unlock(&kclist_lock); + break; } return NOTIFY_OK; } -- 2.18.0
next prev parent reply other threads:[~2018-07-18 23:39 UTC|newest] Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-07-18 22:58 [PATCH v3 0/8] /proc/kcore improvements Omar Sandoval 2018-07-18 22:58 ` [PATCH v3 1/8] proc/kcore: don't grab lock for kclist_add() Omar Sandoval 2018-07-18 22:58 ` Omar Sandoval [this message] 2018-07-18 22:58 ` [PATCH v3 3/8] proc/kcore: replace kclist_lock rwlock with rwsem Omar Sandoval 2018-07-18 22:58 ` [PATCH v3 4/8] proc/kcore: fix memory hotplug vs multiple opens race Omar Sandoval 2018-07-18 22:58 ` [PATCH v3 5/8] proc/kcore: hold lock during read Omar Sandoval 2018-07-24 15:11 ` Tetsuo Handa 2018-07-25 23:34 ` Omar Sandoval 2018-07-18 22:58 ` [PATCH v3 6/8] proc/kcore: clean up ELF header generation Omar Sandoval 2018-07-18 22:58 ` [PATCH v3 7/8] proc/kcore: optimize multiple page reads Omar Sandoval 2018-08-28 10:59 ` KASAN error in " Dominique Martinet 2018-08-29 4:04 ` [PATCH] proc/kcore: fix invalid memory access in multi-page read optimization Dominique Martinet 2018-09-04 18:03 ` Omar Sandoval 2018-09-04 22:24 ` Dominique Martinet 2018-09-04 22:35 ` [PATCH v2] " Dominique Martinet 2018-09-04 22:38 ` [PATCH v3] " Dominique Martinet 2018-09-04 22:41 ` Omar Sandoval 2018-09-05 19:56 ` Bhupesh Sharma 2018-09-05 20:57 ` Andrew Morton 2018-09-05 22:00 ` Dominique Martinet 2018-07-18 22:58 ` [PATCH v3 8/8] proc/kcore: add vmcoreinfo note to /proc/kcore Omar Sandoval
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=0a4bc89f4dbde8b5b2ea309f7b4fb6a85fe29df2.1531953780.git.osandov@fb.com \ --to=osandov@osandov.com \ --cc=adobriyan@gmail.com \ --cc=akpm@linux-foundation.org \ --cc=bhsharma@redhat.com \ --cc=ebiederm@xmission.com \ --cc=james.morse@arm.com \ --cc=kernel-team@fb.com \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --subject='Re: [PATCH v3 2/8] proc/kcore: don'\''t grab lock for memory hotplug notifier' \ /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
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).