regmap: debugfs: Fix continued read from registers file
authorLars-Peter Clausen <lars@metafoo.de>
Wed, 28 Aug 2013 15:55:07 +0000 (17:55 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Sep 2013 00:21:38 +0000 (17:21 -0700)
commit6bcda1654a21aef4165158ae81e6e4ea3d137c06
tree4cd3c1dc55f0ef01bef374fb0044f6ba00fe8828
parentba2c8d61de2f980eff2f2195cc048139cb012ae0
regmap: debugfs: Fix continued read from registers file

commit 26ee47411ae22caa07d3f3b63ca6d097cba6681b upstream.

The regmap_debugfs_get_dump_start() function maps from a file offset to the
register that can be found at that position in the file. This is done using a
look-up table. Commit d6814a7d ("regmap: debugfs: Suppress cache for partial
register files") added a check to bypass the look-up table for partial register
files, since the offsets in that table are only correct for the full register
file. The check incorrectly uses the file offset instead of the register base
address and returns it. This will cause the file offset to be interpreted as a
register address which will result in a incorrect output from the registers file
for all reads except at position 0.

The issue can easily be reproduced by doing small reads the registers file, e.g.
`dd if=registers bs=10 count=5`.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/regmap/regmap-debugfs.c