Hi Guenter, Please check the changes below. I hope this change will work with 32-bit pointers as well. If it looks good then I will post this change as a patch. diff --git a/drivers/scsi/mpi3mr/mpi3mr_os.c b/drivers/scsi/mpi3mr/mpi3mr_os.c index 0901bc932d5c..0bba19c0f984 100644 --- a/drivers/scsi/mpi3mr/mpi3mr_os.c +++ b/drivers/scsi/mpi3mr/mpi3mr_os.c @@ -386,7 +386,7 @@ static void mpi3mr_queue_qd_reduction_event(struct mpi3mr_ioc *mrioc, ioc_warn(mrioc, "failed to queue TG QD reduction event\n"); return; } - *(__le64 *)fwevt->event_data = (__le64)tg; + memcpy(fwevt->event_data, (char *)&tg, sizeof(void *)); fwevt->mrioc = mrioc; fwevt->event_id = MPI3MR_DRIVER_EVENT_TG_QD_REDUCTION; fwevt->send_ack = 0; @@ -1660,8 +1660,7 @@ static void mpi3mr_fwevt_bh(struct mpi3mr_ioc *mrioc, { struct mpi3mr_throttle_group_info *tg; - tg = (struct mpi3mr_throttle_group_info *) - (*(__le64 *)fwevt->event_data); + memcpy((char *)&tg, fwevt->event_data, sizeof(void *)); dprint_event_bh(mrioc, "qd reduction event processed for tg_id(%d) reduction_needed(%d)\n", tg->id, tg->need_qd_reduction); Thanks, Sreekanth On Fri, Jul 15, 2022 at 10:19 PM Guenter Roeck <linux@xxxxxxxxxxxx> wrote: > > On 7/15/22 08:02, Sreekanth Reddy wrote: > > Fix below compilation errors observed on i386 ARCH, > > > > cast from pointer to integer of different size > > [-Werror=pointer-to-int-cast] > > > > Fixes: c196bc4dce ("scsi: mpi3mr: Reduce VD queue depth on detecting throttling") > > Reported-by: Guenter Roeck <linux@xxxxxxxxxxxx> > > Signed-off-by: Sreekanth Reddy <sreekanth.reddy@xxxxxxxxxxxx> > > --- > > drivers/scsi/mpi3mr/mpi3mr_os.c | 5 ++--- > > 1 file changed, 2 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/scsi/mpi3mr/mpi3mr_os.c b/drivers/scsi/mpi3mr/mpi3mr_os.c > > index 0901bc932d5c..d8013576d863 100644 > > --- a/drivers/scsi/mpi3mr/mpi3mr_os.c > > +++ b/drivers/scsi/mpi3mr/mpi3mr_os.c > > @@ -386,7 +386,7 @@ static void mpi3mr_queue_qd_reduction_event(struct mpi3mr_ioc *mrioc, > > ioc_warn(mrioc, "failed to queue TG QD reduction event\n"); > > return; > > } > > - *(__le64 *)fwevt->event_data = (__le64)tg; > > + memcpy(fwevt->event_data, (char *)&tg, sizeof(u64)); > > fwevt->mrioc = mrioc; > > fwevt->event_id = MPI3MR_DRIVER_EVENT_TG_QD_REDUCTION; > > fwevt->send_ack = 0; > > @@ -1660,8 +1660,7 @@ static void mpi3mr_fwevt_bh(struct mpi3mr_ioc *mrioc, > > { > > struct mpi3mr_throttle_group_info *tg; > > > > - tg = (struct mpi3mr_throttle_group_info *) > > - (*(__le64 *)fwevt->event_data); > > + memcpy((char *)&tg, fwevt->event_data, sizeof(u64)); > > How is this expected to work on a system with 32-bit pointers ? > > Guenter > > > dprint_event_bh(mrioc, > > "qd reduction event processed for tg_id(%d) reduction_needed(%d)\n", > > tg->id, tg->need_qd_reduction); >
Attachment:
smime.p7s
Description: S/MIME Cryptographic Signature