regmap: Check for out-of-range offsets before mapping them
authorPratyush Yadav <p.yadav@ti.com>
Tue, 26 May 2020 12:05:57 +0000 (17:35 +0530)
committerSimon Glass <sjg@chromium.org>
Fri, 12 Jun 2020 02:52:11 +0000 (20:52 -0600)
commitb59889bf344dd261b50d69a5eacfa2874573c7cd
tree478044461c720639bf8ee9abfc511ed9fc194678
parent42a768c6892ba3bdedea75a430dff234fddffc8d
regmap: Check for out-of-range offsets before mapping them

In regmap_raw_{read,write}_range(), offsets are checked to make sure
they aren't out of range. But this check happens _after_ the address is
mapped from physical memory. Input should be sanity-checked before using
it. Mapping the address before validating it leaves the door open to
passing an invalid address to map_physmem(). So check for out of range
offsets _before_ mapping them.

This fixes a segmentation fault in sandbox when -1 is used as an offset
to regmap_{read,write}().

Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
drivers/core/regmap.c