aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2011-11-28 03:44:14 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-11-29 06:53:53 -0500
commit4f718a29fe4908c2cea782f751e9805319684e2b (patch)
treee4d9d630d4200a40bcc96b2a168828f8fb4ed1df /include
parentfc8e6e8668e74fbf8e00d6e143d7f43b20f73f32 (diff)
firmware: Sigma: Prevent out of bounds memory access
The SigmaDSP firmware loader currently does not perform enough boundary size checks when processing the firmware. As a result it is possible that a malformed firmware can cause an out of bounds memory access. This patch adds checks which ensure that both the action header and the payload are completely inside the firmware data boundaries before processing them. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Acked-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Cc: stable@kernel.org
Diffstat (limited to 'include')
-rw-r--r--include/linux/sigma.h5
1 files changed, 0 insertions, 5 deletions
diff --git a/include/linux/sigma.h b/include/linux/sigma.h
index e2accb3164d8..9a138c2946bb 100644
--- a/include/linux/sigma.h
+++ b/include/linux/sigma.h
@@ -50,11 +50,6 @@ static inline u32 sigma_action_len(struct sigma_action *sa)
50 return (sa->len_hi << 16) | sa->len; 50 return (sa->len_hi << 16) | sa->len;
51} 51}
52 52
53static inline size_t sigma_action_size(struct sigma_action *sa, u32 payload_len)
54{
55 return sizeof(*sa) + payload_len + (payload_len % 2);
56}
57
58extern int process_sigma_firmware(struct i2c_client *client, const char *name); 53extern int process_sigma_firmware(struct i2c_client *client, const char *name);
59 54
60#endif 55#endif