Messages in this thread | | | From | Claudiu Manoil <> | Subject | RE: [PATCH][linux-next] net: enetc: unmap DMA in enetc_send_cmd() | Date | Tue, 19 Oct 2021 19:47:17 +0000 |
| |
> -----Original Message----- > From: Tim Gardner <tim.gardner@canonical.com> > Sent: Tuesday, October 19, 2021 9:20 PM [...] > Subject: [PATCH][linux-next] net: enetc: unmap DMA in enetc_send_cmd() > > Coverity complains of a possible dereference of a null return value. > > 5. returned_null: kzalloc returns NULL. [show details] > 6. var_assigned: Assigning: si_data = NULL return value from kzalloc. > 488 si_data = kzalloc(data_size, __GFP_DMA | GFP_KERNEL); > 489 cbd.length = cpu_to_le16(data_size); > 490 > 491 dma = dma_map_single(&priv->si->pdev->dev, si_data, > 492 data_size, DMA_FROM_DEVICE); > > While this kzalloc() is unlikely to fail, I did notice that the function > returned without unmapping si_data. > > Fix this by refactoring the error paths and checking for kzalloc() > failure. > > Fixes: 888ae5a3952ba ("net: enetc: add tc flower psfp offload driver") > Cc: Claudiu Manoil <claudiu.manoil@nxp.com> > Cc: "David S. Miller" <davem@davemloft.net> > Cc: Jakub Kicinski <kuba@kernel.org> > Cc: netdev@vger.kernel.org > Cc: linux-kernel@vger.kernel.org (open list) > Signed-off-by: Tim Gardner <tim.gardner@canonical.com> > --- > > I am curious why you do not need to call dma_sync_single_for_device() > before enetc_send_cmd() > in order to flush the contents of CPU cache to RAM. Is it because > __GFP_DMA marks > that page as uncached ? Or is it because of the SOC this runs on ? >
Not sure how it works like this, but I think dma_alloc_coherent() should have been used here instead of the kmalloc + dma_map scheme. I don't have the means to test this particular code path however.
Acked-by: Claudiu Manoil <claudiu.manoil@nxp.com>
| |