diff options
author | Andrew Murray <andrew.murray@arm.com> | 2018-09-13 13:48:27 +0100 |
---|---|---|
committer | Will Deacon <will.deacon@arm.com> | 2018-09-14 09:49:21 +0100 |
commit | 500dd232449e7c07500e713dc6970aa713f8e4f1 (patch) | |
tree | dc6b3eece9f99bccb2b4f1d573531c95c3acedf5 /include/net/fq.h | |
parent | 84c57dbd3c480fb2730c393a2cef994ddb4f42cc (diff) | |
download | linux-500dd232449e7c07500e713dc6970aa713f8e4f1.tar.bz2 |
asm-generic: io: Fix ioport_map() for !CONFIG_GENERIC_IOMAP && CONFIG_INDIRECT_PIO
The !CONFIG_GENERIC_IOMAP version of ioport_map uses MMIO_UPPER_LIMIT to
prevent users from making I/O accesses outside the expected I/O range -
however it erroneously treats MMIO_UPPER_LIMIT as a mask which is
contradictory to its other users.
The introduction of CONFIG_INDIRECT_PIO, which subtracts an arbitrary
amount from IO_SPACE_LIMIT to form MMIO_UPPER_LIMIT, results in ioport_map
mangling the given port rather than capping it.
We address this by aligning more closely with the CONFIG_GENERIC_IOMAP
implementation of ioport_map by using the comparison operator and
returning NULL where the port exceeds MMIO_UPPER_LIMIT. Though note that
we preserve the existing behavior of masking with IO_SPACE_LIMIT such that
we don't break existing buggy drivers that somehow rely on this masking.
Fixes: 5745392e0c2b ("PCI: Apply the new generic I/O management on PCI IO hosts")
Reported-by: Will Deacon <will.deacon@arm.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Andrew Murray <andrew.murray@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'include/net/fq.h')
0 files changed, 0 insertions, 0 deletions