Commit f1485f3d authored by David Woodhouse's avatar David Woodhouse Committed by David Woodhouse

ihex: request_ihex_firmware() function to load and validate firmware

Provide a helper to load the file and validate it in one call, to
simplify error handling in the drivers which are going to use it.
Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
parent bacfe09d
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/firmware.h> #include <linux/firmware.h>
#include <linux/device.h>
/* Intel HEX files actually limit the length to 256 bytes, but we have /* Intel HEX files actually limit the length to 256 bytes, but we have
drivers which would benefit from using separate records which are drivers which would benefit from using separate records which are
...@@ -47,4 +48,27 @@ static inline int ihex_validate_fw(const struct firmware *fw) ...@@ -47,4 +48,27 @@ static inline int ihex_validate_fw(const struct firmware *fw)
} }
return -EINVAL; return -EINVAL;
} }
/* Request firmware and validate it so that we can trust we won't
* run off the end while reading records... */
static inline int request_ihex_firmware(const struct firmware **fw,
const char *fw_name,
struct device *dev)
{
const struct firmware *lfw;
int ret;
ret = request_firmware(&lfw, fw_name, dev);
if (ret)
return ret;
ret = ihex_validate_fw(lfw);
if (ret) {
dev_err(dev, "Firmware \"%s\" not valid IHEX records\n",
fw_name);
release_firmware(lfw);
return ret;
}
*fw = lfw;
return 0;
}
#endif /* __LINUX_IHEX_H__ */ #endif /* __LINUX_IHEX_H__ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment