| .. | .. |
|---|
| 270 | 270 | { |
|---|
| 271 | 271 | ray_dev_t *local; |
|---|
| 272 | 272 | struct net_device *dev; |
|---|
| 273 | + int ret; |
|---|
| 273 | 274 | |
|---|
| 274 | 275 | dev_dbg(&p_dev->dev, "ray_attach()\n"); |
|---|
| 275 | 276 | |
|---|
| 276 | 277 | /* Allocate space for private device-specific data */ |
|---|
| 277 | 278 | dev = alloc_etherdev(sizeof(ray_dev_t)); |
|---|
| 278 | 279 | if (!dev) |
|---|
| 279 | | - goto fail_alloc_dev; |
|---|
| 280 | + return -ENOMEM; |
|---|
| 280 | 281 | |
|---|
| 281 | 282 | local = netdev_priv(dev); |
|---|
| 282 | 283 | local->finder = p_dev; |
|---|
| .. | .. |
|---|
| 313 | 314 | timer_setup(&local->timer, NULL, 0); |
|---|
| 314 | 315 | |
|---|
| 315 | 316 | this_device = p_dev; |
|---|
| 316 | | - return ray_config(p_dev); |
|---|
| 317 | + ret = ray_config(p_dev); |
|---|
| 318 | + if (ret) |
|---|
| 319 | + goto err_free_dev; |
|---|
| 317 | 320 | |
|---|
| 318 | | -fail_alloc_dev: |
|---|
| 319 | | - return -ENOMEM; |
|---|
| 320 | | -} /* ray_attach */ |
|---|
| 321 | + return 0; |
|---|
| 322 | + |
|---|
| 323 | +err_free_dev: |
|---|
| 324 | + free_netdev(dev); |
|---|
| 325 | + return ret; |
|---|
| 326 | +} |
|---|
| 321 | 327 | |
|---|
| 322 | 328 | static void ray_detach(struct pcmcia_device *link) |
|---|
| 323 | 329 | { |
|---|
| .. | .. |
|---|
| 1641 | 1647 | /*===========================================================================*/ |
|---|
| 1642 | 1648 | static int parse_addr(char *in_str, UCHAR *out) |
|---|
| 1643 | 1649 | { |
|---|
| 1650 | + int i, k; |
|---|
| 1644 | 1651 | int len; |
|---|
| 1645 | | - int i, j, k; |
|---|
| 1646 | | - int status; |
|---|
| 1647 | 1652 | |
|---|
| 1648 | 1653 | if (in_str == NULL) |
|---|
| 1649 | 1654 | return 0; |
|---|
| 1650 | | - if ((len = strlen(in_str)) < 2) |
|---|
| 1655 | + len = strnlen(in_str, ADDRLEN * 2 + 1) - 1; |
|---|
| 1656 | + if (len < 1) |
|---|
| 1651 | 1657 | return 0; |
|---|
| 1652 | 1658 | memset(out, 0, ADDRLEN); |
|---|
| 1653 | 1659 | |
|---|
| 1654 | | - status = 1; |
|---|
| 1655 | | - j = len - 1; |
|---|
| 1656 | | - if (j > 12) |
|---|
| 1657 | | - j = 12; |
|---|
| 1658 | 1660 | i = 5; |
|---|
| 1659 | 1661 | |
|---|
| 1660 | | - while (j > 0) { |
|---|
| 1661 | | - if ((k = hex_to_bin(in_str[j--])) != -1) |
|---|
| 1662 | + while (len > 0) { |
|---|
| 1663 | + if ((k = hex_to_bin(in_str[len--])) != -1) |
|---|
| 1662 | 1664 | out[i] = k; |
|---|
| 1663 | 1665 | else |
|---|
| 1664 | 1666 | return 0; |
|---|
| 1665 | 1667 | |
|---|
| 1666 | | - if (j == 0) |
|---|
| 1668 | + if (len == 0) |
|---|
| 1667 | 1669 | break; |
|---|
| 1668 | | - if ((k = hex_to_bin(in_str[j--])) != -1) |
|---|
| 1670 | + if ((k = hex_to_bin(in_str[len--])) != -1) |
|---|
| 1669 | 1671 | out[i] += k << 4; |
|---|
| 1670 | 1672 | else |
|---|
| 1671 | 1673 | return 0; |
|---|
| 1672 | 1674 | if (!i--) |
|---|
| 1673 | 1675 | break; |
|---|
| 1674 | 1676 | } |
|---|
| 1675 | | - return status; |
|---|
| 1677 | + return 1; |
|---|
| 1676 | 1678 | } |
|---|
| 1677 | 1679 | |
|---|
| 1678 | 1680 | /*===========================================================================*/ |
|---|