]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
atm: idt77252: Add missing `dma_map_error()`
authorThomas Fourier <fourier.thomas@gmail.com>
Tue, 24 Jun 2025 06:41:47 +0000 (08:41 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Jul 2025 16:27:59 +0000 (18:27 +0200)
[ Upstream commit c4890963350dcf4e9a909bae23665921fba4ad27 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/atm/idt77252.c

index 25fd73fafb3711f2409daae3619a3aafb65dbc26..89b0ed8e51430657893b5087cf71c4a37036aaab 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;
 
@@ -1863,6 +1865,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)) {
@@ -1877,6 +1881,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;