static int _base_assign_fw_reported_qd(struct MPT3SAS_ADAPTER *ioc)
 {
        Mpi2ConfigReply_t mpi_reply;
-       Mpi2SasIOUnitPage1_t *sas_iounit_pg1 = NULL;
+       Mpi2SasIOUnitPage1_t sas_iounit_pg1;
        Mpi26PCIeIOUnitPage1_t pcie_iounit_pg1;
        u16 depth;
-       int sz;
        int rc = 0;
 
        ioc->max_wideport_qd = MPT3SAS_SAS_QUEUE_DEPTH;
        if (!ioc->is_gen35_ioc)
                goto out;
        /* sas iounit page 1 */
-       sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData);
-       sas_iounit_pg1 = kzalloc(sizeof(Mpi2SasIOUnitPage1_t), GFP_KERNEL);
-       if (!sas_iounit_pg1) {
-               pr_err("%s: failure at %s:%d/%s()!\n",
-                   ioc->name, __FILE__, __LINE__, __func__);
-               return rc;
-       }
        rc = mpt3sas_config_get_sas_iounit_pg1(ioc, &mpi_reply,
-           sas_iounit_pg1, sz);
+           &sas_iounit_pg1, sizeof(Mpi2SasIOUnitPage1_t));
        if (rc) {
                pr_err("%s: failure at %s:%d/%s()!\n",
                    ioc->name, __FILE__, __LINE__, __func__);
                goto out;
        }
 
-       depth = le16_to_cpu(sas_iounit_pg1->SASWideMaxQueueDepth);
+       depth = le16_to_cpu(sas_iounit_pg1.SASWideMaxQueueDepth);
        ioc->max_wideport_qd = (depth ? depth : MPT3SAS_SAS_QUEUE_DEPTH);
 
-       depth = le16_to_cpu(sas_iounit_pg1->SASNarrowMaxQueueDepth);
+       depth = le16_to_cpu(sas_iounit_pg1.SASNarrowMaxQueueDepth);
        ioc->max_narrowport_qd = (depth ? depth : MPT3SAS_SAS_QUEUE_DEPTH);
 
-       depth = sas_iounit_pg1->SATAMaxQDepth;
+       depth = sas_iounit_pg1.SATAMaxQDepth;
        ioc->max_sata_qd = (depth ? depth : MPT3SAS_SATA_QUEUE_DEPTH);
 
        /* pcie iounit page 1 */
            "MaxWidePortQD: 0x%x MaxNarrowPortQD: 0x%x MaxSataQD: 0x%x MaxNvmeQD: 0x%x\n",
            ioc->max_wideport_qd, ioc->max_narrowport_qd,
            ioc->max_sata_qd, ioc->max_nvme_qd));
-       kfree(sas_iounit_pg1);
        return rc;
 }