net: ibm: emac: mal: use devm for kzalloc
authorRosen Penev <rosenp@gmail.com>
Wed, 30 Oct 2024 20:37:25 +0000 (13:37 -0700)
committerJakub Kicinski <kuba@kernel.org>
Sun, 3 Nov 2024 22:37:43 +0000 (14:37 -0800)
Simplifies the probe function by removing gotos.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://patch.msgid.link/20241030203727.6039-11-rosenp@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/ibm/emac/mal.c

index c634534710d97e62d55b8525c6a33fdd80f71bf2..f1f5e805ebbac3d58dd88524ae6f3385b757f2db 100644 (file)
@@ -524,7 +524,8 @@ static int mal_probe(struct platform_device *ofdev)
        unsigned long irqflags;
        irq_handler_t hdlr_serr, hdlr_txde, hdlr_rxde;
 
-       mal = kzalloc(sizeof(struct mal_instance), GFP_KERNEL);
+       mal = devm_kzalloc(&ofdev->dev, sizeof(struct mal_instance),
+                          GFP_KERNEL);
        if (!mal)
                return -ENOMEM;
 
@@ -539,8 +540,7 @@ static int mal_probe(struct platform_device *ofdev)
                printk(KERN_ERR
                       "mal%d: can't find MAL num-tx-chans property!\n",
                       index);
-               err = -ENODEV;
-               goto fail;
+               return -ENODEV;
        }
        mal->num_tx_chans = prop[0];
 
@@ -549,8 +549,7 @@ static int mal_probe(struct platform_device *ofdev)
                printk(KERN_ERR
                       "mal%d: can't find MAL num-rx-chans property!\n",
                       index);
-               err = -ENODEV;
-               goto fail;
+               return -ENODEV;
        }
        mal->num_rx_chans = prop[0];
 
@@ -558,15 +557,13 @@ static int mal_probe(struct platform_device *ofdev)
        if (dcr_base == 0) {
                printk(KERN_ERR
                       "mal%d: can't find DCR resource!\n", index);
-               err = -ENODEV;
-               goto fail;
+               return -ENODEV;
        }
        mal->dcr_host = dcr_map(ofdev->dev.of_node, dcr_base, 0x100);
        if (!DCR_MAP_OK(mal->dcr_host)) {
                printk(KERN_ERR
                       "mal%d: failed to map DCRs !\n", index);
-               err = -ENODEV;
-               goto fail;
+               return -ENODEV;
        }
 
        if (of_device_is_compatible(ofdev->dev.of_node, "ibm,mcmal-405ez")) {
@@ -711,9 +708,6 @@ static int mal_probe(struct platform_device *ofdev)
        free_netdev(mal->dummy_dev);
  fail_unmap:
        dcr_unmap(mal->dcr_host, 0x100);
- fail:
-       kfree(mal);
-
        return err;
 }
 
@@ -746,10 +740,9 @@ static void mal_remove(struct platform_device *ofdev)
 
        dma_free_coherent(&ofdev->dev,
                          sizeof(struct mal_descriptor) *
-                         (NUM_TX_BUFF * mal->num_tx_chans +
-                          NUM_RX_BUFF * mal->num_rx_chans), mal->bd_virt,
-                         mal->bd_dma);
-       kfree(mal);
+                                 (NUM_TX_BUFF * mal->num_tx_chans +
+                                  NUM_RX_BUFF * mal->num_rx_chans),
+                         mal->bd_virt, mal->bd_dma);
 }
 
 static const struct of_device_id mal_platform_match[] =