lkml.org 
[lkml]   [2012]   [Mar]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[ 18/41] sfc: Fix assignment of ip_summed for pre-allocated skbs
    3.2-stable review patch.  If anyone has any objections, please let me know.

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


    From: Ben Hutchings <bhutchings@solarflare.com>

    [ Upstream commit ff3bc1e7527504a93710535611b2f812f3bb89bf ]

    When pre-allocating skbs for received packets, we set ip_summed =
    CHECKSUM_UNNCESSARY. We used to change it back to CHECKSUM_NONE when
    the received packet had an incorrect checksum or unhandled protocol.

    Commit bc8acf2c8c3e43fcc192762a9f964b3e9a17748b ('drivers/net: avoid
    some skb->ip_summed initializations') mistakenly replaced the latter
    assignment with a DEBUG-only assertion that ip_summed ==
    CHECKSUM_NONE. This assertion is always false, but it seems no-one
    has exercised this code path in a DEBUG build.

    Fix this by moving our assignment of CHECKSUM_UNNECESSARY into
    efx_rx_packet_gro().

    Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/ethernet/sfc/rx.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/drivers/net/ethernet/sfc/rx.c
    +++ b/drivers/net/ethernet/sfc/rx.c
    @@ -156,11 +156,10 @@ static int efx_init_rx_buffers_skb(struc
    if (unlikely(!skb))
    return -ENOMEM;

    - /* Adjust the SKB for padding and checksum */
    + /* Adjust the SKB for padding */
    skb_reserve(skb, NET_IP_ALIGN);
    rx_buf->len = skb_len - NET_IP_ALIGN;
    rx_buf->is_page = false;
    - skb->ip_summed = CHECKSUM_UNNECESSARY;

    rx_buf->dma_addr = pci_map_single(efx->pci_dev,
    skb->data, rx_buf->len,
    @@ -499,6 +498,7 @@ static void efx_rx_packet_gro(struct efx

    EFX_BUG_ON_PARANOID(!checksummed);
    rx_buf->u.skb = NULL;
    + skb->ip_summed = CHECKSUM_UNNECESSARY;

    gro_result = napi_gro_receive(napi, skb);
    }



    \
     
     \ /
      Last update: 2012-03-17 00:49    [W:0.021 / U:32.608 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site