21 Jun, 2011

3 commits

  • * 'for-2.6.40' of git://linux-nfs.org/~bfields/linux:
    nfsd4: fix break_lease flags on nfsd open
    nfsd: link returns nfserr_delay when breaking lease
    nfsd: v4 support requires CRYPTO
    nfsd: fix dependency of nfsd on auth_rpcgss

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (40 commits)
    pxa168_eth: fix race in transmit path.
    ipv4, ping: Remove duplicate icmp.h include
    netxen: fix race in skb->len access
    sgi-xp: fix a use after free
    hp100: fix an skb->len race
    netpoll: copy dev name of slaves to struct netpoll
    ipv4: fix multicast losses
    r8169: fix static initializers.
    inet_diag: fix inet_diag_bc_audit()
    gigaset: call module_put before restart of if_open()
    farsync: add module_put to error path in fst_open()
    net: rfs: enable RFS before first data packet is received
    fs_enet: fix freescale FCC ethernet dp buffer alignment
    netdev: bfin_mac: fix memory leak when freeing dma descriptors
    vlan: don't call ndo_vlan_rx_register on hardware that doesn't have vlan support
    caif: Bugfix - XOFF removed channel from caif-mux
    tun: teach the tun/tap driver to support netpoll
    dp83640: drop PHY status frames in the driver.
    dp83640: fix phy status frame event parsing
    phylib: Allow BCM63XX PHY to be selected only on BCM63XX.
    ...

    Linus Torvalds
     
  • Remove the duplicate inclusion of net/icmp.h from net/ipv4/ping.c

    Signed-off-by: Jesper Juhl
    Signed-off-by: David S. Miller

    Jesper Juhl
     

20 Jun, 2011

1 commit


19 Jun, 2011

1 commit

  • Knut Tidemann found that first packet of a multicast flow was not
    correctly received, and bisected the regression to commit b23dd4fe42b4
    (Make output route lookup return rtable directly.)

    Special thanks to Knut, who provided a very nice bug report, including
    sample programs to demonstrate the bug.

    Reported-and-bisectedby: Knut Tidemann
    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     

18 Jun, 2011

3 commits

  • A malicious user or buggy application can inject code and trigger an
    infinite loop in inet_diag_bc_audit()

    Also make sure each instruction is aligned on 4 bytes boundary, to avoid
    unaligned accesses.

    Reported-by: Dan Rosenberg
    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • Le jeudi 16 juin 2011 à 23:38 -0400, David Miller a écrit :
    > From: Ben Hutchings
    > Date: Fri, 17 Jun 2011 00:50:46 +0100
    >
    > > On Wed, 2011-06-15 at 04:15 +0200, Eric Dumazet wrote:
    > >> @@ -1594,6 +1594,7 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
    > >> goto discard;
    > >>
    > >> if (nsk != sk) {
    > >> + sock_rps_save_rxhash(nsk, skb->rxhash);
    > >> if (tcp_child_process(sk, nsk, skb)) {
    > >> rsk = nsk;
    > >> goto reset;
    > >>
    > >
    > > I haven't tried this, but it looks reasonable to me.
    > >
    > > What about IPv6? The logic in tcp_v6_do_rcv() looks very similar.
    >
    > Indeed ipv6 side needs the same fix.
    >
    > Eric please add that part and resubmit. And in fact I might stick
    > this into net-2.6 instead of net-next-2.6
    >

    OK, here is the net-2.6 based one then, thanks !

    [PATCH v2] net: rfs: enable RFS before first data packet is received

    First packet received on a passive tcp flow is not correctly RFS
    steered.

    One sock_rps_record_flow() call is missing in inet_accept()

    But before that, we also must record rxhash when child socket is setup.

    Signed-off-by: Eric Dumazet
    CC: Tom Herbert
    CC: Ben Hutchings
    CC: Jamal Hadi Salim
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • …wireless-2.6 into for-davem

    John W. Linville
     

17 Jun, 2011

6 commits

  • This patch removes the call to ndo_vlan_rx_register if the underlying
    device doesn't have hardware support for VLAN.
    Signed-off-by: Antoine Reversat
    Signed-off-by: David S. Miller

    Antoine Reversat
     
  • XOFF was mixed up with DOWN indication, causing causing CAIF channel to be
    removed from mux and all incoming traffic to be lost after receiving flow-off.
    Fix this by replacing FLOW_OFF with DOWN notification.

    Signed-off-by: Sjur Brændeland
    Signed-off-by: David S. Miller

    sjur.brandeland@stericsson.com
     
  • Upon reception of a MGM report packet the kernel sets the mrouters_only flag
    in a skb that is a clone of the original skb, which means that the bridge
    loses track of MGM packets (cb buffers are tied to a specific skb and not
    shared) and it ends up forwading join requests to the bridge interface.

    This can cause unexpected membership timeouts and intermitent/permanent loss
    of connectivity as described in RFC 4541 [2.1.1. IGMP Forwarding Rules]:

    A snooping switch should forward IGMP Membership Reports only to
    those ports where multicast routers are attached.
    [...]
    Sending membership reports to other hosts can result, for IGMPv1
    and IGMPv2, in unintentionally preventing a host from joining a
    specific multicast group.

    Signed-off-by: Fernando Luis Vazquez Cao
    Signed-off-by: David S. Miller

    Fernando Luis Vázquez Cao
     
  • Upon reception of a IGMP/IGMPv2 membership report the kernel sets the
    mrouters_only flag in a skb that may be a clone of the original skb, which
    means that sometimes the bridge loses track of membership report packets (cb
    buffers are tied to a specific skb and not shared) and it ends up forwading
    join requests to the bridge interface.

    This can cause unexpected membership timeouts and intermitent/permanent loss
    of connectivity as described in RFC 4541 [2.1.1. IGMP Forwarding Rules]:

    A snooping switch should forward IGMP Membership Reports only to
    those ports where multicast routers are attached.
    [...]
    Sending membership reports to other hosts can result, for IGMPv1
    and IGMPv2, in unintentionally preventing a host from joining a
    specific multicast group.

    Signed-off-by: Fernando Luis Vazquez Cao
    Tested-by: Hayato Kakuta
    Signed-off-by: David S. Miller

    Fernando Luis Vázquez Cao
     
  • David S. Miller
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:
    AFS: Use i_generation not i_version for the vnode uniquifier
    AFS: Set s_id in the superblock to the volume name
    vfs: Fix data corruption after failed write in __block_write_begin()
    afs: afs_fill_page reads too much, or wrong data
    VFS: Fix vfsmount overput on simultaneous automount
    fix wrong iput on d_inode introduced by e6bc45d65d
    Delay struct net freeing while there's a sysfs instance refering to it
    afs: fix sget() races, close leak on umount
    ubifs: fix sget races
    ubifs: split allocation of ubifs_info into a separate function
    fix leak in proc_set_super()

    Linus Torvalds
     

16 Jun, 2011

6 commits


14 Jun, 2011

2 commits


13 Jun, 2011

2 commits

  • Quote from Patric Mc Hardy
    "This looks like nfnetlink.c excited and destroyed the nfnl socket, but
    ip_vs was still holding a reference to a conntrack. When the conntrack
    got destroyed it created a ctnetlink event, causing an oops in
    netlink_has_listeners when trying to use the destroyed nfnetlink
    socket."

    If nf_conntrack_netlink is loaded before ip_vs this is not a problem.

    This patch simply avoids calling ip_vs_conn_drop_conntrack()
    when netns is dying as suggested by Julian.

    Signed-off-by: Hans Schillstrom
    Signed-off-by: Simon Horman

    Hans Schillstrom
     
  • * new refcount in struct net, controlling actual freeing of the memory
    * new method in kobj_ns_type_operations (->drop_ns())
    * ->current_ns() semantics change - it's supposed to be followed by
    corresponding ->drop_ns(). For struct net in case of CONFIG_NET_NS it bumps
    the new refcount; net_drop_ns() decrements it and calls net_free() if the
    last reference has been dropped. Method renamed to ->grab_current_ns().
    * old net_free() callers call net_drop_ns() instead.
    * sysfs_exit_ns() is gone, along with a large part of callchain
    leading to it; now that the references stored in ->ns[...] stay valid we
    do not need to hunt them down and replace them with NULL. That fixes
    problems in sysfs_lookup() and sysfs_readdir(), along with getting rid
    of sb->s_instances abuse.

    Note that struct net *shutdown* logics has not changed - net_cleanup()
    is called exactly when it used to be called. The only thing postponed by
    having a sysfs instance refering to that struct net is actual freeing of
    memory occupied by struct net.

    Signed-off-by: Al Viro

    Al Viro
     

12 Jun, 2011

2 commits

  • There is a dev_put(ndev) missing on an error path. This was
    introduced in 0c1ad04aecb "netpoll: prevent netpoll setup on slave
    devices".

    Signed-off-by: Dan Carpenter
    Signed-off-by: David S. Miller

    Dan Carpenter
     
  • Testing of VLAN_FLAG_REORDER_HDR does not belong in vlan_untag
    but rather in vlan_do_receive. Otherwise the vlan header
    will not be properly put on the packet in the case of
    vlan header accelleration.

    As we remove the check from vlan_check_reorder_header
    rename it vlan_reorder_header to keep the naming clean.

    Fix up the skb->pkt_type early so we don't look at the packet
    after adding the vlan tag, which guarantees we don't goof
    and look at the wrong field.

    Use a simple if statement instead of a complicated switch
    statement to decided that we need to increment rx_stats
    for a multicast packet.

    Hopefully at somepoint we will just declare the case where
    VLAN_FLAG_REORDER_HDR is cleared as unsupported and remove
    the code. Until then this keeps it working correctly.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: Jiri Pirko
    Acked-by: Changli Gao
    Signed-off-by: David S. Miller

    Jiri Pirko
     

11 Jun, 2011

3 commits


10 Jun, 2011

3 commits


09 Jun, 2011

3 commits

  • In commit 8d8fc29d02a33e4bd5f4fa47823c1fd386346093
    (netpoll: disable netpoll when enslave a device), we automatically
    disable netpoll when the underlying device is being enslaved,
    we also need to prevent people from setuping netpoll on
    devices that are already enslaved.

    Signed-off-by: WANG Cong
    Signed-off-by: David S. Miller

    WANG Cong
     
  • commit 2c8cec5c10bc (ipv4: Cache learned PMTU information in inetpeer)
    added some racy peer->pmtu_expires accesses.

    As its value can be changed by another cpu/thread, we should be more
    careful, reading its value once.

    Add peer_pmtu_expired() and peer_pmtu_cleaned() helpers

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

    Eric Dumazet
     
  • Ignacy reports that sometimes after leaving an IBSS
    joining a new one didn't work because there still
    were stations on the list. He fixed it by flushing
    stations when attempting to join a new IBSS, but
    this shouldn't be happening in the first case. When
    I looked into it I saw a race condition in teardown
    that could cause stations to be added after flush,
    and thus cause this situation. Ignacy confirms that
    after applying my patch he hasn't seen this happen
    again.

    Reported-by: Ignacy Gawedzki
    Debugged-by: Ignacy Gawedzki
    Tested-by: Ignacy Gawedzki
    Cc: stable@kernel.org
    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

08 Jun, 2011

4 commits

  • If we cancel a write, trigger the safe completions to prevent a sync from
    blocking indefinitely in ceph_osdc_sync().

    Signed-off-by: Sage Weil

    Sage Weil
     
  • We may write 4 byte too much when we reinitialize the anti replay
    window in the replay advance functions. This patch fixes this by
    adjusting the last index of the initialization loop.

    Signed-off-by: Steffen Klassert
    Signed-off-by: David S. Miller

    Steffen Klassert
     
  • When one of the SSID's length passed in a scan or sched_scan request
    is larger than 255, there will be an overflow in the u8 that is used
    to store the length before checking. This causes the check to fail
    and we overrun the buffer when copying the SSID.

    Fix this by checking the nl80211 attribute length before copying it to
    the struct.

    This is a follow up for the previous commit
    208c72f4fe44fe09577e7975ba0e7fa0278f3d03, which didn't fix the problem
    entirely.

    Reported-by: Ido Yariv
    Signed-off-by: Luciano Coelho
    Signed-off-by: John W. Linville

    Luciano Coelho
     
  • This reverts commit 1d38c16ce4156f63b45abbd09dd28ca2ef5172b4.

    The mac80211 maintainer raised complaints about abuse of the CSA stop
    reason, and about whether this patch actually serves its intended
    purpose at all.

    Signed-off-by: John W. Linville

    John W. Linville
     

07 Jun, 2011

1 commit

  • Frank Blaschka reported :

    During heavy network load we turn off/on cpus.
    Sometimes this causes a stall on the network device.
    Digging into the dump I found out following:

    napi is scheduled but does not run. From the I/O buffers
    and the napi state I see napi/rx_softirq processing has stopped
    because the budget was reached. napi stays in the
    softnet_data poll_list and the rx_softirq was raised again.

    I assume at this time the cpu offline comes in,
    the rx softirq is raised/moved to another cpu but napi stays in the
    poll_list of the softnet_data of the now offline cpu.

    Reviewing dev_cpu_callback (net/core/dev.c) I did not find the
    poll_list is transfered to the new cpu.

    This patch is a straightforward implementation of Frank suggestion :

    Transfert poll_list and trigger NET_RX_SOFTIRQ on new cpu.

    Reported-by: Frank Blaschka
    Signed-off-by: Heiko Carstens
    Signed-off-by: Eric Dumazet
    Tested-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Heiko Carstens