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: Amitoj Kaur Chawla <amitoj1606@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
31d035a0d3
commit
37ace20a3c
@ -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)
|
|||||||
|
|
||||||
/* 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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
out1:
|
out1:
|
||||||
kfree(info);
|
kfree(info);
|
||||||
out:
|
out:
|
||||||
return -1;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user