ASoC: Intel: catpt: Use auto-cleanup for firmware loading

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>
This commit is contained in:
Takashi Iwai 2026-08-06 15:59:59 +02:00 committed by Mark Brown
parent 6a052cf54f
commit a0dae90ea9
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0

View 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;
}