Use vzalloc() instead of the vmalloc() and memset. Also, use array_size()
instead of the open-coded version.

This issue was found with the help of Coccinelle and, audited and fixed
manually.

Addresses-KSPP-ID: https://github.com/KSPP/linux/issues/83
Signed-off-by: Gustavo A. R. Silva <gustavo...@kernel.org>
---
 drivers/scsi/fnic/fnic_trace.c | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

diff --git a/drivers/scsi/fnic/fnic_trace.c b/drivers/scsi/fnic/fnic_trace.c
index 9d52d83161ed..be266d1611bb 100644
--- a/drivers/scsi/fnic/fnic_trace.c
+++ b/drivers/scsi/fnic/fnic_trace.c
@@ -488,7 +488,7 @@ int fnic_trace_buf_init(void)
        }
 
        fnic_trace_entries.page_offset =
-               vmalloc(array_size(fnic_max_trace_entries,
+               vzalloc(array_size(fnic_max_trace_entries,
                                   sizeof(unsigned long)));
        if (!fnic_trace_entries.page_offset) {
                printk(KERN_ERR PFX "Failed to allocate memory for"
@@ -500,8 +500,6 @@ int fnic_trace_buf_init(void)
                err = -ENOMEM;
                goto err_fnic_trace_buf_init;
        }
-       memset((void *)fnic_trace_entries.page_offset, 0,
-                 (fnic_max_trace_entries * sizeof(unsigned long)));
        fnic_trace_entries.wr_idx = fnic_trace_entries.rd_idx = 0;
        fnic_buf_head = fnic_trace_buf_p;
 
@@ -559,10 +557,10 @@ int fnic_fc_trace_init(void)
        int err = 0;
        int i;
 
-       fc_trace_max_entries = (fnic_fc_trace_max_pages * PAGE_SIZE)/
+       fc_trace_max_entries = array_size(fnic_fc_trace_max_pages, PAGE_SIZE)/
                                FC_TRC_SIZE_BYTES;
        fnic_fc_ctlr_trace_buf_p =
-               (unsigned long)vmalloc(array_size(PAGE_SIZE,
+               (unsigned long)vzalloc(array_size(PAGE_SIZE,
                                                  fnic_fc_trace_max_pages));
        if (!fnic_fc_ctlr_trace_buf_p) {
                pr_err("fnic: Failed to allocate memory for "
@@ -571,12 +569,9 @@ int fnic_fc_trace_init(void)
                goto err_fnic_fc_ctlr_trace_buf_init;
        }
 
-       memset((void *)fnic_fc_ctlr_trace_buf_p, 0,
-                       fnic_fc_trace_max_pages * PAGE_SIZE);
-
        /* Allocate memory for page offset */
        fc_trace_entries.page_offset =
-               vmalloc(array_size(fc_trace_max_entries,
+               vzalloc(array_size(fc_trace_max_entries,
                                   sizeof(unsigned long)));
        if (!fc_trace_entries.page_offset) {
                pr_err("fnic:Failed to allocate memory for page_offset\n");
@@ -588,9 +583,6 @@ int fnic_fc_trace_init(void)
                err = -ENOMEM;
                goto err_fnic_fc_ctlr_trace_buf_init;
        }
-       memset((void *)fc_trace_entries.page_offset, 0,
-              (fc_trace_max_entries * sizeof(unsigned long)));
-
        fc_trace_entries.rd_idx = fc_trace_entries.wr_idx = 0;
        fc_trace_buf_head = fnic_fc_ctlr_trace_buf_p;
 
-- 
2.27.0

Reply via email to