Message ID | 20200727115133.1631-1-alobakin@marvell.com |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
Series | [net-next] qed: fix the allocation of the chains with an external PBL | expand |
From: Alexander Lobakin <alobakin@marvell.com> Date: Mon, 27 Jul 2020 14:51:33 +0300 > Dan reports static checker warning: > > "The patch 9b6ee3cf95d3: "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 c3a321b06a80 ("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: c3a321b06a80 ("qed: simplify initialization of the chains with an external PBL") > Reported-by: Dan Carpenter <dan.carpenter@oracle.com> > Signed-off-by: Alexander Lobakin <alobakin@marvell.com> Applied, thank you.
diff --git a/drivers/net/ethernet/qlogic/qed/qed_chain.c b/drivers/net/ethernet/qlogic/qed/qed_chain.c index f8efd36d66e0..b83d17b14e85 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_chain.c +++ b/drivers/net/ethernet/qlogic/qed/qed_chain.c @@ -268,8 +268,10 @@ static int qed_chain_alloc_pbl(struct qed_dev *cdev, struct qed_chain *chain) chain->pbl.pp_addr_tbl = addr_tbl; - if (chain->b_external_pbl) + if (chain->b_external_pbl) { + pbl_virt = chain->pbl_sp.table_virt; goto alloc_pages; + } size = array_size(page_cnt, sizeof(*pbl_virt)); if (unlikely(size == SIZE_MAX))
Dan reports static checker warning: "The patch 9b6ee3cf95d3: "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 c3a321b06a80 ("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: c3a321b06a80 ("qed: simplify initialization of the chains with an external PBL") Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Alexander Lobakin <alobakin@marvell.com> --- drivers/net/ethernet/qlogic/qed/qed_chain.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)