diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2009-03-26 15:24:10 +0100 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2009-03-26 15:24:14 +0100 |
commit | 87fa5af80cdd5053b27a546725948c2b74ec82b2 (patch) | |
tree | 1546f9e8ef711d5559638e7f9c570e2be242bb14 | |
parent | 98c1c6825247c71e3d8a9a5439ba21fce7563014 (diff) | |
download | lwn-87fa5af80cdd5053b27a546725948c2b74ec82b2.tar.gz lwn-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>
-rw-r--r-- | drivers/s390/cio/airq.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/s390/cio/airq.c b/drivers/s390/cio/airq.c index fe6cea15bbaf..d3850dc30e42 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); |