projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sched: Add group_misfit_task load-balance type
[firefly-linux-kernel-4.4.55.git]
/
kernel
/
memremap.c
diff --git
a/kernel/memremap.c
b/kernel/memremap.c
index 9d6b55587eaa59a25c38776e43aeff51ba682c40..25ced161ebebb1ad58626cba853dc472db8f1caa 100644
(file)
--- a/
kernel/memremap.c
+++ b/
kernel/memremap.c
@@
-111,7
+111,7
@@
EXPORT_SYMBOL(memunmap);
static void devm_memremap_release(struct device *dev, void *res)
{
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)
}
static int devm_memremap_match(struct device *dev, void *res, void *match_data)
@@
-124,16
+124,19
@@
void *devm_memremap(struct device *dev, resource_size_t offset,
{
void **ptr, *addr;
{
void **ptr, *addr;
- ptr = devres_alloc(devm_memremap_release, sizeof(*ptr), GFP_KERNEL);
+ ptr = devres_alloc_node(devm_memremap_release, sizeof(*ptr), GFP_KERNEL,
+ dev_to_node(dev));
if (!ptr)
if (!ptr)
- return
NULL
;
+ return
ERR_PTR(-ENOMEM)
;
addr = memremap(offset, size, flags);
if (addr) {
*ptr = addr;
devres_add(dev, ptr);
addr = memremap(offset, size, flags);
if (addr) {
*ptr = addr;
devres_add(dev, ptr);
- } else
+ } else
{
devres_free(ptr);
devres_free(ptr);
+ return ERR_PTR(-ENXIO);
+ }
return addr;
}
return addr;
}
@@
-141,9
+144,8
@@
EXPORT_SYMBOL(devm_memremap);
void devm_memunmap(struct device *dev, void *addr)
{
void devm_memunmap(struct device *dev, void *addr)
{
- WARN_ON(devres_destroy(dev, devm_memremap_release, devm_memremap_match,
- addr));
- memunmap(addr);
+ WARN_ON(devres_release(dev, devm_memremap_release,
+ devm_memremap_match, addr));
}
EXPORT_SYMBOL(devm_memunmap);
}
EXPORT_SYMBOL(devm_memunmap);
@@
-176,8
+178,8
@@
void *devm_memremap_pages(struct device *dev, struct resource *res)
if (is_ram == REGION_INTERSECTS)
return __va(res->start);
if (is_ram == REGION_INTERSECTS)
return __va(res->start);
- page_map = devres_alloc(devm_memremap_pages_release,
- sizeof(*page_map), GFP_KERNEL);
+ page_map = devres_alloc
_node
(devm_memremap_pages_release,
+ sizeof(*page_map), GFP_KERNEL
, dev_to_node(dev)
);
if (!page_map)
return ERR_PTR(-ENOMEM);
if (!page_map)
return ERR_PTR(-ENOMEM);
@@
-185,7
+187,7
@@
void *devm_memremap_pages(struct device *dev, struct resource *res)
nid = dev_to_node(dev);
if (nid < 0)
nid = dev_to_node(dev);
if (nid < 0)
- nid =
0
;
+ nid =
numa_mem_id()
;
error = arch_add_memory(nid, res->start, resource_size(res), true);
if (error) {
error = arch_add_memory(nid, res->start, resource_size(res), true);
if (error) {