Message ID | 20211224070712.17905-13-njavali@marvell.com |
---|---|
State | Superseded |
Headers | show |
Series | qla2xxx misc bug fixes and features | expand |
> On Dec 23, 2021, at 11:07 PM, Nilesh Javali <njavali@marvell.com> wrote: > > From: Quinn Tran <qutran@marvell.com> > > Silent compile warning due to unaligned memory access. > > qla_edif.c:713:45: warning: taking address of packed member 'u' of class or > structure 'auth_complete_cmd' may result in an unaligned pointer value > [-Waddress-of-packed-member] > fcport = qla2x00_find_fcport_by_pid(vha, &appplogiok.u.d_id); > > Cc: stable@vger.kernel.org > Reported-by: kernel test robot <lkp@intel.com> > Signed-off-by: Quinn Tran <qutran@marvell.com> > Signed-off-by: Nilesh Javali <njavali@marvell.com> > --- > drivers/scsi/qla2xxx/qla_edif.c | 22 +++++++++++++++++++--- > 1 file changed, 19 insertions(+), 3 deletions(-) > > diff --git a/drivers/scsi/qla2xxx/qla_edif.c b/drivers/scsi/qla2xxx/qla_edif.c > index c04957c363d8..0628633c7c7e 100644 > --- a/drivers/scsi/qla2xxx/qla_edif.c > +++ b/drivers/scsi/qla2xxx/qla_edif.c > @@ -668,6 +668,11 @@ qla_edif_app_authok(scsi_qla_host_t *vha, struct bsg_job *bsg_job) > bsg_job->request_payload.sg_cnt, &appplogiok, > sizeof(struct auth_complete_cmd)); > > + /* silent unaligned access warning */ > + portid.b.domain = appplogiok.u.d_id.b.domain; > + portid.b.area = appplogiok.u.d_id.b.area; > + portid.b.al_pa = appplogiok.u.d_id.b.al_pa; > + > switch (appplogiok.type) { > case PL_TYPE_WWPN: > fcport = qla2x00_find_fcport_by_wwpn(vha, > @@ -678,7 +683,7 @@ qla_edif_app_authok(scsi_qla_host_t *vha, struct bsg_job *bsg_job) > __func__, appplogiok.u.wwpn); > break; > case PL_TYPE_DID: > - fcport = qla2x00_find_fcport_by_pid(vha, &appplogiok.u.d_id); > + fcport = qla2x00_find_fcport_by_pid(vha, &portid); > if (!fcport) > ql_dbg(ql_dbg_edif, vha, 0x911d, > "%s d_id lookup failed: %x\n", __func__, > @@ -777,6 +782,11 @@ qla_edif_app_authfail(scsi_qla_host_t *vha, struct bsg_job *bsg_job) > bsg_job->request_payload.sg_cnt, &appplogifail, > sizeof(struct auth_complete_cmd)); > > + /* silent unaligned access warning */ > + portid.b.domain = appplogifail.u.d_id.b.domain; > + portid.b.area = appplogifail.u.d_id.b.area; > + portid.b.al_pa = appplogifail.u.d_id.b.al_pa; > + > /* > * TODO: edif: app has failed this plogi. Inform driver to > * take any action (if any). > @@ -788,7 +798,7 @@ qla_edif_app_authfail(scsi_qla_host_t *vha, struct bsg_job *bsg_job) > SET_DID_STATUS(bsg_reply->result, DID_OK); > break; > case PL_TYPE_DID: > - fcport = qla2x00_find_fcport_by_pid(vha, &appplogifail.u.d_id); > + fcport = qla2x00_find_fcport_by_pid(vha, &portid); > if (!fcport) > ql_dbg(ql_dbg_edif, vha, 0x911d, > "%s d_id lookup failed: %x\n", __func__, > @@ -1253,6 +1263,7 @@ qla24xx_sadb_update(struct bsg_job *bsg_job) > int result = 0; > struct qla_sa_update_frame sa_frame; > struct srb_iocb *iocb_cmd; > + port_id_t portid; > > ql_dbg(ql_dbg_edif + ql_dbg_verbose, vha, 0x911d, > "%s entered, vha: 0x%p\n", __func__, vha); > @@ -1276,7 +1287,12 @@ qla24xx_sadb_update(struct bsg_job *bsg_job) > goto done; > } > > - fcport = qla2x00_find_fcport_by_pid(vha, &sa_frame.port_id); > + /* silent unaligned access warning */ > + portid.b.domain = sa_frame.port_id.b.domain; > + portid.b.area = sa_frame.port_id.b.area; > + portid.b.al_pa = sa_frame.port_id.b.al_pa; > + > + fcport = qla2x00_find_fcport_by_pid(vha, &portid); > if (fcport) { > found = 1; > if (sa_frame.flags == QLA_SA_UPDATE_FLAGS_TX_KEY) > -- > 2.23.1 > Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com> -- Himanshu Madhani Oracle Linux Engineering
diff --git a/drivers/scsi/qla2xxx/qla_edif.c b/drivers/scsi/qla2xxx/qla_edif.c index c04957c363d8..0628633c7c7e 100644 --- a/drivers/scsi/qla2xxx/qla_edif.c +++ b/drivers/scsi/qla2xxx/qla_edif.c @@ -668,6 +668,11 @@ qla_edif_app_authok(scsi_qla_host_t *vha, struct bsg_job *bsg_job) bsg_job->request_payload.sg_cnt, &appplogiok, sizeof(struct auth_complete_cmd)); + /* silent unaligned access warning */ + portid.b.domain = appplogiok.u.d_id.b.domain; + portid.b.area = appplogiok.u.d_id.b.area; + portid.b.al_pa = appplogiok.u.d_id.b.al_pa; + switch (appplogiok.type) { case PL_TYPE_WWPN: fcport = qla2x00_find_fcport_by_wwpn(vha, @@ -678,7 +683,7 @@ qla_edif_app_authok(scsi_qla_host_t *vha, struct bsg_job *bsg_job) __func__, appplogiok.u.wwpn); break; case PL_TYPE_DID: - fcport = qla2x00_find_fcport_by_pid(vha, &appplogiok.u.d_id); + fcport = qla2x00_find_fcport_by_pid(vha, &portid); if (!fcport) ql_dbg(ql_dbg_edif, vha, 0x911d, "%s d_id lookup failed: %x\n", __func__, @@ -777,6 +782,11 @@ qla_edif_app_authfail(scsi_qla_host_t *vha, struct bsg_job *bsg_job) bsg_job->request_payload.sg_cnt, &appplogifail, sizeof(struct auth_complete_cmd)); + /* silent unaligned access warning */ + portid.b.domain = appplogifail.u.d_id.b.domain; + portid.b.area = appplogifail.u.d_id.b.area; + portid.b.al_pa = appplogifail.u.d_id.b.al_pa; + /* * TODO: edif: app has failed this plogi. Inform driver to * take any action (if any). @@ -788,7 +798,7 @@ qla_edif_app_authfail(scsi_qla_host_t *vha, struct bsg_job *bsg_job) SET_DID_STATUS(bsg_reply->result, DID_OK); break; case PL_TYPE_DID: - fcport = qla2x00_find_fcport_by_pid(vha, &appplogifail.u.d_id); + fcport = qla2x00_find_fcport_by_pid(vha, &portid); if (!fcport) ql_dbg(ql_dbg_edif, vha, 0x911d, "%s d_id lookup failed: %x\n", __func__, @@ -1253,6 +1263,7 @@ qla24xx_sadb_update(struct bsg_job *bsg_job) int result = 0; struct qla_sa_update_frame sa_frame; struct srb_iocb *iocb_cmd; + port_id_t portid; ql_dbg(ql_dbg_edif + ql_dbg_verbose, vha, 0x911d, "%s entered, vha: 0x%p\n", __func__, vha); @@ -1276,7 +1287,12 @@ qla24xx_sadb_update(struct bsg_job *bsg_job) goto done; } - fcport = qla2x00_find_fcport_by_pid(vha, &sa_frame.port_id); + /* silent unaligned access warning */ + portid.b.domain = sa_frame.port_id.b.domain; + portid.b.area = sa_frame.port_id.b.area; + portid.b.al_pa = sa_frame.port_id.b.al_pa; + + fcport = qla2x00_find_fcport_by_pid(vha, &portid); if (fcport) { found = 1; if (sa_frame.flags == QLA_SA_UPDATE_FLAGS_TX_KEY)