diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-09 18:25:45 (GMT) |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-09 18:25:45 (GMT) |
commit | 22b6dd78aec32abf38d9b187dea2e0a8b28aa186 (patch) | |
tree | 2298894b174ae00b86d7ab54e4c4bdec627ba163 | |
parent | 63f4711aec01586e92c26da08a24bff0b8d16aa2 (diff) | |
parent | 6560ffd1ccd688152393dc7c35dbdcc33140633b (diff) | |
download | linux-22b6dd78aec32abf38d9b187dea2e0a8b28aa186.tar.xz |
Merge tag 'regmap-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap
Pull last minute regman bug fix from Mark Brown:
"This is a last minute bug fix that was only just noticed since the
code path that's being exercised here is one that is fairly rarely
used. The changelog for the change itself is extremely clear and the
code itself is obvious to inspection so should be pretty safe."
* tag 'regmap-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap:
regmap: fix possible memory corruption in regmap_bulk_read()
-rw-r--r-- | drivers/base/regmap/regmap.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c index 7a3f535..bb80853 100644 --- a/drivers/base/regmap/regmap.c +++ b/drivers/base/regmap/regmap.c @@ -775,9 +775,11 @@ int regmap_bulk_read(struct regmap *map, unsigned int reg, void *val, map->format.parse_val(val + i); } else { for (i = 0; i < val_count; i++) { - ret = regmap_read(map, reg + i, val + (i * val_bytes)); + unsigned int ival; + ret = regmap_read(map, reg + i, &ival); if (ret != 0) return ret; + memcpy(val + (i * val_bytes), &ival, val_bytes); } } |