Merge branch 'linux-3.17' of git://anongit.freedesktop.org/git/nouveau/linux-2.6...
[firefly-linux-kernel-4.4.55.git] / drivers / base / memory.c
index 89f752dd8465acdd1f9a7696c34f8dfc572c31e3..a2e13e250bba2f54eea93e72e9692340d3298d66 100644 (file)
@@ -284,7 +284,7 @@ static int memory_subsys_online(struct device *dev)
         * attribute and need to set the online_type.
         */
        if (mem->online_type < 0)
-               mem->online_type = ONLINE_KEEP;
+               mem->online_type = MMOP_ONLINE_KEEP;
 
        ret = memory_block_change_state(mem, MEM_ONLINE, MEM_OFFLINE);
 
@@ -315,23 +315,23 @@ store_mem_state(struct device *dev,
        if (ret)
                return ret;
 
-       if (!strncmp(buf, "online_kernel", min_t(int, count, 13)))
-               online_type = ONLINE_KERNEL;
-       else if (!strncmp(buf, "online_movable", min_t(int, count, 14)))
-               online_type = ONLINE_MOVABLE;
-       else if (!strncmp(buf, "online", min_t(int, count, 6)))
-               online_type = ONLINE_KEEP;
-       else if (!strncmp(buf, "offline", min_t(int, count, 7)))
-               online_type = -1;
+       if (sysfs_streq(buf, "online_kernel"))
+               online_type = MMOP_ONLINE_KERNEL;
+       else if (sysfs_streq(buf, "online_movable"))
+               online_type = MMOP_ONLINE_MOVABLE;
+       else if (sysfs_streq(buf, "online"))
+               online_type = MMOP_ONLINE_KEEP;
+       else if (sysfs_streq(buf, "offline"))
+               online_type = MMOP_OFFLINE;
        else {
                ret = -EINVAL;
                goto err;
        }
 
        switch (online_type) {
-       case ONLINE_KERNEL:
-       case ONLINE_MOVABLE:
-       case ONLINE_KEEP:
+       case MMOP_ONLINE_KERNEL:
+       case MMOP_ONLINE_MOVABLE:
+       case MMOP_ONLINE_KEEP:
                /*
                 * mem->online_type is not protected so there can be a
                 * race here.  However, when racing online, the first
@@ -342,7 +342,7 @@ store_mem_state(struct device *dev,
                mem->online_type = online_type;
                ret = device_online(&mem->dev);
                break;
-       case -1:
+       case MMOP_OFFLINE:
                ret = device_offline(&mem->dev);
                break;
        default:
@@ -406,7 +406,9 @@ memory_probe_store(struct device *dev, struct device_attribute *attr,
        int i, ret;
        unsigned long pages_per_block = PAGES_PER_SECTION * sections_per_block;
 
-       phys_addr = simple_strtoull(buf, NULL, 0);
+       ret = kstrtoull(buf, 0, &phys_addr);
+       if (ret)
+               return ret;
 
        if (phys_addr & ((pages_per_block << PAGE_SHIFT) - 1))
                return -EINVAL;