Skip to content

Commit

Permalink
phram: cleanup error handling and associated messages
Browse files Browse the repository at this point in the history
The error handling in the phram driver is pretty bad -- in many places,
errors are silently ignored or logged, but then still ignored in the
return value.  So convert all of the code to pass back the correct return
value and log error messages properly (and using the new pr_fmt() helper).

If everything does go smoothly, rather than exit silently, dump a helpful
info message like pretty much every other MTD driver does.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Acked-by: Joern Engel <joern@logfs.org>

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
  • Loading branch information
Mike Frysinger authored and David Woodhouse committed Sep 19, 2009
1 parent aa3651e commit 64da392
Showing 1 changed file with 12 additions and 13 deletions.
25 changes: 12 additions & 13 deletions drivers/mtd/devices/phram.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
* Example:
* phram=swap,64Mi,128Mi phram=test,900Mi,1Mi
*/

#define pr_fmt(fmt) "phram: " fmt

#include <asm/io.h>
#include <linux/init.h>
#include <linux/kernel.h>
Expand All @@ -23,8 +26,6 @@
#include <linux/slab.h>
#include <linux/mtd/mtd.h>

#define ERROR(fmt, args...) printk(KERN_ERR "phram: " fmt , ## args)

struct phram_mtd_list {
struct mtd_info mtd;
struct list_head list;
Expand Down Expand Up @@ -132,7 +133,7 @@ static int register_device(char *name, unsigned long start, unsigned long len)
ret = -EIO;
new->mtd.priv = ioremap(start, len);
if (!new->mtd.priv) {
ERROR("ioremap failed\n");
pr_err("ioremap failed\n");
goto out1;
}

Expand All @@ -152,7 +153,7 @@ static int register_device(char *name, unsigned long start, unsigned long len)

ret = -EAGAIN;
if (add_mtd_device(&new->mtd)) {
ERROR("Failed to register new device\n");
pr_err("Failed to register new device\n");
goto out2;
}

Expand Down Expand Up @@ -227,8 +228,8 @@ static inline void kill_final_newline(char *str)


#define parse_err(fmt, args...) do { \
ERROR(fmt , ## args); \
return 0; \
pr_err(fmt , ## args); \
return 1; \
} while (0)

static int phram_setup(const char *val, struct kernel_param *kp)
Expand Down Expand Up @@ -256,12 +257,8 @@ static int phram_setup(const char *val, struct kernel_param *kp)
parse_err("not enough arguments\n");

ret = parse_name(&name, token[0]);
if (ret == -ENOMEM)
parse_err("out of memory\n");
if (ret == -ENOSPC)
parse_err("name too long\n");
if (ret)
return 0;
return ret;

ret = parse_num32(&start, token[1]);
if (ret) {
Expand All @@ -275,9 +272,11 @@ static int phram_setup(const char *val, struct kernel_param *kp)
parse_err("illegal device length\n");
}

register_device(name, start, len);
ret = register_device(name, start, len);
if (!ret)
pr_info("%s device: %#x at %#x\n", name, len, start);

return 0;
return ret;
}

module_param_call(phram, phram_setup, NULL, NULL, 000);
Expand Down

0 comments on commit 64da392

Please sign in to comment.