mirror of
https://github.com/torvalds/linux.git
synced 2026-01-25 15:03:52 +08:00
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>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
822d66c45e
commit
8dde8fa0cc
@@ -4,6 +4,7 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/cleanup.h>
|
||||
#include <linux/gfp.h>
|
||||
|
||||
#define FW_ACTION_NOUEVENT 0
|
||||
@@ -198,4 +199,6 @@ static inline void firmware_upload_unregister(struct fw_upload *fw_upload)
|
||||
|
||||
int firmware_request_cache(struct device *device, const char *name);
|
||||
|
||||
DEFINE_FREE(firmware, struct firmware *, release_firmware(_T))
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user