diff options
Diffstat (limited to 'drivers/base/memory.c')
-rw-r--r-- | drivers/base/memory.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/drivers/base/memory.c b/drivers/base/memory.c index 6d7b14c2798e..619fe584a44c 100644 --- a/drivers/base/memory.c +++ b/drivers/base/memory.c | |||
@@ -450,8 +450,7 @@ memory_probe_store(struct device *dev, struct device_attribute *attr, | |||
450 | const char *buf, size_t count) | 450 | const char *buf, size_t count) |
451 | { | 451 | { |
452 | u64 phys_addr; | 452 | u64 phys_addr; |
453 | int nid; | 453 | int nid, ret; |
454 | int i, ret; | ||
455 | unsigned long pages_per_block = PAGES_PER_SECTION * sections_per_block; | 454 | unsigned long pages_per_block = PAGES_PER_SECTION * sections_per_block; |
456 | 455 | ||
457 | ret = kstrtoull(buf, 0, &phys_addr); | 456 | ret = kstrtoull(buf, 0, &phys_addr); |
@@ -461,15 +460,12 @@ memory_probe_store(struct device *dev, struct device_attribute *attr, | |||
461 | if (phys_addr & ((pages_per_block << PAGE_SHIFT) - 1)) | 460 | if (phys_addr & ((pages_per_block << PAGE_SHIFT) - 1)) |
462 | return -EINVAL; | 461 | return -EINVAL; |
463 | 462 | ||
464 | for (i = 0; i < sections_per_block; i++) { | 463 | nid = memory_add_physaddr_to_nid(phys_addr); |
465 | nid = memory_add_physaddr_to_nid(phys_addr); | 464 | ret = add_memory(nid, phys_addr, |
466 | ret = add_memory(nid, phys_addr, | 465 | MIN_MEMORY_BLOCK_SIZE * sections_per_block); |
467 | PAGES_PER_SECTION << PAGE_SHIFT); | ||
468 | if (ret) | ||
469 | goto out; | ||
470 | 466 | ||
471 | phys_addr += MIN_MEMORY_BLOCK_SIZE; | 467 | if (ret) |
472 | } | 468 | goto out; |
473 | 469 | ||
474 | ret = count; | 470 | ret = count; |
475 | out: | 471 | out: |