Andrew Murray
500dd23244
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: 5745392e0c
("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 >
2018-09-14 09:49:21 +01:00
..
2018-06-21 12:52:12 +02:00
2017-11-02 11:10:55 +01:00
2018-02-14 13:11:14 +01:00
2015-06-23 13:35:49 +09:00
2017-11-02 11:10:55 +01:00
2018-06-21 14:25:24 +02:00
2018-07-25 11:53:59 +02:00
2018-05-04 10:02:39 +02:00
2018-06-21 14:25:24 +02:00
2017-11-02 11:10:55 +01:00
2018-01-30 19:07:54 -08:00
2017-11-02 11:10:55 +01:00
2017-11-15 13:28:48 -08:00
2018-04-27 09:48:44 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-08-22 10:52:46 -07:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-04-19 13:28:51 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2009-07-22 00:28:38 +02:00
2017-11-13 08:25:06 -08:00
2017-11-02 11:10:55 +01:00
2018-05-19 08:46:12 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-01-12 17:33:38 -08:00
2018-03-09 23:19:56 +01:00
2018-08-22 10:52:47 -07:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2016-02-16 15:10:44 +00:00
2011-03-17 09:19:04 +08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2009-06-11 21:02:42 +02:00
2017-11-02 11:10:55 +01:00
2018-06-07 17:34:38 -07:00
2018-09-14 09:49:21 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2010-12-17 15:07:19 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-03-06 18:40:44 +01:00
2009-06-11 21:02:37 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2014-02-09 21:18:52 +01:00
2017-11-02 11:10:55 +01:00
2017-12-22 20:13:01 +01:00
2015-07-17 16:39:53 -07:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-03-09 23:19:56 +01:00
2018-05-07 07:15:41 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-02-14 13:11:14 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-08-17 16:20:29 -07:00
2017-11-02 11:10:55 +01:00
2011-05-26 17:12:36 -07:00
2018-02-06 10:28:58 +01:00
2017-10-25 10:57:25 +02:00
2018-06-22 04:19:16 +02:00
2018-05-15 08:11:15 +02:00
2017-11-02 11:10:55 +01:00
2017-11-07 10:32:44 +01:00
2016-05-13 14:02:00 +02:00
2018-01-09 10:45:37 +01:00
2009-06-11 21:02:50 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2012-06-28 17:14:34 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2009-06-11 21:02:37 +02:00
2018-03-09 23:19:56 +01:00
2014-09-23 16:20:00 -04:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-08-23 11:55:58 -07:00
2017-11-02 11:10:55 +01:00
2017-11-17 16:10:05 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2011-03-01 15:49:39 +01:00
2017-11-02 11:10:55 +01:00
2018-08-22 23:21:44 +09:00
2013-09-30 14:31:02 -07:00
2017-11-02 11:10:55 +01:00
2012-10-03 21:21:06 +02:00