[PATCH 4.14 085/110] EDAC, sb_edac: Fix out of bound writes during DIMM configuration on KNL

2018-03-07 Thread Greg Kroah-Hartman
4.14-stable review patch.  If anyone has any objections, please let me know.

--

From: Anna Karbownik 

commit bf8486709ac7fad99e4040dea73fe466c57a4ae1 upstream.

Commit

  3286d3eb906c ("EDAC, sb_edac: Drop NUM_CHANNELS from 8 back to 4")

decreased NUM_CHANNELS from 8 to 4, but this is not enough for Knights
Landing which supports up to 6 channels.

This caused out-of-bounds writes to pvt->mirror_mode and pvt->tolm
variables which don't pay critical role on KNL code path, so the memory
corruption wasn't causing any visible driver failures.

The easiest way of fixing it is to change NUM_CHANNELS to 6. Do that.

An alternative solution would be to restructure the KNL part of the
driver to 2MC/3channel representation.

Reported-by: Dan Carpenter 
Signed-off-by: Anna Karbownik 
Cc: Mauro Carvalho Chehab 
Cc: Tony Luck 
Cc: jim.m.s...@intel.com
Cc: krzysztof.palisw...@intel.com
Cc: lukasz.odzi...@intel.com
Cc: qiuxu.z...@intel.com
Cc: linux-edac 
Cc: 
Fixes: 3286d3eb906c ("EDAC, sb_edac: Drop NUM_CHANNELS from 8 back to 4")
Link: 
http://lkml.kernel.org/r/1519312693-4789-1-git-send-email-anna.karbow...@intel.com
[ Massage commit message. ]
Signed-off-by: Borislav Petkov 
Signed-off-by: Greg Kroah-Hartman 

---
 drivers/edac/sb_edac.c |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/edac/sb_edac.c
+++ b/drivers/edac/sb_edac.c
@@ -279,7 +279,7 @@ static const u32 correrrthrsld[] = {
  * sbridge structs
  */
 
-#define NUM_CHANNELS   4   /* Max channels per MC */
+#define NUM_CHANNELS   6   /* Max channels per MC */
 #define MAX_DIMMS  3   /* Max DIMMS per channel */
 #define KNL_MAX_CHAS   38  /* KNL max num. of Cache Home Agents */
 #define KNL_MAX_CHANNELS   6   /* KNL max num. of PCI channels */




[PATCH 4.14 085/110] EDAC, sb_edac: Fix out of bound writes during DIMM configuration on KNL

2018-03-07 Thread Greg Kroah-Hartman
4.14-stable review patch.  If anyone has any objections, please let me know.

--

From: Anna Karbownik 

commit bf8486709ac7fad99e4040dea73fe466c57a4ae1 upstream.

Commit

  3286d3eb906c ("EDAC, sb_edac: Drop NUM_CHANNELS from 8 back to 4")

decreased NUM_CHANNELS from 8 to 4, but this is not enough for Knights
Landing which supports up to 6 channels.

This caused out-of-bounds writes to pvt->mirror_mode and pvt->tolm
variables which don't pay critical role on KNL code path, so the memory
corruption wasn't causing any visible driver failures.

The easiest way of fixing it is to change NUM_CHANNELS to 6. Do that.

An alternative solution would be to restructure the KNL part of the
driver to 2MC/3channel representation.

Reported-by: Dan Carpenter 
Signed-off-by: Anna Karbownik 
Cc: Mauro Carvalho Chehab 
Cc: Tony Luck 
Cc: jim.m.s...@intel.com
Cc: krzysztof.palisw...@intel.com
Cc: lukasz.odzi...@intel.com
Cc: qiuxu.z...@intel.com
Cc: linux-edac 
Cc: 
Fixes: 3286d3eb906c ("EDAC, sb_edac: Drop NUM_CHANNELS from 8 back to 4")
Link: 
http://lkml.kernel.org/r/1519312693-4789-1-git-send-email-anna.karbow...@intel.com
[ Massage commit message. ]
Signed-off-by: Borislav Petkov 
Signed-off-by: Greg Kroah-Hartman 

---
 drivers/edac/sb_edac.c |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/edac/sb_edac.c
+++ b/drivers/edac/sb_edac.c
@@ -279,7 +279,7 @@ static const u32 correrrthrsld[] = {
  * sbridge structs
  */
 
-#define NUM_CHANNELS   4   /* Max channels per MC */
+#define NUM_CHANNELS   6   /* Max channels per MC */
 #define MAX_DIMMS  3   /* Max DIMMS per channel */
 #define KNL_MAX_CHAS   38  /* KNL max num. of Cache Home Agents */
 #define KNL_MAX_CHANNELS   6   /* KNL max num. of PCI channels */