linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Seth Jennings <sjennings@variantweb.net>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Seth Jennings <sjennings@variantweb.net>,
	Andrew Banman <abanman@sgi.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Russ Anderson <rja@sgi.com>,
	linux-kernel@vger.kernel.org
Subject: [PATCH 3/3] drivers: memory: prohibit offlining of memory blocks with missing sections
Date: Wed,  2 Dec 2015 09:07:01 -0600	[thread overview]
Message-ID: <1449068821-9870-3-git-send-email-sjennings@variantweb.net> (raw)
In-Reply-To: <1449068821-9870-1-git-send-email-sjennings@variantweb.net>

bdee237c and 982792c7 introduced large block sizes for x86.
This made it possible to have multiple sections per memory
block where previously, there was a only every one section
per block.

Since blocks consist of contiguous ranges of section, there
can be holes in the blocks where sections are not present.
If one attempts to offline such a block, a crash occurs since
the code is not designed to deal with this.

This patch is a quick fix to gaurd against the crash by
not allowing blocks with non-present sections to be offlined.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=107781
Reported-by: Andrew Banman <abanman@sgi.com>
Signed-off-by: Seth Jennings <sjennings@variantweb.net>
---
 drivers/base/memory.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/base/memory.c b/drivers/base/memory.c
index dd30744..6d7b14c 100644
--- a/drivers/base/memory.c
+++ b/drivers/base/memory.c
@@ -303,6 +303,10 @@ static int memory_subsys_offline(struct device *dev)
 	if (mem->state == MEM_OFFLINE)
 		return 0;
 
+	/* Can't offline block with non-present sections */
+	if (mem->section_count != sections_per_block)
+		return -EINVAL;
+
 	return memory_block_change_state(mem, MEM_OFFLINE, MEM_ONLINE);
 }
 
-- 
2.5.0

  parent reply	other threads:[~2015-12-02 15:07 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-02 15:06 [PATCH 1/3] drivers: memory: clean up section counting Seth Jennings
2015-12-02 15:07 ` [PATCH 2/3] drivers: memory: rename remove_memory_block() to remove_memory_section() Seth Jennings
2015-12-02 15:07 ` Seth Jennings [this message]
2015-12-02 22:45   ` [PATCH 3/3] drivers: memory: prohibit offlining of memory blocks with missing sections Andrew Morton
2015-12-03 17:58     ` [PATCH] drivers: memory: check for missing sections when testing zones Andrew Banman
2015-12-05  0:03       ` Andrew Morton

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=1449068821-9870-3-git-send-email-sjennings@variantweb.net \
    --to=sjennings@variantweb.net \
    --cc=abanman@sgi.com \
    --cc=akpm@linux-foundation.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rja@sgi.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;
as well as URLs for NNTP newsgroup(s).