]> git.hungrycats.org Git - linux/commitdiff
ASoC: SDCA: Use auto-cleanup for firmware loading
authorTakashi Iwai <tiwai@suse.de>
Thu, 6 Aug 2026 14:00:02 +0000 (16:00 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 10 Aug 2026 14:34:16 +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: Charles Keepax <ckeepax@opensource.cirrus.com>
Cc: Maciej Strozek <mstrozek@opensource.cirrus.com>
Cc: Bard Liao <yung-chuan.liao@linux.intel.com>
Cc: Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Tested-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20260806140006.1412298-31-tiwai@suse.de
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sdca/sdca_fdl.c

index dbe572336f8ca7083b0653809b1742beec7d47bd..150e36ed24bcc7823ab7d03a9c72f2b671580605 100644 (file)
@@ -195,7 +195,6 @@ static int fdl_load_file(struct sdca_interrupt *interrupt,
 {
        struct device *dev = interrupt->dev;
        struct sdca_fdl_data *fdl_data = &interrupt->function->fdl_data;
-       const struct firmware *firmware = NULL;
        struct acpi_sw_file *swf = NULL, *tmp;
        struct sdca_fdl_file *fdl_file;
        char *disk_filename;
@@ -230,6 +229,7 @@ static int fdl_load_file(struct sdca_interrupt *interrupt,
 
        dev_dbg(dev, "FDL disk filename: %s\n", disk_filename);
 
+       const struct firmware *firmware __free(firmware) = NULL;
        ret = firmware_request_nowarn(&firmware, disk_filename, dev);
        kfree(disk_filename);
        if (ret) {
@@ -258,8 +258,7 @@ static int fdl_load_file(struct sdca_interrupt *interrupt,
 
        if (!swf) {
                dev_err(dev, "failed to locate SWF\n");
-               ret = -ENOENT;
-               goto error;
+               return -ENOENT;
        }
 
        dev_info(dev, "loading SWF: %x-%x-%x\n",
@@ -271,9 +270,6 @@ static int fdl_load_file(struct sdca_interrupt *interrupt,
                                     SDCA_CTL_XU_FDL_MESSAGEOFFSET, fdl_file->fdl_offset,
                                     SDCA_CTL_XU_FDL_MESSAGELENGTH, swf->data,
                                     swf->file_length - offsetof(struct acpi_sw_file, data));
-
-error:
-       release_firmware(firmware);
        return ret;
 }