Message ID | 20240220100451.1053667-1-s-vadapalli@ti.com |
---|---|
State | Accepted |
Commit | 333031011c8fcd3020caef41128f9687725c462c |
Delegated to: | Tom Rini |
Headers | show |
Series | [v2] dma: ti: k3-udma: Fix error handling for setup_resources() in udma_probe() | expand |
On Tue, Feb 20, 2024 at 03:34:51PM +0530, Siddharth Vadapalli wrote: > In udma_probe() the return value of setup_resources() is stored in the > u32 "ch_count" member of "struct udma_dev", due to which any negative > return value which indicates an error is masked. > > Fix this by storing the return value of setup_resources() in the already > declared integer variable "ret", followed by assigning it to the "ch_count" > member of "struct udma_dev" in case of no error. > > While at it, change the "return ret" at the end of udma_probe() to a > "return 0", to explicitly indicate that probe was successful. > > Fixes: a8837cf43839 ("dma: ti: k3-udma: Query DMA channels allocated from Resource Manager") > Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com> > --- Thanks! Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org> regards, dan carpenter
On Tue, Feb 20, 2024 at 03:34:51PM +0530, Siddharth Vadapalli wrote: > In udma_probe() the return value of setup_resources() is stored in the > u32 "ch_count" member of "struct udma_dev", due to which any negative > return value which indicates an error is masked. > > Fix this by storing the return value of setup_resources() in the already > declared integer variable "ret", followed by assigning it to the "ch_count" > member of "struct udma_dev" in case of no error. > > While at it, change the "return ret" at the end of udma_probe() to a > "return 0", to explicitly indicate that probe was successful. > > Fixes: a8837cf43839 ("dma: ti: k3-udma: Query DMA channels allocated from Resource Manager") > Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com> > Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org> Applied to u-boot/next, thanks!
diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c index eea9ec9659..ed0a9bf487 100644 --- a/drivers/dma/ti/k3-udma.c +++ b/drivers/dma/ti/k3-udma.c @@ -1770,9 +1770,11 @@ static int udma_probe(struct udevice *dev) return PTR_ERR(ud->ringacc); ud->dev = dev; - ud->ch_count = setup_resources(ud); - if (ud->ch_count <= 0) - return ud->ch_count; + ret = setup_resources(ud); + if (ret < 0) + return ret; + + ud->ch_count = ret; for (i = 0; i < ud->bchan_cnt; i++) { struct udma_bchan *bchan = &ud->bchans[i]; @@ -1831,7 +1833,7 @@ static int udma_probe(struct udevice *dev) uc_priv->supported = DMA_SUPPORTS_MEM_TO_MEM | DMA_SUPPORTS_MEM_TO_DEV; - return ret; + return 0; } static int udma_push_to_ring(struct k3_nav_ring *ring, void *elem)
In udma_probe() the return value of setup_resources() is stored in the u32 "ch_count" member of "struct udma_dev", due to which any negative return value which indicates an error is masked. Fix this by storing the return value of setup_resources() in the already declared integer variable "ret", followed by assigning it to the "ch_count" member of "struct udma_dev" in case of no error. While at it, change the "return ret" at the end of udma_probe() to a "return 0", to explicitly indicate that probe was successful. Fixes: a8837cf43839 ("dma: ti: k3-udma: Query DMA channels allocated from Resource Manager") Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com> --- Hello, This patch is based on commit 3e6f2a94bf Merge tag 'u-boot-imx-master-20240219' of https://gitlab.denx.de/u-boot/custodians/u-boot-imx of the master branch of U-Boot. v1: https://patchwork.ozlabs.org/project/uboot/patch/20240216104105.494602-1-s-vadapalli@ti.com/ Changes since v1: - Rebased patch on latest U-Boot tree. - As pointed out by Dan in reply to the v1 patch, since the return value of setup_resources() cannot be zero, update the check performed on the return value accordingly. Regards, Siddharth. drivers/dma/ti/k3-udma.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)