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: David Woodhouse <dwmw2@infradead.org>
This commit is contained in:
David Woodhouse 2008-05-31 15:20:37 +03:00 committed by David Woodhouse
parent bacfe09dd7
commit f1485f3deb

View file

@ -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)
} }
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__ */