17 Dec, 2010

8 commits

  • Special care is taken inside sk_port_alloc to avoid overwriting
    skc_node/skc_nulls_node. We should also avoid overwriting
    skc_bind_node/skc_portaddr_node.

    The patch fixes the following crash:

    BUG: unable to handle kernel paging request at fffffffffffffff0
    IP: [] udp4_lib_lookup2+0xad/0x370
    [] __udp4_lib_lookup+0x282/0x360
    [] __udp4_lib_rcv+0x31e/0x700
    [] ? ip_local_deliver_finish+0x65/0x190
    [] ? ip_local_deliver+0x88/0xa0
    [] udp_rcv+0x15/0x20
    [] ip_local_deliver_finish+0x65/0x190
    [] ip_local_deliver+0x88/0xa0
    [] ip_rcv_finish+0x32d/0x6f0
    [] ? netif_receive_skb+0x99c/0x11c0
    [] ip_rcv+0x2bb/0x350
    [] netif_receive_skb+0x99c/0x11c0

    Signed-off-by: Leonard Crestez
    Signed-off-by: Octavian Purdila
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Octavian Purdila
     
  • Since the mbox polling uses the schedule_timeout, the mbox_lock should be
    a mutex and not a spin lock.
    The commit f25b03a replaced udelay() with schedule_timeout() but didn't
    change mbox_lock to semaphore or mutex.

    Signed-off-by: Ivan Vecera
    Signed-off-by: David S. Miller

    Ivan Vecera
     
  • bond_na_send() attempts to insert a VLAN tag in between building and
    sending packets of the respective formats. If the slave does not
    implement hardware VLAN tag insertion then vlan_put_tag() will mangle
    the network-layer header because the Ethernet header is not present at
    this point (unlike in bond_arp_send()).

    Fix this by adding the tag out-of-line and relying on
    dev_hard_start_xmit() to insert it inline if necessary.

    Signed-off-by: Ben Hutchings
    Signed-off-by: Jay Vosburgh
    Reviewed-by: Jesse Gross
    Signed-off-by: David S. Miller

    Ben Hutchings
     
  • bond_change_active_slave() may be called when a slave is added, even
    if the bond has not been brought up yet. It may then attempt to send
    packets, and further it may use mcast_work which is uninitialised
    before the bond is brought up. Add the necessary checks for
    netif_running(bond->dev).

    Signed-off-by: Ben Hutchings
    Signed-off-by: Jay Vosburgh
    Signed-off-by: David S. Miller

    Ben Hutchings
     
  • A bond may have a mixture of slave devices with and without hardware
    VLAN tag insertion capability. Therefore it always claims this
    capability and performs software VLAN tag insertion if the slave does
    not.

    Since commit 7b9c60903714bf0a19d746b228864bad3497284e, this has
    also been done by dev_hard_start_xmit(). The result is that VLAN-
    tagged skbs are now double-tagged when transmitted through slave
    devices without hardware VLAN tag insertion!

    Remove the now-redundant logic from bond_dev_queue_xmit().

    Signed-off-by: Ben Hutchings
    Signed-off-by: Jay Vosburgh
    Reviewed-by: Jesse Gross
    Signed-off-by: David S. Miller

    Ben Hutchings
     
  • axnet_cs:
    Accton EN2328 or compatible (id: 0x01bf, 0x2328) uses Asix chip.
    So it works better with axnet_cs instead of pcnet_cs.

    Signed-off-by: Ken Kawasaki
    Signed-off-by: David S. Miller

    Ken Kawasaki
     
  • The first big packets sent to a "low-MTU" client correctly
    triggers the creation of a temporary route containing the reduced MTU.

    But after the temporary route has expired, new ICMP6 "packet too big"
    will be sent, rt6_pmtu_discovery will find the previous EXPIRED route
    check that its mtu isn't bigger then in icmp packet and do nothing
    before the temporary route will not deleted by gc.

    I make the simple experiment:
    while :; do
    time ( dd if=/dev/zero bs=10K count=1 | ssh hostname dd of=/dev/null ) || break;
    done

    The "time" reports real 0m0.197s if a temporary route isn't expired, but
    it reports real 0m52.837s (!!!!) immediately after a temporare route has
    expired.

    Signed-off-by: Andrey Vagin
    Signed-off-by: David S. Miller

    Andrey Vagin
     
  • The returned slave is incorrect, if the net device under check is not
    charged yet by the master.

    Signed-off-by: Hillf Danton
    Signed-off-by: David S. Miller

    Hillf Danton
     

16 Dec, 2010

1 commit


15 Dec, 2010

1 commit


14 Dec, 2010

5 commits

  • On suspend, there might be usb wireless drivers which wrongly trigger
    the warning in ieee80211_work_work. If an usb driver doesn't have a
    suspend hook, the usb stack will disconnect the device. On disconnect,
    a mac80211 driver calls ieee80211_unregister_hw, which calls dev_close,
    which calls ieee80211_stop, and in the end calls ieee80211_work_purge->
    ieee80211_work_work.

    The problem is that this call to ieee80211_work_purge comes after
    mac80211 is suspended, triggering the warning even when we don't have
    work queued in work_list (the expected case when already suspended),
    because it always calls ieee80211_work_work.

    So, just call ieee80211_work_work in ieee80211_work_purge if we really
    have to abort work. This addresses the warning reported at
    https://bugzilla.kernel.org/show_bug.cgi?id=24402

    Signed-off-by: Herton Ronaldo Krzesinski
    Signed-off-by: John W. Linville

    Herton Ronaldo Krzesinski
     
  • This patch adds five more USBIDs to the table.

    Source:
    http://www.linuxant.com/pipermail/driverloader/2005q3/002307.html
    http://wireless.kernel.org/en/users/Drivers/p54/devices (by M. Davis)

    Cc:
    Signed-off-by: Christian Lamparter
    Signed-off-by: John W. Linville

    Christian Lamparter
     
  • dev_open will eventually call ieee80211_ibss_join which sets up the
    skb used for beacons/probe-responses however it is possible to
    receive beacons that attempt to merge before this occurs causing
    a null pointer dereference. Check ssid_len as that is the last
    thing set in ieee80211_ibss_join.

    This occurs quite easily in the presence of adhoc nodes with hidden SSID's

    revised previous patch to check further up based on irc feedback

    Signed-off-by: Tim Harvey
    Reviewed-by: Johannes Berg
    Signed-off-by: John W. Linville

    Tim Harvey
     
  • The code wants to check if there's a channel and it is not disabled,
    but it used to check if channel is not NULL and accessed the channel
    struct if this check failed.

    Signed-off-by: Sven Neumann
    Acked-by: Dan Williams
    Signed-off-by: John W. Linville

    Sven Neumann
     
  • John W. Linville
     

13 Dec, 2010

7 commits


11 Dec, 2010

12 commits


10 Dec, 2010

5 commits

  • There is definitly a problem, that some option cards send up broken
    IP pakets leading to corrupted IP packets. These corruptions aren't
    detected, because the driver claims that the packets are already
    checksummed. This change removes the CHECKSUM_UNNECESSARY option
    and let IP detect broken data.

    Signed-off-by: Thomas Bogendoerfer
    Signed-off-by: David S. Miller

    Thomas Bogendoerfer
     
  • xfrm_state_migrate calls kfree instead of xfrm_state_put to free
    a failed state. According to git commit 553f9118 this can cause
    memory leaks.

    Signed-off-by: Thomas Egerer
    Signed-off-by: Steffen Klassert
    Acked-by: Herbert Xu
    Signed-off-by: David S. Miller

    Thomas Egerer
     
  • A while back I made some changes to enable netpoll in the bonding driver. Among
    them was a per-cpu flag that indicated we were in a path that held locks which
    could cause the netpoll path to block in during tx, and as such the tx path
    should queue the frame for later use. This appears to have given rise to a
    regression. If one of those paths on which we hold the per-cpu flag yields the
    cpu, its possible for us to come back on a different cpu, leading to us clearing
    a different flag than we set. This results in odd netpoll drops, and BUG
    backtraces appearing in the log, as we check to make sure that we only clear set
    bits, and only set clear bits. I had though briefly about changing the
    offending paths so that they wouldn't sleep, but looking at my origional work
    more closely, it doesn't appear that a per-cpu flag is warranted. We alrady
    gate the checking of this flag on IFF_IN_NETPOLL, so we don't hit this in the
    normal tx case anyway. And practically speaking, the normal use case for
    netpoll is to only have one client anyway, so we're not going to erroneously
    queue netpoll frames when its actually safe to do so. As such, lets just
    convert that per-cpu flag to an atomic counter. It fixes the rescheduling bugs,
    is equivalent from a performance perspective and actually eliminates some code
    in the process.

    Tested by the reporter and myself, successfully

    Reported-by: Liang Zheng
    CC: Jay Vosburgh
    CC: Andy Gospodarek
    CC: David S. Miller
    Signed-off-by: Neil Horman
    Signed-off-by: David S. Miller

    Neil Horman
     
  • From: Johannes Berg

    The current EEPROM reading code has some layout
    assumptions that now turned out to be false with
    some newer versions of the EEPROM. Luckily, we
    can avoid all such assumptions by using data in
    the EEPROM itself, so implement using that.

    However, for risk mitigation purposes, keep the
    old reading code for current hardware for now.

    Signed-off-by: Johannes Berg
    Signed-off-by: Wey-Yi Guy

    Wey-Yi Guy
     
  • Some fields we didn't previously use from the
    enhanced TX power structure will be needed in
    the next patch, so rename them to their correct
    names to be able to use them and change code
    reading them accordingly.

    Signed-off-by: Johannes Berg
    Signed-off-by: Wey-Yi Guy

    Johannes Berg
     

09 Dec, 2010

1 commit