MALI: utgard: upgrade DDK to r6p1-01rel0
[firefly-linux-kernel-4.4.55.git] / kernel / memremap.c
index 7658d32c5c78aa6343ac8cd669070084d1cd3805..f719c925cb543487598558fbbfcdbe1b078203c1 100644 (file)
@@ -111,7 +111,7 @@ EXPORT_SYMBOL(memunmap);
 
 static void devm_memremap_release(struct device *dev, void *res)
 {
-       memunmap(res);
+       memunmap(*(void **)res);
 }
 
 static int devm_memremap_match(struct device *dev, void *res, void *match_data)
@@ -133,8 +133,10 @@ void *devm_memremap(struct device *dev, resource_size_t offset,
        if (addr) {
                *ptr = addr;
                devres_add(dev, ptr);
-       } else
+       } else {
                devres_free(ptr);
+               return ERR_PTR(-ENXIO);
+       }
 
        return addr;
 }
@@ -157,7 +159,9 @@ static void devm_memremap_pages_release(struct device *dev, void *res)
        struct page_map *page_map = res;
 
        /* pages are dead and unused, undo the arch mapping */
+       mem_hotplug_begin();
        arch_remove_memory(page_map->res.start, resource_size(&page_map->res));
+       mem_hotplug_done();
 }
 
 void *devm_memremap_pages(struct device *dev, struct resource *res)
@@ -187,7 +191,9 @@ void *devm_memremap_pages(struct device *dev, struct resource *res)
        if (nid < 0)
                nid = numa_mem_id();
 
+       mem_hotplug_begin();
        error = arch_add_memory(nid, res->start, resource_size(res), true);
+       mem_hotplug_done();
        if (error) {
                devres_free(page_map);
                return ERR_PTR(error);