26 Oct, 2010

13 commits

  • Add __rcu annotations to :
    (struct netdev_rx_queue)->rps_map
    (struct netdev_rx_queue)->rps_flow_table
    struct rps_sock_flow_table *rps_sock_flow_table;

    And use appropriate rcu primitives.

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • One of the previous tproxy related patches split IPv6 defragmentation and
    connection tracking, but did not correctly add Kconfig stanzas to handle the
    new dependencies correctly. This patch fixes that by making the config options
    mirror the setup we have for IPv4: a distinct config option for defragmentation
    that is automatically selected by both connection tracking and
    xt_TPROXY/xt_socket.

    The patch also changes the #ifdefs enclosing IPv6 specific code in xt_socket
    and xt_TPROXY: we only compile these in case we have ip6tables support enabled.

    Signed-off-by: KOVACS Krisztian
    Signed-off-by: David S. Miller

    KOVACS Krisztian
     
  • (struct ip6_tnl)->next is rcu protected :
    (struct ip_tunnel)->next is rcu protected :
    (struct xfrm6_tunnel)->next is rcu protected :

    add __rcu annotation and proper rcu primitives.

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • (struct net_device)->garp_port is rcu protected :
    (struct garp_port)->applicants is rcu protected :

    add __rcu annotation and proper rcu primitives.

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • (struct net_device)->ip6_ptr is rcu protected :

    add __rcu annotation and proper rcu primitives.

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • (struct net_device)->vlgrp is rcu protected :

    add __rcu annotation and proper rcu primitives.

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • This driver tries to do up to half-second udelay()
    calls, which overflows on x86-64.

    Reported-by: Andi Kleen
    Signed-off-by: David S. Miller

    David S. Miller
     
  • Three is definitely too low, and we know from reports that GRE tunnels
    stacked as deeply as 37 levels cause stack overflows, so pick some
    reasonable value between those two.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • When searching for a free entry in either mlx4_register_vlan() or
    mlx4_register_mac(), and there is no free entry, the loop terminates without
    updating the local variable free thus causing out of array bounds access. Fix
    this by adding a proper check outside the loop.

    Signed-off-by: Eli Cohen
    Signed-off-by: David S. Miller

    Eli Cohen
     
  • On a busy network, the macb driver could get stuck in the interrupt
    handler, quickly triggering the watchdog, due to a confluence of
    factors:

    1. macb_poll re-enables interrupts unconditionally, even when it will
    be called again because it exhausted its rx budget

    2. macb_interrupt only disables interrupts after scheduling
    macb_poll, but scheduling fails when macb_poll is already scheduled
    because it didn't call napi_complete

    3. macb_interrupt loops until the interrupt status register is clear,
    which will never happen in this case if the driver doesn't disable
    the RX interrupt

    Since macb_interrupt runs in interrupt context, this effectively locks
    up the machine, triggering the hardware watchdog.

    This issue was readily reproducible on a flooded network with a
    modified 2.6.27.48 kernel. The same problem appears to still be in the
    2.6.36-rc8 driver code, so I am submitting this patch against that
    version. I have not tested this version of the patch except to make
    sure the kernel compiles.

    Signed-off-by: Joshua Hoke
    Signed-off-by: David S. Miller

    Joshua Hoke
     
  • We're setting skb->ip_summed to CHECKSUM_NONE for all non-TCP pkts, making the stack
    recompute checksum.This is a bug for UDP pkts for which cso must be used.

    Signed-off-by: Somnath Kotur
    Signed-off-by: David S. Miller

    Somnath Kotur
     
  • Calling netif_carrier_off before register_netdev was causing the network interface
    to miss a linkwatch pending event leading to an inconsistent state if the link
    is not up when interface is initialized.This is now invoked after register_netdev.

    Signed-off-by: Somnath Kotur
    Signed-off-by: David S. Miller

    Somnath Kotur
     
  • Only negative return from bind_qsets() should be considered an error and
    propagated.
    It fixes an issue reported by IBM on P Series platform.

    Signed-off-by: Divy Le Ray
    Tested-by: Nishanth Aravamudan
    Signed-off-by: David S. Miller

    Divy Le Ray
     

25 Oct, 2010

27 commits