mirror of
https://github.com/torvalds/linux
synced 2024-09-22 12:26:27 +00:00
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:
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 @@ static int smc91c92_config(struct pcmcia_device *link)
|
||||||
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 */
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue