atm: idt77252: Add missing `dma_map_error()`
authorThomas Fourier <fourier.thomas@gmail.com>
Tue, 24 Jun 2025 06:41:47 +0000 (08:41 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 25 Jun 2025 22:28:57 +0000 (15:28 -0700)
The DMA map functions can fail and should be tested for errors.

Signed-off-by: Thomas Fourier <fourier.thomas@gmail.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250624064148.12815-3-fourier.thomas@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/atm/idt77252.c

index 1206ab764ba92a293552b9f70cf8a98deb249d10..f2e91b7d79f01049144652251c1b86a60a9ff9b9 100644 (file)
@@ -852,6 +852,8 @@ queue_skb(struct idt77252_dev *card, struct vc_map *vc,
 
        IDT77252_PRV_PADDR(skb) = dma_map_single(&card->pcidev->dev, skb->data,
                                                 skb->len, DMA_TO_DEVICE);
+       if (dma_mapping_error(&card->pcidev->dev, IDT77252_PRV_PADDR(skb)))
+               return -ENOMEM;
 
        error = -EINVAL;
 
@@ -1857,6 +1859,8 @@ add_rx_skb(struct idt77252_dev *card, int queue,
                paddr = dma_map_single(&card->pcidev->dev, skb->data,
                                       skb_end_pointer(skb) - skb->data,
                                       DMA_FROM_DEVICE);
+               if (dma_mapping_error(&card->pcidev->dev, paddr))
+                       goto outpoolrm;
                IDT77252_PRV_PADDR(skb) = paddr;
 
                if (push_rx_skb(card, skb, queue)) {
@@ -1871,6 +1875,7 @@ outunmap:
        dma_unmap_single(&card->pcidev->dev, IDT77252_PRV_PADDR(skb),
                         skb_end_pointer(skb) - skb->data, DMA_FROM_DEVICE);
 
+outpoolrm:
        handle = IDT77252_PRV_POOL(skb);
        card->sbpool[POOL_QUEUE(handle)].skb[POOL_INDEX(handle)] = NULL;