diff options
| author | Dmitry Torokhov <[email protected]> | 2024-01-17 00:33:07 -0800 |
|---|---|---|
| committer | Greg Kroah-Hartman <[email protected]> | 2024-03-07 22:02:12 +0000 |
| commit | 8dde8fa0cc3edce73c050b9882d06c1a575f6402 (patch) | |
| tree | 7b0d84904da9ba2e4dd4c4c2cc41bfd437c6abca /drivers/platform/surface/aggregator/ssh_packet_layer.c | |
| parent | 822d66c45e793240a9888463127059558bbe9c0d (diff) | |
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 <[email protected]>
Acked-by: Luis Chamberalin <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Diffstat (limited to 'drivers/platform/surface/aggregator/ssh_packet_layer.c')
0 files changed, 0 insertions, 0 deletions