hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/net/wireless/ray_cs.c
....@@ -270,13 +270,14 @@
270270 {
271271 ray_dev_t *local;
272272 struct net_device *dev;
273
+ int ret;
273274
274275 dev_dbg(&p_dev->dev, "ray_attach()\n");
275276
276277 /* Allocate space for private device-specific data */
277278 dev = alloc_etherdev(sizeof(ray_dev_t));
278279 if (!dev)
279
- goto fail_alloc_dev;
280
+ return -ENOMEM;
280281
281282 local = netdev_priv(dev);
282283 local->finder = p_dev;
....@@ -313,11 +314,16 @@
313314 timer_setup(&local->timer, NULL, 0);
314315
315316 this_device = p_dev;
316
- return ray_config(p_dev);
317
+ ret = ray_config(p_dev);
318
+ if (ret)
319
+ goto err_free_dev;
317320
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
+}
321327
322328 static void ray_detach(struct pcmcia_device *link)
323329 {
....@@ -1641,38 +1647,34 @@
16411647 /*===========================================================================*/
16421648 static int parse_addr(char *in_str, UCHAR *out)
16431649 {
1650
+ int i, k;
16441651 int len;
1645
- int i, j, k;
1646
- int status;
16471652
16481653 if (in_str == NULL)
16491654 return 0;
1650
- if ((len = strlen(in_str)) < 2)
1655
+ len = strnlen(in_str, ADDRLEN * 2 + 1) - 1;
1656
+ if (len < 1)
16511657 return 0;
16521658 memset(out, 0, ADDRLEN);
16531659
1654
- status = 1;
1655
- j = len - 1;
1656
- if (j > 12)
1657
- j = 12;
16581660 i = 5;
16591661
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)
16621664 out[i] = k;
16631665 else
16641666 return 0;
16651667
1666
- if (j == 0)
1668
+ if (len == 0)
16671669 break;
1668
- if ((k = hex_to_bin(in_str[j--])) != -1)
1670
+ if ((k = hex_to_bin(in_str[len--])) != -1)
16691671 out[i] += k << 4;
16701672 else
16711673 return 0;
16721674 if (!i--)
16731675 break;
16741676 }
1675
- return status;
1677
+ return 1;
16761678 }
16771679
16781680 /*===========================================================================*/