summaryrefslogtreecommitdiff
path: root/drivers/s390
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2009-03-26 15:24:10 +0100
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2009-03-26 15:24:14 +0100
commit87fa5af80cdd5053b27a546725948c2b74ec82b2 (patch)
tree1546f9e8ef711d5559638e7f9c570e2be242bb14 /drivers/s390
parent98c1c6825247c71e3d8a9a5439ba21fce7563014 (diff)
downloadlinux-3.10-87fa5af80cdd5053b27a546725948c2b74ec82b2.tar.gz
linux-3.10-87fa5af80cdd5053b27a546725948c2b74ec82b2.tar.bz2
linux-3.10-87fa5af80cdd5053b27a546725948c2b74ec82b2.zip
[S390] cio: ensure single load of irq handler pointer
Add barrier to prevent compiler from reloading pointer to irq handler. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390')
-rw-r--r--drivers/s390/cio/airq.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/s390/cio/airq.c b/drivers/s390/cio/airq.c
index fe6cea15bba..d3850dc30e4 100644
--- a/drivers/s390/cio/airq.c
+++ b/drivers/s390/cio/airq.c
@@ -133,6 +133,8 @@ void do_adapter_IO(u8 isc)
while (word) {
if (word & INDICATOR_MASK) {
airq = airqs[isc][i];
+ /* Make sure gcc reads from airqs only once. */
+ barrier();
if (likely(airq))
airq->handler(&indicators[isc].byte[i],
airq->drv_data);