Re: [PATCH 1/1] mpi3mr: Fix compilation errors observed on i386 arch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux