Commit 28ec24e2 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] driver/base/memory.c: handle errors properly

Do proper error-checking and propagation in drivers/base/memory.c, hence fix
__must_check warnings.

Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 0d75565f
...@@ -290,9 +290,8 @@ static CLASS_ATTR(block_size_bytes, 0444, print_block_size, NULL); ...@@ -290,9 +290,8 @@ static CLASS_ATTR(block_size_bytes, 0444, print_block_size, NULL);
static int block_size_init(void) static int block_size_init(void)
{ {
sysfs_create_file(&memory_sysdev_class.kset.kobj, return sysfs_create_file(&memory_sysdev_class.kset.kobj,
&class_attr_block_size_bytes.attr); &class_attr_block_size_bytes.attr);
return 0;
} }
/* /*
...@@ -323,12 +322,14 @@ static CLASS_ATTR(probe, 0700, NULL, memory_probe_store); ...@@ -323,12 +322,14 @@ static CLASS_ATTR(probe, 0700, NULL, memory_probe_store);
static int memory_probe_init(void) static int memory_probe_init(void)
{ {
sysfs_create_file(&memory_sysdev_class.kset.kobj, return sysfs_create_file(&memory_sysdev_class.kset.kobj,
&class_attr_probe.attr); &class_attr_probe.attr);
return 0;
} }
#else #else
#define memory_probe_init(...) do {} while (0) static inline int memory_probe_init(void)
{
return 0;
}
#endif #endif
/* /*
...@@ -431,9 +432,12 @@ int __init memory_dev_init(void) ...@@ -431,9 +432,12 @@ int __init memory_dev_init(void)
{ {
unsigned int i; unsigned int i;
int ret; int ret;
int err;
memory_sysdev_class.kset.uevent_ops = &memory_uevent_ops; memory_sysdev_class.kset.uevent_ops = &memory_uevent_ops;
ret = sysdev_class_register(&memory_sysdev_class); ret = sysdev_class_register(&memory_sysdev_class);
if (ret)
goto out;
/* /*
* Create entries for memory sections that were found * Create entries for memory sections that were found
...@@ -442,11 +446,19 @@ int __init memory_dev_init(void) ...@@ -442,11 +446,19 @@ int __init memory_dev_init(void)
for (i = 0; i < NR_MEM_SECTIONS; i++) { for (i = 0; i < NR_MEM_SECTIONS; i++) {
if (!valid_section_nr(i)) if (!valid_section_nr(i))
continue; continue;
add_memory_block(0, __nr_to_section(i), MEM_ONLINE, 0); err = add_memory_block(0, __nr_to_section(i), MEM_ONLINE, 0);
if (!ret)
ret = err;
} }
memory_probe_init(); err = memory_probe_init();
block_size_init(); if (!ret)
ret = err;
err = block_size_init();
if (!ret)
ret = err;
out:
if (ret)
printk(KERN_ERR "%s() failed: %d\n", __FUNCTION__, ret);
return ret; return ret;
} }
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