]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
scsi: qla2xxx: edif: Fix clang warning
authorQuinn Tran <qutran@marvell.com>
Mon, 10 Jan 2022 05:02:13 +0000 (21:02 -0800)
committerStefan Bader <stefan.bader@canonical.com>
Fri, 20 May 2022 12:40:03 +0000 (14:40 +0200)
BugLink: https://bugs.launchpad.net/bugs/1969110
commit 73825fd7a37c1a685e9e9e27c9dc91ef1f3e2971 upstream.

Silence 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);

Link: https://lore.kernel.org/r/20220110050218.3958-13-njavali@marvell.com
Cc: stable@vger.kernel.org
Reported-by: kernel test robot <lkp@intel.com>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Quinn Tran <qutran@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 2df59f3bb240a6932449050c32220ab89d6d28d7)
Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
drivers/scsi/qla2xxx/qla_edif.c

index ef9f2e745af4911412769c36748d8bb80d36de7c..a00fe88c60218c573fa55720f0b8ea50ecffd6f5 100644 (file)
@@ -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)