linux/drivers
Tang Chen 1f6a6cc82e mem-hotplug: avoid illegal state prefixed with legal state when changing state of memory_block
We use the following command to online a memory_block:

    echo online|online_kernel|online_movable > /sys/devices/system/memory/memoryXXX/state

But, if we do the following:

    echo online_fhsjkghfkd > /sys/devices/system/memory/memoryXXX/state

the block will also be onlined.

This is because the following code in store_mem_state() does not compare
the whole string, but only the prefix of the string.

  store_mem_state()
  {
       ......
   328         if (!strncmp(buf, "online_kernel", min_t(int, count, 13)))

Here, only compare the first 13 letters of the string. If we give "online_kernelXXXXXX",
it will be recognized as online_kernel, which is incorrect.

   329                 online_type = ONLINE_KERNEL;
   330         else if (!strncmp(buf, "online_movable", min_t(int, count, 14)))

We have the same problem here,

   331                 online_type = ONLINE_MOVABLE;
   332         else if (!strncmp(buf, "online", min_t(int, count, 6)))

here,

(Here is more problematic.  If we give online_movalbe, which is a typo
of online_movable, it will be recognized as online without noticing the
author.)

   333                 online_type = ONLINE_KEEP;
   334         else if (!strncmp(buf, "offline", min_t(int, count, 7)))

and here.

   335                 online_type = -1;
   336         else {
   337                 ret = -EINVAL;
   338                 goto err;
   339         }
       ......
  }

This patch fixes this problem by using sysfs_streq() to compare the
whole string.

Signed-off-by: Tang Chen <tangchen@cn.fujitsu.com>
Reported-by: Hu Tao <hutao@cn.fujitsu.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
Cc: Gu Zheng <guz.fnst@cn.fujitsu.com>
Acked-by: Toshi Kani <toshi.kani@hp.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2014-08-06 18:01:16 -07:00
..
accessibility
acpi APEI is currently implemented so that it depends on x86 hardware. 2014-07-30 10:48:00 -07:00
amba
ata ata: libahci: Silence compiler warning on 64-bit 2014-08-01 11:18:53 -04:00
atm drivers: atm: fix %d confusingly prefixed with 0x in format strings 2014-08-05 13:04:32 -07:00
auxdisplay
base mem-hotplug: avoid illegal state prefixed with legal state when changing state of memory_block 2014-08-06 18:01:16 -07:00
bcma bcma: use NS prefix for names of Northstar specific cores 2014-07-31 13:45:32 -04:00
block zram: avoid lockdep splat by revalidate_disk 2014-07-23 15:10:54 -07:00
bluetooth Bluetooth: Fix crash in the Marvell driver initialization codepath 2014-07-31 01:07:28 +02:00
bus Merge branch 'component-for-driver' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into driver-core-next 2014-07-03 12:48:59 -07:00
cdrom
char Cleanups and bug fixes to /dev/random, add a new getrandom(2) system 2014-08-06 08:16:24 -07:00
clk The clock framework changes for 3.17 are mostly additions of new clock 2014-08-04 11:44:20 -07:00
clocksource Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-08-05 17:46:42 -07:00
connector connector: Use ktime_get_ns() 2014-07-23 10:18:07 -07:00
cpufreq cpufreq: move policy kobj to policy->cpu at resume 2014-07-17 14:23:22 +02:00
cpuidle
crypto Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2014-08-04 09:52:51 -07:00
dca
devfreq
dio
dma dma: Fix MIC X100 DMA Driver Kconfig option 2014-07-16 13:47:54 -07:00
dma-buf reservation: add suppport for read-only access using rcu 2014-07-08 13:41:08 -07:00
edac Merge branch 'x86-ras-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-08-04 17:21:59 -07:00
eisa
extcon extcon: sm5502: Change internal hardware switch according to cable type 2014-07-23 10:22:35 +09:00
firewire Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-08-06 09:38:14 -07:00
firmware Merge branch 'x86-ras-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-08-04 17:21:59 -07:00
fmc
gpio Pin control fixes for v3.16: 2014-07-23 17:42:37 -07:00
gpu Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-08-05 17:46:42 -07:00
hid [media] rc-core: remove protocol arrays 2014-07-25 19:10:43 -03:00
hsi net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
hv Char / Misc driver patches for 3.17-rc1 2014-08-04 17:32:24 -07:00
hwmon Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-08-05 17:46:42 -07:00
hwspinlock
i2c The clock framework changes for 3.17 are mostly additions of new clock 2014-08-04 11:44:20 -07:00
ide ide: use module_platform_driver() 2014-08-05 21:16:46 -07:00
idle
iio Staging driver patches for 3.17-rc1 2014-08-04 18:36:12 -07:00
infiniband mlx5: Adjust events to use unsigned long param instead of void * 2014-07-30 14:00:06 -07:00
input Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next 2014-08-06 09:41:23 -07:00
iommu Merge branches 'x86/vt-d', 'x86/amd', 'arm/omap', 'ppc/pamu', 'arm/smmu', 'arm/exynos' and 'core' into next 2014-07-31 20:29:02 +02:00
ipack ipack: Replace DEFINE_PCI_DEVICE_TABLE macro use 2014-07-18 16:50:55 -07:00
irqchip Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-08-05 17:38:45 -07:00
isdn net: filter: split 'struct sk_filter' into socket and bpf parts 2014-08-02 15:03:58 -07:00
leds
lguest
macintosh
mailbox
mcb
md Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-08-04 16:23:30 -07:00
media Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-08-06 09:38:14 -07:00
memory
memstick
message
mfd Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-08-05 17:46:42 -07:00
misc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-08-06 09:38:14 -07:00
mmc
mtd Two UBI fastmap-related fixes for v3.16: 2014-07-18 06:23:34 -10:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-08-06 09:38:14 -07:00
nfc NFC: st21nfca: Adding P2P support to st21nfca in Initiator & Target mode 2014-07-23 01:14:41 +02:00
ntb
nubus
of Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-08-05 17:46:42 -07:00
oprofile
parisc
parport parport: fix menu breakage 2014-07-25 18:00:23 -07:00
pci Char / Misc driver patches for 3.17-rc1 2014-08-04 17:32:24 -07:00
pcmcia pcmcia: remove DEFINE_PCI_DEVICE_TABLE usage 2014-07-18 16:58:07 -07:00
phy phy: miphy365x: Represent each PHY channel as a DT subnode 2014-07-22 12:46:43 +05:30
pinctrl pinctrl: st: Fix irqmux handler 2014-07-15 20:55:15 +02:00
platform
pnp ACPI / PNP: Fix acpi_pnp_match() 2014-07-30 00:23:09 +02:00
power
powercap
pps
ps3
ptp ptp: Allow reassigning calibration pin function 2014-07-01 18:52:54 -07:00
pwm
rapidio rapidio/tsi721_dma: fix failure to obtain transaction descriptor 2014-07-30 17:16:13 -07:00
ras
regulator Merge remote-tracking branches 'regulator/topic/tps65217', 'regulator/topic/tps65218', 'regulator/topic/tps6586x' and 'regulator/topic/twl' into regulator-next 2014-08-05 18:29:30 +01:00
remoteproc
reset
rpmsg
rtc
s390 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-07-22 00:44:59 -07:00
sbus Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc 2014-08-05 18:57:18 -07:00
scsi Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-08-06 09:38:14 -07:00
sfi
sh
sn
soc
spi spi: Updates for v3.17 2014-08-05 16:18:13 -07:00
spmi spmi: Remove duplicate inclusion of module.h 2014-07-10 15:22:13 -07:00
ssb ssb: extract power info from SPROM revs 4 and 5 2014-07-18 13:45:24 -04:00
staging Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-08-06 09:38:14 -07:00
target Merge branch 'for-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2014-08-04 10:09:27 -07:00
tc
thermal thermal: ti-soc-thermal: ti-bandgap.c: Cleaning up wrong address is checked 2014-07-01 09:52:35 +08:00
thunderbolt thunderbolt: Use kcalloc 2014-07-13 13:16:50 -07:00
tty Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next 2014-08-06 09:41:23 -07:00
uio Merge 3.16-rc5 into char-misc-next 2014-07-13 15:26:47 -07:00
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-08-06 09:38:14 -07:00
uwb uwb/whci: use correct structure type name in sizeof 2014-08-01 15:48:08 -07:00
vfio
vhost
video PCI changes for the v3.17 merge window: 2014-08-04 09:29:37 -07:00
virt
virtio
vlynq
vme VME: remove duplicate CA91CX42_DCTL_VDW_M define 2014-07-09 16:33:42 -07:00
w1
watchdog
xen Merge branch 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-08-04 17:13:50 -07:00
zorro zorro: Use ARRAY_SIZE 2014-07-11 10:38:02 +02:00
Kconfig Char / Misc driver patches for 3.17-rc1 2014-08-04 17:32:24 -07:00
Makefile Driver core patches for 3.17-rc1 2014-08-04 18:34:04 -07:00