smc91c92_cs: fix the problem of "Unable to find hardware address"
smc91c92_cs: *cvt_ascii_address returns 0, if success. *call free_netdev, if we can't find hardware address. Signed-off-by: Ken Kawasaki <ken_kawasaki@spring.nifty.jp> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
93f4d91d87
commit
fb9e2d8872
@@ -493,13 +493,14 @@ static int pcmcia_get_versmac(struct pcmcia_device *p_dev,
|
|||||||
{
|
{
|
||||||
struct net_device *dev = priv;
|
struct net_device *dev = priv;
|
||||||
cisparse_t parse;
|
cisparse_t parse;
|
||||||
|
u8 *buf;
|
||||||
|
|
||||||
if (pcmcia_parse_tuple(tuple, &parse))
|
if (pcmcia_parse_tuple(tuple, &parse))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if ((parse.version_1.ns > 3) &&
|
buf = parse.version_1.str + parse.version_1.ofs[3];
|
||||||
(cvt_ascii_address(dev,
|
|
||||||
(parse.version_1.str + parse.version_1.ofs[3]))))
|
if ((parse.version_1.ns > 3) && (cvt_ascii_address(dev, buf) == 0))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -528,7 +529,7 @@ static int mhz_setup(struct pcmcia_device *link)
|
|||||||
len = pcmcia_get_tuple(link, 0x81, &buf);
|
len = pcmcia_get_tuple(link, 0x81, &buf);
|
||||||
if (buf && len >= 13) {
|
if (buf && len >= 13) {
|
||||||
buf[12] = '\0';
|
buf[12] = '\0';
|
||||||
if (cvt_ascii_address(dev, buf))
|
if (cvt_ascii_address(dev, buf) == 0)
|
||||||
rc = 0;
|
rc = 0;
|
||||||
}
|
}
|
||||||
kfree(buf);
|
kfree(buf);
|
||||||
@@ -910,7 +911,7 @@ static int smc91c92_config(struct pcmcia_device *link)
|
|||||||
|
|
||||||
if (i != 0) {
|
if (i != 0) {
|
||||||
printk(KERN_NOTICE "smc91c92_cs: Unable to find hardware address.\n");
|
printk(KERN_NOTICE "smc91c92_cs: Unable to find hardware address.\n");
|
||||||
goto config_undo;
|
goto config_failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
smc->duplex = 0;
|
smc->duplex = 0;
|
||||||
@@ -998,6 +999,7 @@ config_undo:
|
|||||||
unregister_netdev(dev);
|
unregister_netdev(dev);
|
||||||
config_failed:
|
config_failed:
|
||||||
smc91c92_release(link);
|
smc91c92_release(link);
|
||||||
|
free_netdev(dev);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
} /* smc91c92_config */
|
} /* smc91c92_config */
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user