Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3e847423bf029c2170692c75580a856debed617b
Commit:     3e847423bf029c2170692c75580a856debed617b
Parent:     c73d83473e47415e943c398e6612f65f6da5b3c9
Author:     Al Viro <[EMAIL PROTECTED]>
AuthorDate: Thu Aug 2 19:21:30 2007 +0100
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Fri Aug 3 15:10:44 2007 -0700

    fix s2io regression
    
     * wrong argument passed to pci_unmap_single() on failure
       exit paths
     * leak in the same area
    
    Signed-off-by: Al Viro <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 drivers/net/s2io.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
index 2be0a0f..24feb00 100644
--- a/drivers/net/s2io.c
+++ b/drivers/net/s2io.c
@@ -2430,7 +2430,7 @@ static int fill_rx_buffers(struct s2io_nic *nic, int 
ring_no)
                                        (rxdp3->Buffer1_ptr == DMA_ERROR_CODE)) 
{
                                        pci_unmap_single
                                                (nic->pdev,
-                                               (dma_addr_t)skb->data,
+                                               (dma_addr_t)rxdp3->Buffer2_ptr,
                                                dev->mtu + 4,
                                                PCI_DMA_FROMDEVICE);
                                        goto pci_map_failed;
@@ -6211,7 +6211,7 @@ static int set_rxd_buffer_pointer(struct s2io_nic *sp, 
struct RxD_t *rxdp,
                        if( (rxdp3->Buffer0_ptr == 0) ||
                                (rxdp3->Buffer0_ptr == DMA_ERROR_CODE)) {
                                pci_unmap_single (sp->pdev,
-                                       (dma_addr_t)(*skb)->data,
+                                       (dma_addr_t)rxdp3->Buffer2_ptr,
                                        dev->mtu + 4, PCI_DMA_FROMDEVICE);
                                goto memalloc_failed;
                        }
@@ -6224,7 +6224,10 @@ static int set_rxd_buffer_pointer(struct s2io_nic *sp, 
struct RxD_t *rxdp,
                        if( (rxdp3->Buffer1_ptr == 0) ||
                                (rxdp3->Buffer1_ptr == DMA_ERROR_CODE)) {
                                pci_unmap_single (sp->pdev,
-                                       (dma_addr_t)(*skb)->data,
+                                       (dma_addr_t)rxdp3->Buffer0_ptr,
+                                       BUF0_LEN, PCI_DMA_FROMDEVICE);
+                               pci_unmap_single (sp->pdev,
+                                       (dma_addr_t)rxdp3->Buffer2_ptr,
                                        dev->mtu + 4, PCI_DMA_FROMDEVICE);
                                goto memalloc_failed;
                        }
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to