]> git.hungrycats.org Git - linux/commitdiff
ASoC: Intel: catpt: Use auto-cleanup for firmware loading
authorTakashi Iwai <tiwai@suse.de>
Thu, 6 Aug 2026 13:59:59 +0000 (15:59 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 10 Aug 2026 14:34:13 +0000 (15:34 +0100)
Simplify the code to manage the firmware loading with __free(firmware)
auto-cleanup.

Only the code refactoring, no functional changes.

Cc: Cezary Rojewski <cezary.rojewski@intel.com>
Acked-by: Cezary Rojewski <cezary.rojewski@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20260806140006.1412298-28-tiwai@suse.de
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/catpt/loader.c

index e7ba9e1e60ae13030b0e33aad6ef0afda078a8ea..724cbe337db419a8511538e0498eba4a9ca6e44c 100644 (file)
@@ -568,27 +568,24 @@ static int catpt_request_load_firmware(struct catpt_dev *cdev, struct dma_chan *
                                       const char *name, bool restore)
 {
        struct catpt_fw_hdr *fw;
-       struct firmware *img;
        dma_addr_t paddr;
        void *vaddr;
        int ret;
 
-       ret = request_firmware((const struct firmware **)&img, name, cdev->dev);
+       const struct firmware *img __free(firmware) = NULL;
+       ret = request_firmware(&img, name, cdev->dev);
        if (ret)
                return ret;
 
        fw = (struct catpt_fw_hdr *)img->data;
        if (strncmp(fw->signature, FW_SIGNATURE, FW_SIGNATURE_SIZE)) {
                dev_err(cdev->dev, "firmware signature mismatch\n");
-               ret = -EINVAL;
-               goto release_fw;
+               return -EINVAL;
        }
 
        vaddr = dma_alloc_coherent(cdev->dev, img->size, &paddr, GFP_KERNEL);
-       if (!vaddr) {
-               ret = -ENOMEM;
-               goto release_fw;
-       }
+       if (!vaddr)
+               return -ENOMEM;
 
        memcpy(vaddr, img->data, img->size);
        fw = (struct catpt_fw_hdr *)vaddr;
@@ -598,8 +595,6 @@ static int catpt_request_load_firmware(struct catpt_dev *cdev, struct dma_chan *
                ret = catpt_load_firmware(cdev, chan, paddr, fw);
 
        dma_free_coherent(cdev->dev, img->size, vaddr, paddr);
-release_fw:
-       release_firmware(img);
        return ret;
 }