summaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio
diff options
context:
space:
mode:
authorSebastian Ott <sebott@linux.vnet.ibm.com>2013-08-29 20:31:06 +0200
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2013-08-30 08:57:22 +0200
commiteb072a7996467937a1582d0188ed082768902a5a (patch)
tree66115658aa7bc89efa9381c7123cd4fcfa17115e /drivers/s390/cio
parent57b5918c33a0797930c3791fb602a8a9d46ef80c (diff)
downloadlinux-eb072a7996467937a1582d0188ed082768902a5a.tar.gz
linux-eb072a7996467937a1582d0188ed082768902a5a.tar.bz2
linux-eb072a7996467937a1582d0188ed082768902a5a.zip
s390/cio: fix unlocked access of global bitmap
Access to the slow_subchannel_set has to be secured via the slow_subchannel_lock. Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio')
-rw-r--r--drivers/s390/cio/css.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c
index 4eb2a54e64f2..8c2cb87bccc5 100644
--- a/drivers/s390/cio/css.c
+++ b/drivers/s390/cio/css.c
@@ -546,7 +546,9 @@ static int slow_eval_unknown_fn(struct subchannel_id schid, void *data)
case -ENOMEM:
case -EIO:
/* These should abort looping */
+ spin_lock_irq(&slow_subchannel_lock);
idset_sch_del_subseq(slow_subchannel_set, schid);
+ spin_unlock_irq(&slow_subchannel_lock);
break;
default:
rc = 0;