Commit 37ace20a authored by Amitoj Kaur Chawla's avatar Amitoj Kaur Chawla Committed by David S. Miller

dmascc: Return correct error codes

This change has been made with the goal that kernel functions should
return something more descriptive than -1 on failure.

A variable `err` has been introduced for storing error codes.

The return value of kzalloc on failure should return a -1 and not a
-ENOMEM. This was found using Coccinelle. A simplified version of
the semantic patch used is:

//<smpl>
@@
expression *e;
identifier l1;
@@

e = kzalloc(...);
if (e == NULL) {
...
goto l1;
}
l1:
...
return -1
+ -ENOMEM
;
//</smpl

Furthermore, set `err` to -ENOMEM on failure of alloc_netdev(), and to
-ENODEV on failure of register_netdev() and probe_irq_off().

The single call site only checks that the return value is not 0,
hence no change is required at the call site.
Signed-off-by: default avatarAmitoj Kaur Chawla <amitoj1606@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 31d035a0
...@@ -451,7 +451,7 @@ static const struct net_device_ops scc_netdev_ops = { ...@@ -451,7 +451,7 @@ static const struct net_device_ops scc_netdev_ops = {
static int __init setup_adapter(int card_base, int type, int n) static int __init setup_adapter(int card_base, int type, int n)
{ {
int i, irq, chip; int i, irq, chip, err;
struct scc_info *info; struct scc_info *info;
struct net_device *dev; struct net_device *dev;
struct scc_priv *priv; struct scc_priv *priv;
...@@ -463,14 +463,17 @@ static int __init setup_adapter(int card_base, int type, int n) ...@@ -463,14 +463,17 @@ static int __init setup_adapter(int card_base, int type, int n)
/* Initialize what is necessary for write_scc and write_scc_data */ /* Initialize what is necessary for write_scc and write_scc_data */
info = kzalloc(sizeof(struct scc_info), GFP_KERNEL | GFP_DMA); info = kzalloc(sizeof(struct scc_info), GFP_KERNEL | GFP_DMA);
if (!info) if (!info) {
err = -ENOMEM;
goto out; goto out;
}
info->dev[0] = alloc_netdev(0, "", NET_NAME_UNKNOWN, dev_setup); info->dev[0] = alloc_netdev(0, "", NET_NAME_UNKNOWN, dev_setup);
if (!info->dev[0]) { if (!info->dev[0]) {
printk(KERN_ERR "dmascc: " printk(KERN_ERR "dmascc: "
"could not allocate memory for %s at %#3x\n", "could not allocate memory for %s at %#3x\n",
hw[type].name, card_base); hw[type].name, card_base);
err = -ENOMEM;
goto out1; goto out1;
} }
...@@ -479,6 +482,7 @@ static int __init setup_adapter(int card_base, int type, int n) ...@@ -479,6 +482,7 @@ static int __init setup_adapter(int card_base, int type, int n)
printk(KERN_ERR "dmascc: " printk(KERN_ERR "dmascc: "
"could not allocate memory for %s at %#3x\n", "could not allocate memory for %s at %#3x\n",
hw[type].name, card_base); hw[type].name, card_base);
err = -ENOMEM;
goto out2; goto out2;
} }
spin_lock_init(&info->register_lock); spin_lock_init(&info->register_lock);
...@@ -549,6 +553,7 @@ static int __init setup_adapter(int card_base, int type, int n) ...@@ -549,6 +553,7 @@ static int __init setup_adapter(int card_base, int type, int n)
printk(KERN_ERR printk(KERN_ERR
"dmascc: could not find irq of %s at %#3x (irq=%d)\n", "dmascc: could not find irq of %s at %#3x (irq=%d)\n",
hw[type].name, card_base, irq); hw[type].name, card_base, irq);
err = -ENODEV;
goto out3; goto out3;
} }
...@@ -585,11 +590,13 @@ static int __init setup_adapter(int card_base, int type, int n) ...@@ -585,11 +590,13 @@ static int __init setup_adapter(int card_base, int type, int n)
if (register_netdev(info->dev[0])) { if (register_netdev(info->dev[0])) {
printk(KERN_ERR "dmascc: could not register %s\n", printk(KERN_ERR "dmascc: could not register %s\n",
info->dev[0]->name); info->dev[0]->name);
err = -ENODEV;
goto out3; goto out3;
} }
if (register_netdev(info->dev[1])) { if (register_netdev(info->dev[1])) {
printk(KERN_ERR "dmascc: could not register %s\n", printk(KERN_ERR "dmascc: could not register %s\n",
info->dev[1]->name); info->dev[1]->name);
err = -ENODEV;
goto out4; goto out4;
} }
...@@ -612,7 +619,7 @@ static int __init setup_adapter(int card_base, int type, int n) ...@@ -612,7 +619,7 @@ static int __init setup_adapter(int card_base, int type, int n)
out1: out1:
kfree(info); kfree(info);
out: out:
return -1; return err;
} }
......
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