firmware_loader: introduce __free() cleanup hanler
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 17 Jan 2024 08:33:07 +0000 (00:33 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 7 Mar 2024 22:02:12 +0000 (22:02 +0000)
commit8dde8fa0cc3edce73c050b9882d06c1a575f6402
tree7b0d84904da9ba2e4dd4c4c2cc41bfd437c6abca
parent822d66c45e793240a9888463127059558bbe9c0d
firmware_loader: introduce __free() cleanup hanler

Define cleanup handler using facilities from linux/cleanup.h to simplify
error handling in code using firmware loader. This will allow writing code
like this:

int driver_update_firmware(...)
{
const struct firmware *fw_entry __free(firmware) = NULL;
int error;

...
error = request_firmware(&fw_entry, fw_name, dev);
if (error) {
dev_err(dev, "failed to request firmware %s: %d",
fw_name, error);
return error;
}

error = check_firmware_valid(fw_entry);
if (error)
return error;

guard(mutex)(&instance->lock);

error = use_firmware(instance, fw);
if (error)
return error;

return 0;
}

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Acked-by: Luis Chamberalin <mcgrof@kernel.org>
Link: https://lore.kernel.org/r/ZaeQw7VXhnirX4pQ@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/linux/firmware.h