lkml.org 
[lkml]   [2011]   [Apr]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[072/105] b43: allocate receive buffers big enough for max frame len + offset
    2.6.38-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: John W. Linville <linville@tuxdriver.com>

    commit c85ce65ecac078ab1a1835c87c4a6319cf74660a upstream.

    Otherwise, skb_put inside of dma_rx can fail...

    https://bugzilla.kernel.org/show_bug.cgi?id=32042

    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/net/wireless/b43/dma.c | 2 +-
    drivers/net/wireless/b43/dma.h | 2 +-
    2 files changed, 2 insertions(+), 2 deletions(-)

    --- a/drivers/net/wireless/b43/dma.c
    +++ b/drivers/net/wireless/b43/dma.c
    @@ -1536,7 +1536,7 @@ static void dma_rx(struct b43_dmaring *r
    dmaaddr = meta->dmaaddr;
    goto drop_recycle_buffer;
    }
    - if (unlikely(len > ring->rx_buffersize)) {
    + if (unlikely(len + ring->frameoffset > ring->rx_buffersize)) {
    /* The data did not fit into one descriptor buffer
    * and is split over multiple buffers.
    * This should never happen, as we try to allocate buffers
    --- a/drivers/net/wireless/b43/dma.h
    +++ b/drivers/net/wireless/b43/dma.h
    @@ -163,7 +163,7 @@ struct b43_dmadesc_generic {
    /* DMA engine tuning knobs */
    #define B43_TXRING_SLOTS 256
    #define B43_RXRING_SLOTS 64
    -#define B43_DMA0_RX_BUFFERSIZE IEEE80211_MAX_FRAME_LEN
    +#define B43_DMA0_RX_BUFFERSIZE (B43_DMA0_RX_FRAMEOFFSET + IEEE80211_MAX_FRAME_LEN)

    /* Pointer poison */
    #define B43_DMA_PTR_POISON ((void *)ERR_PTR(-ENOMEM))



    \
     
     \ /
      Last update: 2011-04-12 16:49    [W:0.031 / U:89.856 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site