crypto: qat - add check for null pointer
authorJack Xu <jack.xu@intel.com>
Fri, 6 Nov 2020 11:28:03 +0000 (19:28 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 13 Nov 2020 09:38:53 +0000 (20:38 +1100)
Add null pointer check when freeing the memory for firmware.

Signed-off-by: Jack Xu <jack.xu@intel.com>
Co-developed-by: Wojciech Ziemba <wojciech.ziemba@intel.com>
Signed-off-by: Wojciech Ziemba <wojciech.ziemba@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/qat/qat_common/qat_uclo.c

index 32c64a4..7b02c4e 100644 (file)
@@ -1233,11 +1233,15 @@ static int qat_uclo_simg_alloc(struct icp_qat_fw_loader_handle *handle,
 static void qat_uclo_simg_free(struct icp_qat_fw_loader_handle *handle,
                               struct icp_firml_dram_desc *dram_desc)
 {
-       dma_free_coherent(&handle->pci_dev->dev,
-                         (size_t)(dram_desc->dram_size),
-                         dram_desc->dram_base_addr_v,
-                         dram_desc->dram_bus_addr);
-       memset(dram_desc, 0, sizeof(*dram_desc));
+       if (handle && dram_desc && dram_desc->dram_base_addr_v) {
+               dma_free_coherent(&handle->pci_dev->dev,
+                                 (size_t)(dram_desc->dram_size),
+                                 dram_desc->dram_base_addr_v,
+                                 dram_desc->dram_bus_addr);
+       }
+
+       if (dram_desc)
+               memset(dram_desc, 0, sizeof(*dram_desc));
 }
 
 static void qat_uclo_ummap_auth_fw(struct icp_qat_fw_loader_handle *handle,
@@ -1245,12 +1249,14 @@ static void qat_uclo_ummap_auth_fw(struct icp_qat_fw_loader_handle *handle,
 {
        struct icp_firml_dram_desc dram_desc;
 
-       dram_desc.dram_base_addr_v = *desc;
-       dram_desc.dram_bus_addr = ((struct icp_qat_auth_chunk *)
-                                  (*desc))->chunk_bus_addr;
-       dram_desc.dram_size = ((struct icp_qat_auth_chunk *)
-                              (*desc))->chunk_size;
-       qat_uclo_simg_free(handle, &dram_desc);
+       if (*desc) {
+               dram_desc.dram_base_addr_v = *desc;
+               dram_desc.dram_bus_addr = ((struct icp_qat_auth_chunk *)
+                                          (*desc))->chunk_bus_addr;
+               dram_desc.dram_size = ((struct icp_qat_auth_chunk *)
+                                      (*desc))->chunk_size;
+               qat_uclo_simg_free(handle, &dram_desc);
+       }
 }
 
 static int qat_uclo_map_auth_fw(struct icp_qat_fw_loader_handle *handle,