[SCSI] bfa: driver compatibility with 32bit libs
Replaced usage of void * with u64 in data structure shared between
brocade user space libraries and the bfa driver to address pointer
size changes across 32-bit vs 64-bit to have the compatibility between
32bit library and 64bit driver and vice versa.
Signed-off-by: Vijaya Mohan Guvva <vmohan@brocade.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
diff --git a/drivers/scsi/bfa/bfad_bsg.c b/drivers/scsi/bfa/bfad_bsg.c
index f31acfa..9863b1c 100644
--- a/drivers/scsi/bfa/bfad_bsg.c
+++ b/drivers/scsi/bfa/bfad_bsg.c
@@ -3371,7 +3371,8 @@
goto out;
}
- if (copy_from_user((uint8_t *)bsg_fcpt, bsg_data->payload,
+ if (copy_from_user((uint8_t *)bsg_fcpt,
+ (void *)(unsigned long)bsg_data->payload,
bsg_data->payload_len)) {
kfree(bsg_fcpt);
rc = -EIO;
@@ -3525,8 +3526,8 @@
kfree(rsp_kbuf);
/* Need a copy to user op */
- if (copy_to_user(bsg_data->payload, (void *) bsg_fcpt,
- bsg_data->payload_len))
+ if (copy_to_user((void *)(unsigned long)bsg_data->payload,
+ (void *)bsg_fcpt, bsg_data->payload_len))
rc = -EIO;
kfree(bsg_fcpt);
diff --git a/drivers/scsi/bfa/bfad_bsg.h b/drivers/scsi/bfa/bfad_bsg.h
index 3ef321c..b0b5ac7 100644
--- a/drivers/scsi/bfa/bfad_bsg.h
+++ b/drivers/scsi/bfa/bfad_bsg.h
@@ -819,10 +819,12 @@
};
#define bfa_bsg_fcpt_t struct bfa_bsg_fcpt_s
+#pragma pack(1)
struct bfa_bsg_data {
int payload_len;
- void *payload;
+ u64 payload;
};
+#pragma pack()
#define bfad_chk_iocmd_sz(__payload_len, __hdrsz, __bufsz) \
(((__payload_len) != ((__hdrsz) + (__bufsz))) ? \