Commit 6f754ba4 authored by Vitaly Kuznetsov's avatar Vitaly Kuznetsov Committed by Linus Torvalds

memory-hotplug: don't BUG() in register_memory_resource()

Out of memory condition is not a bug and while we can't add new memory
in such case crashing the system seems wrong.  Propagating the return
value from register_memory_resource() requires interface change.
Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
Reviewed-by: default avatarIgor Mammedov <imammedo@redhat.com>
Acked-by: default avatarDavid Rientjes <rientjes@google.com>
Cc: Tang Chen <tangchen@cn.fujitsu.com>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Xishi Qiu <qiuxishi@huawei.com>
Cc: Sheng Yong <shengyong1@huawei.com>
Cc: Zhu Guihua <zhugh.fnst@cn.fujitsu.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: David Vrabel <david.vrabel@citrix.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 3e89e1c5
...@@ -131,7 +131,8 @@ static struct resource *register_memory_resource(u64 start, u64 size) ...@@ -131,7 +131,8 @@ static struct resource *register_memory_resource(u64 start, u64 size)
{ {
struct resource *res; struct resource *res;
res = kzalloc(sizeof(struct resource), GFP_KERNEL); res = kzalloc(sizeof(struct resource), GFP_KERNEL);
BUG_ON(!res); if (!res)
return ERR_PTR(-ENOMEM);
res->name = "System RAM"; res->name = "System RAM";
res->start = start; res->start = start;
...@@ -140,7 +141,7 @@ static struct resource *register_memory_resource(u64 start, u64 size) ...@@ -140,7 +141,7 @@ static struct resource *register_memory_resource(u64 start, u64 size)
if (request_resource(&iomem_resource, res) < 0) { if (request_resource(&iomem_resource, res) < 0) {
pr_debug("System RAM resource %pR cannot be added\n", res); pr_debug("System RAM resource %pR cannot be added\n", res);
kfree(res); kfree(res);
res = NULL; return ERR_PTR(-EEXIST);
} }
return res; return res;
} }
...@@ -1312,8 +1313,8 @@ int __ref add_memory(int nid, u64 start, u64 size) ...@@ -1312,8 +1313,8 @@ int __ref add_memory(int nid, u64 start, u64 size)
int ret; int ret;
res = register_memory_resource(start, size); res = register_memory_resource(start, size);
if (!res) if (IS_ERR(res))
return -EEXIST; return PTR_ERR(res);
ret = add_memory_resource(nid, res); ret = add_memory_resource(nid, res);
if (ret < 0) if (ret < 0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment