aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/device.c
diff options
context:
space:
mode:
authorCornelia Huck <cornelia.huck@de.ibm.com>2008-07-14 09:59:02 +0200
committerHeiko Carstens <heiko.carstens@de.ibm.com>2008-07-14 10:02:11 +0200
commit99611f87176b2a908d8c66ab19a5fc550a3cd13a (patch)
tree2c9898f347d00aeab5ffcbf74c90469efb86043e /drivers/s390/cio/device.c
parent6ef556ccc8fd256259745c4f0d0ab65aaf703824 (diff)
downloadkernel_samsung_tuna-99611f87176b2a908d8c66ab19a5fc550a3cd13a.tar.gz
kernel_samsung_tuna-99611f87176b2a908d8c66ab19a5fc550a3cd13a.tar.bz2
kernel_samsung_tuna-99611f87176b2a908d8c66ab19a5fc550a3cd13a.zip
[S390] cio: Repair chpid event handling.
Passing the affected chpid in chp_event() worked only by chance since chpid is the first element in res_acc_data. Make it work properly by generalizing res_acc_data as chp_link and always passing around a properly filled out chp_link structure in chp_event(). Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/device.c')
-rw-r--r--drivers/s390/cio/device.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c
index 67e7a312395..522d47afc95 100644
--- a/drivers/s390/cio/device.c
+++ b/drivers/s390/cio/device.c
@@ -128,7 +128,8 @@ static int io_subchannel_probe(struct subchannel *);
static int io_subchannel_remove(struct subchannel *);
static void io_subchannel_shutdown(struct subchannel *);
static int io_subchannel_sch_event(struct subchannel *, int);
-static int io_subchannel_chp_event(struct subchannel *, void *, int);
+static int io_subchannel_chp_event(struct subchannel *, struct chp_link *,
+ int);
static struct css_driver io_subchannel_driver = {
.owner = THIS_MODULE,
@@ -1329,14 +1330,12 @@ static void io_subchannel_terminate_path(struct subchannel *sch, u8 mask)
}
-static int io_subchannel_chp_event(struct subchannel *sch, void *data,
- int event)
+static int io_subchannel_chp_event(struct subchannel *sch,
+ struct chp_link *link, int event)
{
int mask;
- struct res_acc_data *res_data;
- res_data = data;
- mask = chp_ssd_get_mask(&sch->ssd_info, res_data);
+ mask = chp_ssd_get_mask(&sch->ssd_info, link);
if (!mask)
return 0;
switch (event) {