diff options
Diffstat (limited to 'drivers/base/memory.c')
-rw-r--r-- | drivers/base/memory.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/base/memory.c b/drivers/base/memory.c index bffe8616bd55..f5e560188a18 100644 --- a/drivers/base/memory.c +++ b/drivers/base/memory.c | |||
@@ -649,13 +649,19 @@ static const struct attribute_group *memory_memblk_attr_groups[] = { | |||
649 | static | 649 | static |
650 | int register_memory(struct memory_block *memory) | 650 | int register_memory(struct memory_block *memory) |
651 | { | 651 | { |
652 | int ret; | ||
653 | |||
652 | memory->dev.bus = &memory_subsys; | 654 | memory->dev.bus = &memory_subsys; |
653 | memory->dev.id = memory->start_section_nr / sections_per_block; | 655 | memory->dev.id = memory->start_section_nr / sections_per_block; |
654 | memory->dev.release = memory_block_release; | 656 | memory->dev.release = memory_block_release; |
655 | memory->dev.groups = memory_memblk_attr_groups; | 657 | memory->dev.groups = memory_memblk_attr_groups; |
656 | memory->dev.offline = memory->state == MEM_OFFLINE; | 658 | memory->dev.offline = memory->state == MEM_OFFLINE; |
657 | 659 | ||
658 | return device_register(&memory->dev); | 660 | ret = device_register(&memory->dev); |
661 | if (ret) | ||
662 | put_device(&memory->dev); | ||
663 | |||
664 | return ret; | ||
659 | } | 665 | } |
660 | 666 | ||
661 | static int init_memory_block(struct memory_block **memory, | 667 | static int init_memory_block(struct memory_block **memory, |