• Alexander Lobakin's avatar
    qed: fix the allocation of the chains with an external PBL · 1775da47
    Alexander Lobakin authored
    Dan reports static checker warning:
    
    "The patch 9b6ee3cf: "qed: sanitize PBL chains allocation" from Jul
    23, 2020, leads to the following static checker warning:
    
    	drivers/net/ethernet/qlogic/qed/qed_chain.c:299 qed_chain_alloc_pbl()
    	error: uninitialized symbol 'pbl_virt'.
    
    drivers/net/ethernet/qlogic/qed/qed_chain.c
       249  static int qed_chain_alloc_pbl(struct qed_dev *cdev, struct qed_chain *chain)
       250  {
       251          struct device *dev = &cdev->pdev->dev;
       252          struct addr_tbl_entry *addr_tbl;
       253          dma_addr_t phys, pbl_phys;
       254          __le64 *pbl_virt;
                    ^^^^^^^^^^^^^^^^
    [...]
       271          if (chain->b_external_pbl)
       272                  goto alloc_pages;
                            ^^^^^^^^^^^^^^^^ uninitialized
    [...]
       298                  /* Fill the PBL table with the physical address of the page */
       299                  pbl_virt[i] = cpu_to_le64(phys);
                            ^^^^^^^^^^^
    [...]
    "
    
    This issue was introduced with commit c3a321b0 ("qed: simplify
    initialization of the chains with an external PBL"), when
    chain->pbl_sp.table_virt initialization was moved up to
    qed_chain_init_params().
    Fix it by initializing pbl_virt with an already filled chain struct field.
    
    Fixes: c3a321b0 ("qed: simplify initialization of the chains with an external PBL")
    Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: default avatarAlexander Lobakin <alobakin@marvell.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1775da47
qed_chain.c 8.46 KB