linux-edac.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Robert Richter <rrichter@marvell.com>
To: Borislav Petkov <bp@alien8.de>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Tony Luck <tony.luck@intel.com>
Cc: James Morse <james.morse@arm.com>,
	Robert Richter <rrichter@marvell.com>,
	"linux-edac@vger.kernel.org" <linux-edac@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: [PATCH 06/10] EDAC/mc: Report "unknown memory" on too many DIMM labels found
Date: Wed, 27 Nov 2019 21:54:56 +0000	[thread overview]
Message-ID: <20191127215415.11230-7-rrichter@marvell.com> (raw)
In-Reply-To: <20191127215415.11230-1-rrichter@marvell.com>

There is a limitation to report only EDAC_MAX_LABELS in e->label of
the error descriptor. This is to prevent a possible string overflow.
Current implementation falls back to "any memory" in this case and
also stops all further processing to find a unique row and channel of
the possible error location. Reporting "any memory" is wrong as the
memory controller reported an error location for one of the layers.
Instead, report "unknown memory" and also do not break early in the
loop to further check row and channel for uniqueness.

Signed-off-by: Robert Richter <rrichter@marvell.com>
---
 drivers/edac/edac_mc.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c
index e81d33960a0c..2b12320ce2f1 100644
--- a/drivers/edac/edac_mc.c
+++ b/drivers/edac/edac_mc.c
@@ -1243,20 +1243,21 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type,
 		 * channel/memory controller/...  may be affected.
 		 * Also, don't show errors for empty DIMM slots.
 		 */
-		if (!e->enable_per_layer_report || !dimm->nr_pages)
+		if (!dimm->nr_pages)
 			continue;
 
-		if (n_labels >= EDAC_MAX_LABELS) {
-			e->enable_per_layer_report = false;
-			break;
-		}
 		n_labels++;
-		if (p != e->label) {
-			strcpy(p, OTHER_LABEL);
-			p += strlen(OTHER_LABEL);
+		if (n_labels > EDAC_MAX_LABELS) {
+			p = e->label;
+			*p = '\0';
+		} else {
+			if (p != e->label) {
+				strcpy(p, OTHER_LABEL);
+				p += strlen(OTHER_LABEL);
+			}
+			strcpy(p, dimm->label);
+			p += strlen(p);
 		}
-		strcpy(p, dimm->label);
-		p += strlen(p);
 
 		/*
 		 * get csrow/channel of the DIMM, in order to allow
-- 
2.20.1


  parent reply	other threads:[~2019-11-27 21:55 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-27 21:54 [PATCH 00/10] EDAC: Rework core and ghes drivers, part two Robert Richter
2019-11-27 21:54 ` [PATCH 01/10] EDAC/mc: Split edac_mc_alloc() into smaller functions Robert Richter
2019-11-27 21:54 ` [PATCH 02/10] EDAC/mc: Reorder functions edac_mc_alloc*() Robert Richter
2019-11-27 21:54 ` [PATCH 03/10] EDAC: Store error type in struct edac_raw_error_desc Robert Richter
2019-11-28 13:58   ` kbuild test robot
2019-11-27 21:54 ` [PATCH 04/10] EDAC/mc: Determine mci pointer from the error descriptor Robert Richter
2019-11-27 21:54 ` [PATCH 05/10] EDAC/mc: Create new function edac_inc_csrow() Robert Richter
2019-11-27 21:54 ` Robert Richter [this message]
2019-11-27 21:54 ` [PATCH 07/10] EDAC/mc: Remove enable_per_layer_report function arguments Robert Richter
2019-11-27 21:55 ` [PATCH 08/10] EDAC/mc: Pass the error descriptor to error reporting functions Robert Richter
2019-11-27 21:55 ` [PATCH 09/10] EDAC/mc: Remove detail[] string and cleanup error string generation Robert Richter
2019-11-27 21:55 ` [PATCH 10/10] EDAC/mc: Remove per layer counters Robert Richter

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=20191127215415.11230-7-rrichter@marvell.com \
    --to=rrichter@marvell.com \
    --cc=bp@alien8.de \
    --cc=james.morse@arm.com \
    --cc=linux-edac@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=tony.luck@intel.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).