diff mbox series

[12/16] qla2xxx: edif: Fix clang warning

Message ID 20211224070712.17905-13-njavali@marvell.com
State Superseded
Headers show
Series qla2xxx misc bug fixes and features | expand

Commit Message

Nilesh Javali Dec. 24, 2021, 7:07 a.m. UTC
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(-)

Comments

Himanshu Madhani Jan. 3, 2022, 12:47 a.m. UTC | #1
> 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 mbox series

Patch

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)