Messages in this thread Patch in this message | | | From | Reza Arbab <> | Subject | [PATCH v2] memory-hotplug: fix store_mem_state() return value | Date | Thu, 5 May 2016 14:07:24 -0500 |
| |
Attempting to online memory which is already online will cause this:
1. store_mem_state() called with buf="online" 2. device_online() returns 1 because device is already online 3. store_mem_state() returns 1 4. calling code interprets this as 1-byte buffer read 5. store_mem_state() called again with buf="nline" 6. store_mem_state() returns -EINVAL
Example:
$ cat /sys/devices/system/memory/memory0/state online $ echo online > /sys/devices/system/memory/memory0/state -bash: echo: write error: Invalid argument
Fix the return value of store_mem_state() so this doesn't happen.
Signed-off-by: Reza Arbab <arbab@linux.vnet.ibm.com> --- drivers/base/memory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/base/memory.c b/drivers/base/memory.c index 961e2cf..eebd9a8 100644 --- a/drivers/base/memory.c +++ b/drivers/base/memory.c @@ -359,7 +359,7 @@ store_mem_state(struct device *dev, err: unlock_device_hotplug(); - if (ret) + if (ret < 0) return ret; return count; } -- 1.8.3.1
| |