android_kernel_motorola_sm6225/drivers/edac
Toshi Kani 438470b84c EDAC: Fix sysfs dimm_label store operation
Sysfs "dimm_label" and "chX_dimm_label" nodes have the following issues
in their store operation:

 1) A newline-terminated input string causes redundant newlines:

  # echo "test" > /sys/bus/mc0/devices/dimm0/dimm_label
  # cat  /sys/bus/mc0/devices/dimm0/dimm_label
  test

  #  od -bc /sys/bus/mc0/devices/dimm0/dimm_label
  0000000 164 145 163 164 012 012
            t   e   s   t  \n  \n
  0000006

 2) The original label string (31 characters) cannot be stored due to
    an improper size check:

  # echo "CPU_SrcID#0_Ha#0_Chan#0_DIMM#0" > /sys/bus/mc0/devices/dimm0/dimm_label
  # cat /sys/bus/mc0/devices/dimm0/dimm_label

  # od -bc /sys/bus/mc0/devices/dimm0/dimm_label
   0000000 012 012
            \n  \n
   0000002

 3) An input string longer than the buffer size results a wrong label
    info as it allows a retry with the remaining string:

  # echo "CPU_SrcID#0_Ha#0_Chan#0_DIMM#0_TEST" > /sys/bus/mc0/devices/dimm0/dimm_label
  # cat  /sys/bus/mc0/devices/dimm0/dimm_label
  _TEST

Fix these issues by making the following changes:
 1) Replace a newline character at the end by setting a null. It also
    assures that the string is null-terminated in the label buffer.
 2) Check the label buffer size with 'sizeof(dimm->label)'.
 3) Fail a request if its string exceeds the label buffer size.

Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
Acked-by: Tony Luck <tony.luck@intel.com>
Cc: linux-edac <linux-edac@vger.kernel.org>
Cc: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Cc: Robert Elliott <elliott@hpe.com>
Link: http://lkml.kernel.org/r/1443121564.25474.160.camel@hpe.com
Signed-off-by: Borislav Petkov <bp@suse.de>
2015-09-25 19:45:59 +02:00
..
altera_edac.c EDAC, altera: Convert to debugfs wrappers 2015-09-22 18:20:56 +02:00
altera_edac.h EDAC, altera: Convert to debugfs wrappers 2015-09-22 18:20:56 +02:00
amd64_edac.c amd64_edac: enforce synchronous probe 2015-05-20 00:25:25 -07:00
amd64_edac.h EDAC: amd64: Use static attribute groups 2015-02-23 13:08:09 +01:00
amd64_edac_dbg.c EDAC: amd64: Use static attribute groups 2015-02-23 13:08:09 +01:00
amd64_edac_inj.c EDAC: amd64: Use static attribute groups 2015-02-23 13:08:09 +01:00
amd76x_edac.c EDAC: Remove DEFINE_PCI_DEVICE_TABLE macro 2013-12-06 10:23:41 +01:00
amd8111_edac.c amd8111_edac: Fix leaks in probe error paths 2014-02-25 10:09:09 +01:00
amd8111_edac.h
amd8131_edac.c
amd8131_edac.h
cell_edac.c edac: drop owner assignment from platform_drivers 2014-10-20 16:20:30 +02:00
cpc925_edac.c cpc925_edac: Report UE events properly 2014-10-22 22:58:45 +02:00
debugfs.c EDAC: Add debugfs wrappers 2015-09-22 18:10:22 +02:00
e7xxx_edac.c e7xxx_edac: Report CE events properly 2014-10-22 22:59:00 +02:00
e752x_edac.c e752x_edac: Drop pvt->bridge_ck 2014-02-25 10:01:30 +01:00
edac_core.h EDAC: Carve out debugfs functionality 2015-09-22 12:29:46 +02:00
edac_device.c EDAC: Don't try to cancel workqueue when it's never setup 2014-01-10 15:57:36 +01:00
edac_device_sysfs.c edac: Convert debugfX to edac_dbg(X, 2012-06-11 13:23:49 -03:00
edac_mc.c EDAC: Cleanup atomic_scrub mess 2015-05-28 15:31:53 +02:00
edac_mc_sysfs.c EDAC: Fix sysfs dimm_label store operation 2015-09-25 19:45:59 +02:00
edac_module.c EDAC: Properly unwind on failure path in edac_init() 2015-02-23 13:13:07 +01:00
edac_module.h EDAC: Add debugfs wrappers 2015-09-22 18:10:22 +02:00
edac_pci.c edac: Unify reporting of device info for device, mc and pci 2013-11-04 17:01:09 -06:00
edac_pci_sysfs.c EDAC, pci_sysfs: remove unneccessary ifdef around entire file 2014-11-11 18:17:57 +01:00
edac_stub.c EDAC, edac_stub: Drop arch-specific include 2015-05-29 22:01:00 +02:00
ghes_edac.c EDAC, ghes_edac: Remove redundant memory_type array 2015-09-23 16:59:25 +02:00
highbank_l2_edac.c edac, highbank: Improve and unify naming 2013-11-04 17:01:07 -06:00
highbank_mc_edac.c EDAC: Constify of_device_id array 2015-03-20 17:50:07 +01:00
i7core_edac.c x86/mce: Kill drain_mcelog_buffer() 2015-08-13 10:12:52 +02:00
i3000_edac.c EDAC: Delete unnecessary check before calling pci_dev_put() 2014-11-19 16:33:48 +01:00
i3200_edac.c EDAC updates all over the place: 2014-12-08 20:17:49 -08:00
i5000_edac.c EDAC: Remove DEFINE_PCI_DEVICE_TABLE macro 2013-12-06 10:23:41 +01:00
i5100_edac.c EDAC, i5100: Convert to debugfs wrappers 2015-09-22 18:21:12 +02:00
i5400_edac.c Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 2014-04-04 09:50:07 -07:00
i7300_edac.c Linux 3.14-rc5 2014-03-11 06:55:49 -03:00
i82443bxgx_edac.c EDAC, i82443bxgx: Don't export static symbol 2015-03-11 20:39:15 +01:00
i82860_edac.c EDAC: Delete unnecessary checks before pci_dev_put() 2015-02-23 13:06:23 +01:00
i82875p_edac.c EDAC: Delete unnecessary checks before pci_dev_put() 2015-02-23 13:06:23 +01:00
i82975x_edac.c EDAC: Delete unnecessary checks before pci_dev_put() 2015-02-23 13:06:23 +01:00
ie31200_edac.c ie31200_edac: Allocate mci and map mchbar first 2014-07-10 10:55:12 +02:00
Kconfig x86/ras: Move AMD MCE injector to arch/x86/ras/ 2015-08-13 10:12:54 +02:00
Makefile EDAC: Carve out debugfs functionality 2015-09-22 12:29:46 +02:00
mce_amd.c x86/mce: Kill drain_mcelog_buffer() 2015-08-13 10:12:52 +02:00
mce_amd.h x86, mce, severity: Extend the the mce_severity mechanism to handle UCNA/DEFERRED error 2014-11-19 10:55:43 -08:00
mpc85xx_edac.c EDAC, mpc85xx: Extend error address to 64 bit 2015-05-31 12:51:08 +02:00
mpc85xx_edac.h EDAC, mpc85xx: Extend error address to 64 bit 2015-05-31 12:51:08 +02:00
mv64x60_edac.c EDAC, mv64x60_edac: Fix an error code in probe() 2015-01-30 17:00:43 +01:00
mv64x60_edac.h
octeon_edac-l2c.c EDAC, octeon: Fix broken build due to model helper renames 2015-07-02 10:46:28 +02:00
octeon_edac-lmc.c EDAC, octeon: Fix broken build due to model helper renames 2015-07-02 10:46:28 +02:00
octeon_edac-pc.c EDAC, octeon: Fix broken build due to model helper renames 2015-07-02 10:46:28 +02:00
octeon_edac-pci.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
pasemi_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
ppc4xx_edac.c EDAC, ppc4xx: Access mci->csrows array elements properly 2015-08-13 06:02:19 +02:00
ppc4xx_edac.h
r82600_edac.c EDAC: Remove DEFINE_PCI_DEVICE_TABLE macro 2013-12-06 10:23:41 +01:00
sb_edac.c EDAC, sb_edac: Fix TAD presence check for sbridge_mci_bind_devs() 2015-09-24 20:40:50 +02:00
synopsys_edac.c EDAC: Constify of_device_id array 2015-03-20 17:50:07 +01:00
tile_edac.c edac: drop owner assignment from platform_drivers 2014-10-20 16:20:30 +02:00
x38_edac.c EDAC: Delete unnecessary check before calling pci_dev_put() 2014-11-19 16:33:48 +01:00
xgene_edac.c EDAC, xgene: Add SoC support 2015-09-25 15:41:46 +02:00