scsi: qla2xxx: Enable type checking for the SRB free and done callback functions
[linux-2.6-block.git] / drivers / scsi / qla2xxx / qla_mr.c
index 942ee13b96a462491d2dc898ce453c2dea9500e0..e8da3ec4db2c187b092b6e6a6e4dcb85eb4e0994 100644 (file)
@@ -10,7 +10,6 @@
 #include <linux/pci.h>
 #include <linux/ratelimit.h>
 #include <linux/vmalloc.h>
-#include <linux/bsg-lib.h>
 #include <scsi/scsi_tcq.h>
 #include <linux/utsname.h>
 
@@ -149,7 +148,8 @@ qlafx00_mailbox_command(scsi_qla_host_t *vha, struct mbx_cmd_32 *mcp)
                QLAFX00_SET_HST_INTR(ha, ha->mbx_intr_code);
                spin_unlock_irqrestore(&ha->hardware_lock, flags);
 
-               wait_for_completion_timeout(&ha->mbx_intr_comp, mcp->tov * HZ);
+               WARN_ON_ONCE(wait_for_completion_timeout(&ha->mbx_intr_comp,
+                                                        mcp->tov * HZ) != 0);
        } else {
                ql_dbg(ql_dbg_mbx, vha, 0x112c,
                    "Cmd=%x Polling Mode.\n", command);
@@ -688,14 +688,12 @@ qlafx00_config_rings(struct scsi_qla_host *vha)
 }
 
 char *
-qlafx00_pci_info_str(struct scsi_qla_host *vha, char *str)
+qlafx00_pci_info_str(struct scsi_qla_host *vha, char *str, size_t str_len)
 {
        struct qla_hw_data *ha = vha->hw;
 
-       if (pci_is_pcie(ha->pdev)) {
-               strcpy(str, "PCIe iSA");
-               return str;
-       }
+       if (pci_is_pcie(ha->pdev))
+               strlcpy(str, "PCIe iSA", str_len);
        return str;
 }
 
@@ -1799,10 +1797,8 @@ qla2x00_fxdisc_iocb_timeout(void *data)
        complete(&lio->u.fxiocb.fxiocb_comp);
 }
 
-static void
-qla2x00_fxdisc_sp_done(void *ptr, int res)
+static void qla2x00_fxdisc_sp_done(srb_t *sp, int res)
 {
-       srb_t *sp = ptr;
        struct srb_iocb *lio = &sp->u.iocb_cmd;
 
        complete(&lio->u.fxiocb.fxiocb_comp);
@@ -1881,22 +1877,22 @@ qlafx00_fx_disc(scsi_qla_host_t *vha, fc_port_t *fcport, uint16_t fx_type)
                        phost_info = &preg_hsi->hsi;
                        memset(preg_hsi, 0, sizeof(struct register_host_info));
                        phost_info->os_type = OS_TYPE_LINUX;
-                       strncpy(phost_info->sysname,
-                           p_sysid->sysname, SYSNAME_LENGTH);
-                       strncpy(phost_info->nodename,
-                           p_sysid->nodename, NODENAME_LENGTH);
+                       strlcpy(phost_info->sysname, p_sysid->sysname,
+                               sizeof(phost_info->sysname));
+                       strlcpy(phost_info->nodename, p_sysid->nodename,
+                               sizeof(phost_info->nodename));
                        if (!strcmp(phost_info->nodename, "(none)"))
                                ha->mr.host_info_resend = true;
-                       strncpy(phost_info->release,
-                           p_sysid->release, RELEASE_LENGTH);
-                       strncpy(phost_info->version,
-                           p_sysid->version, VERSION_LENGTH);
-                       strncpy(phost_info->machine,
-                           p_sysid->machine, MACHINE_LENGTH);
-                       strncpy(phost_info->domainname,
-                           p_sysid->domainname, DOMNAME_LENGTH);
-                       strncpy(phost_info->hostdriver,
-                           QLA2XXX_VERSION, VERSION_LENGTH);
+                       strlcpy(phost_info->release, p_sysid->release,
+                               sizeof(phost_info->release));
+                       strlcpy(phost_info->version, p_sysid->version,
+                               sizeof(phost_info->version));
+                       strlcpy(phost_info->machine, p_sysid->machine,
+                               sizeof(phost_info->machine));
+                       strlcpy(phost_info->domainname, p_sysid->domainname,
+                               sizeof(phost_info->domainname));
+                       strlcpy(phost_info->hostdriver, QLA2XXX_VERSION,
+                               sizeof(phost_info->hostdriver));
                        preg_hsi->utc = (uint64_t)ktime_get_real_seconds();
                        ql_dbg(ql_dbg_init, vha, 0x0149,
                            "ISP%04X: Host registration with firmware\n",
@@ -1941,8 +1937,10 @@ qlafx00_fx_disc(scsi_qla_host_t *vha, fc_port_t *fcport, uint16_t fx_type)
        if (fx_type == FXDISC_GET_CONFIG_INFO) {
                struct config_info_data *pinfo =
                    (struct config_info_data *) fdisc->u.fxiocb.rsp_addr;
-               strcpy(vha->hw->model_number, pinfo->model_num);
-               strcpy(vha->hw->model_desc, pinfo->model_description);
+               strlcpy(vha->hw->model_number, pinfo->model_num,
+                       ARRAY_SIZE(vha->hw->model_number));
+               strlcpy(vha->hw->model_desc, pinfo->model_description,
+                       ARRAY_SIZE(vha->hw->model_desc));
                memcpy(&vha->hw->mr.symbolic_name, pinfo->symbolic_name,
                    sizeof(vha->hw->mr.symbolic_name));
                memcpy(&vha->hw->mr.serial_num, pinfo->serial_num,