01 Jul, 2010

3 commits


30 Jun, 2010

3 commits

  • In driver ixgbe, ixgbe_atr may cause crashes for non-ipv4 packets. Just
    add a test to check skb->protocol. It may crash on short packets due
    to ip_hdr() access.

    Signed-off-by: Guillaume Gaudonville
    Acked-by: Peter P Waskiewicz Jr
    Signed-off-by: Don Skidmore
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Guillaume Gaudonville
     
  • Disabling the tx laser while receiving DMA requests
    can hang the device. After this occurs the device
    is in a bad state. The GPIO bit never clears when
    PCI master access is disabled and a reboot is required
    to get the device in a good state again.

    Signed-off-by: John Fastabend
    Acked-by: Peter P Waskiewicz Jr
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    John Fastabend
     
  • This patch added to 2.6.34:

    commit 5f6c01819979afbfec7e0b15fe52371b8eed87e8
    Author: Jesse Brandeburg
    Date: Wed Apr 14 16:04:23 2010 -0700

    ixgbe: fix bug with vlan strip in promsic mode

    among other things added a function called ixgbe_vlan_filter_enable.
    This new function wants to access and set some rx_ring parameters, but
    adapter->rx_ring has already been freed. This simply moves the free
    until after the access and makes __ixgbe_shutdown look more like
    ixgbe_remove.

    Signed-off-by: Andy Gospodarek
    Acked-by: Jesse Brandeburg
    Tested-by: Emil Tantilov
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Andy Gospodarek
     

29 Jun, 2010

3 commits

  • struct ethtool_rxnfc was originally defined in 2.6.27 for the
    ETHTOOL_{G,S}RXFH command with only the cmd, flow_type and data
    fields. It was then extended in 2.6.30 to support various additional
    commands. These commands should have been defined to use a new
    structure, but it is too late to change that now.

    Since user-space may still be using the old structure definition
    for the ETHTOOL_{G,S}RXFH commands, and since they do not need the
    additional fields, only copy the originally defined fields to and
    from user-space.

    Signed-off-by: Ben Hutchings
    Cc: stable@kernel.org
    Signed-off-by: David S. Miller

    Ben Hutchings
     
  • On a 32-bit machine, info.rule_cnt >= 0x40000000 leads to integer
    overflow and the buffer may be smaller than needed. Since
    ETHTOOL_GRXCLSRLALL is unprivileged, this can presumably be used for at
    least denial of service.

    Signed-off-by: Ben Hutchings
    Cc: stable@kernel.org
    Signed-off-by: David S. Miller

    Ben Hutchings
     
  • Support for netpoll over bonded interfaces was added here:

    commit f6dc31a85cd46a959bdd987adad14c3b645e03c1
    Author: WANG Cong
    Date: Thu May 6 00:48:51 2010 -0700

    bonding: make bonding support netpoll

    but it is bad enough that we should probably just disable netpoll over
    bonding until some of the locking logic in the bonding driver is changed
    or converted completely to RCU. Simple actions like changing the active
    slave in active-backup mode will hang the box if a high enough printk
    debugging level is enabled.

    Keeping the old code around will be good for anyone that wants to work
    on it (and for after the RCU conversion), so I propose this small patch
    rather than ripping it all out.

    Signed-off-by: Andy Gospodarek
    Signed-off-by: Jay Vosburgh
    Signed-off-by: David S. Miller

    Andy Gospodarek
     

27 Jun, 2010

3 commits


26 Jun, 2010

10 commits

  • CAPI applications can handle several connections in parallel,
    so one connection state per application isn't sufficient.
    Store the connection state in the channel structure instead.

    Impact: bugfix
    Signed-off-by: Tilman Schmidt
    Signed-off-by: David S. Miller

    Tilman Schmidt
     
  • Adapt to buggy device firmware which accepts setting HLC only in the
    same command line as BC, by encoding HLC and BC in a single command
    if both are specified, and rejecting HLC without BC.

    Impact: bugfix
    Signed-off-by: Tilman Schmidt
    Signed-off-by: David S. Miller

    Tilman Schmidt
     
  • The Gigaset CAPI driver handled all DATA_B3_REQ messages as if the
    Delivery Confirmation flag bit was set, delaying the emission of the
    DATA_B3_CONF reply until the data was actually transmitted. Some
    CAPI applications (notably Asterisk) aren't happy with that
    behaviour. Change it to actually evaluate the Delivery Confirmation
    flag as described the CAPI specification.

    Impact: bugfix
    Signed-off-by: Tilman Schmidt
    Signed-off-by: David S. Miller

    Tilman Schmidt
     
  • Make the Gigaset CAPI driver select L2_VOICE (AT^SBPR=2) as the
    layer 2 encoding for transparent connections, like the ISDN4Linux
    variant. L2_BITSYNC (AT^SBPR=0) mutes internal connections and
    distorts external ones.

    Impact: bugfix
    Signed-off-by: Tilman Schmidt
    Signed-off-by: David S. Miller

    Tilman Schmidt
     
  • Fix the Gigaset CAPI driver to limit the length of a connection's
    payload data receive buffers to the corresponding CAPI application's
    data buffer size, as some real-life CAPI applications tend to be
    rather unhappy if they receive bigger data blocks than requested.

    Impact: bugfix
    Signed-off-by: Tilman Schmidt
    Signed-off-by: David S. Miller

    Tilman Schmidt
     
  • If the call to phy_connect fails, we will return directly instead of freeing
    the previously allocated struct net_device.

    Signed-off-by: Florian Fainelli
    CC: stable@kernel.org
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • smc91c92_cs:
    Fix the problem that lan & modem does not work simultaneously
    in the Megahertz multi-function card.
    We need to write MEGAHERTZ_ISR to retrigger interrupt.

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

    Ken Kawasaki
     
  • The addition of TLLAO option created a kernel OOPS regression
    for the case where neighbor advertisement is being sent via
    proxy path. When using proxy, ipv6_get_ifaddr() returns NULL
    causing the NULL dereference.

    Change causing the bug was:
    commit f7734fdf61ec6bb848e0bafc1fb8bad2c124bb50
    Author: Octavian Purdila
    Date: Fri Oct 2 11:39:15 2009 +0000

    make TLLAO option for NA packets configurable

    Signed-off-by: Stephen Hemminger
    Acked-by: YOSHIFUJI Hideaki
    Signed-off-by: David S. Miller

    stephen hemminger
     
  • When building tx command, always set TX_CMD_FLAG_PROT_REQUIRE_MSK
    for 5000 series and up.

    Without setting this bit the firmware will not examine the RTS/CTS setting
    and thus not send traffic with the appropriate protection. RTS/CTS is is
    required for HT traffic in a noisy environment where, without this setting,
    connections will stall on some hardware as documented in the patch that
    initially attempted to address this:

    commit 1152dcc28c66a74b5b3f1a3ede0aa6729bfd48e4
    Author: Wey-Yi Guy
    Date: Fri Jan 15 13:42:58 2010 -0800

    iwlwifi: Fix throughput stall issue in HT mode for 5000

    Similar to 6000 and 1000 series, RTS/CTS is the recommended
    protection mechanism for 5000 series in HT mode based on the HW design.
    Using RTS/CTS will better protect the inner exchange from interference,
    especially in highly-congested environment, it also prevent uCode encounter
    TX FIFO underrun and other HT mode related performance issues.

    For 3945 and 4965, different flags are used for RTS/CTS or CTS-to-Self
    protection.

    Signed-off-by: Wey-Yi Guy
    Signed-off-by: Reinette Chatre

    Wey-Yi Guy
     
  • commit 3474ad635db371b0d8d0ee40086f15d223d5b6a4
    Author: Johannes Berg
    Date: Thu Apr 29 04:43:05 2010 -0700

    iwlwifi: apply filter flags directly

    broke multicast. The reason, it turns out, is that
    the code previously checked if ALLMULTI _changed_,
    which the new code no longer did, and normally it
    _never_ changes. Had somebody changed it manually,
    the code prior to my patch there would have been
    broken already.

    The reason is that we always, unconditionally, ask
    the device to pass up all multicast frames, but the
    new code made it depend on ALLMULTI which broke it
    since now we'd pass up multicast frames depending
    on the default filter in the device, which isn't
    necessarily what we want (since we don't program it
    right now).

    Fix this by simply not checking allmulti as we have
    allmulti behaviour enabled already anyway.

    Reported-by: Maxim Levitsky
    Tested-by: Maxim Levitsky
    Signed-off-by: Johannes Berg

    Johannes Berg
     

25 Jun, 2010

2 commits

  • commit ff6e2163f28a1094fb5ca5950fe2b43c3cf6bc7a accidentally added a
    regression on the bnep code. Fixing it.

    Signed-off-by: Gustavo F. Padovan
    Signed-off-by: David S. Miller

    Gustavo F. Padovan
     
  • Fix the bundle validation code to not assume having a valid policy.
    When we have multiple transformations for a xfrm policy, the bundle
    instance will be a chain of bundles with only the first one having
    the policy reference. When policy_genid is bumped it will expire the
    first bundle in the chain which is equivalent of expiring the whole
    chain.

    Reported-bisected-and-tested-by: Justin P. Mattock
    Signed-off-by: Timo Teräs
    Signed-off-by: David S. Miller

    Timo Teräs
     

24 Jun, 2010

5 commits

  • sky2_phy_reinit is called by the ethtool helpers sky2_set_settings,
    sky2_nway_reset and sky2_set_pauseparam when netif_running.

    However, at the end of sky2_phy_init GM_GP_CTRL has GM_GPCR_RX_ENA and
    GM_GPCR_TX_ENA cleared. So, doing these commands causes the device to
    stop working:

    $ ethtool -r eth0
    $ ethtool -A eth0 autoneg off

    Fix this issue by enabling Rx/Tx after running sky2_phy_init in
    sky2_phy_reinit.

    Signed-off-by: Brandon Philips
    Tested-by: Brandon Philips
    Cc: stable@kernel.org
    Tested-by: Mike McCormack
    Signed-off-by: David S. Miller

    Brandon Philips
     
  • There are few places where ANI is started without checking
    if it is right to start. This might lead to a case where ani
    timer would be left undeleted and cause improper memory acccess
    during module unload. This bug is clearly exposed with
    paprd support where the driver detects tx hang and does a
    chip reset. During this reset ani is (re)started without checking
    if it needs to be started. This would leave a timer scheduled
    even after all the resources are freed and cause a panic.

    This patch introduces a bit in sc_flags to indicate if ani
    needs to be started in sw_scan_start() and ath_reset().
    This would fix the following panic. This issue is easily seen
    with ar9003 + paprd.

    BUG: unable to handle kernel paging request at 0000000000003f38
    [] ? __queue_work+0x41/0x50
    [] run_timer_softirq+0x17a/0x370
    [] ? tick_dev_program_event+0x48/0x110
    [] __do_softirq+0xb9/0x1f0
    [] ? handle_IRQ_event+0x50/0x160
    [] call_softirq+0x1c/0x30
    [] do_softirq+0x65/0xa0
    [] irq_exit+0x85/0x90
    [] do_IRQ+0x75/0xf0
    [] ret_from_intr+0x0/0x11

    [] ? acpi_idle_enter_simple+0xe4/0x119
    [] ? acpi_idle_enter_simple+0xdd/0x119
    [] cpuidle_idle_call+0xa7/0x140
    [] cpu_idle+0xb3/0x110
    [] start_secondary+0x1ee/0x1f5

    Signed-off-by: Vasanthakumar Thiagarajan
    Signed-off-by: John W. Linville

    Vasanthakumar Thiagarajan
     
  • Disable statistics initialization for eth clients that do not support
    statistics. This prevents memory corruption on bnx2x hw.

    Signed-off-by: Dmitry Kravkov
    Signed-off-by: Michael Chan
    Signed-off-by: Eilon Greenstein

    Dmitry Kravkov
     
  • netxen_nic and qlcnic driver depends on firmware_class module.

    Signed-off-by: Anirban Chakraborty
    Signed-off-by: Amit Kumar Salecha
    Signed-off-by: David S. Miller

    Anirban Chakraborty
     
  • commit aa2ea0586d9d (tcp: fix outsegs stat for TSO segments) incorrectly
    assumed SNMP_ADD_STATS() was used from BH context.

    Fix this using mib[!in_softirq()] instead of mib[0]

    Signed-off-by: Eric Dumazet
    CC: Tom Herbert
    Signed-off-by: David S. Miller

    Eric Dumazet
     

23 Jun, 2010

2 commits


22 Jun, 2010

3 commits

  • It has been reported that the new UFO software fallback path
    fails under certain conditions with NFS. I tracked the problem
    down to the generation of UFO packets that are smaller than the
    MTU. The software fallback path simply discards these packets.

    This patch fixes the problem by not generating such packets on
    the UFO path.

    Signed-off-by: Herbert Xu
    Reviewed-by: Michael S. Tsirkin
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • Fix commit 4cd24eaf0 (net: use netdev_mc_count and netdev_mc_empty when
    appropriate)

    Signed-off-by: Helge Deller
    Signed-off-by: David S. Miller

    Helge Deller
     
  • $ make CONFIG_DEBUG_SECTION_MISMATCH=y
    [...]
    WARNING: drivers/net/built-in.o(.data+0x0): Section mismatch in reference from the variable mipsnet_driver to the function .init.text:mipsnet_probe()
    The variable mipsnet_driver references
    the function __init mipsnet_probe()
    If the reference is valid then annotate the
    variable with __init* or __refdata (see linux/init.h) or name the variable:
    *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console,
    [...]

    Fixed by making mipsnet_probe __devinit.

    Signed-off-by: Ralf Baechle

    drivers/net/mipsnet.c | 2 +-
    1 files changed, 1 insertions(+), 1 deletions(-)
    Signed-off-by: David S. Miller

    Ralf Baechle
     

19 Jun, 2010

1 commit

  • ath5k assumes ah_current_channel is always a valid pointer in
    several places, but a newly created interface may not have a
    channel. To avoid null pointer dereferences, set it up to point
    to the first available channel until later reconfigured.

    This fixes the following oops:
    $ rmmod ath5k
    $ insmod ath5k
    $ iw phy0 set distance 11000

    BUG: unable to handle kernel NULL pointer dereference at 00000006
    IP: [] ath5k_hw_set_coverage_class+0x74/0x1b0 [ath5k]
    *pde = 00000000
    Oops: 0000 [#1]
    last sysfs file: /sys/devices/pci0000:00/0000:00:0e.0/ieee80211/phy0/index
    Modules linked in: usbhid option usb_storage usbserial usblp evdev lm90
    scx200_acb i2c_algo_bit i2c_dev i2c_core via_rhine ohci_hcd ne2k_pci
    8390 leds_alix2 xt_IMQ imq nf_nat_tftp nf_conntrack_tftp nf_nat_irc nf_cc

    Pid: 1597, comm: iw Not tainted (2.6.32.14 #8)
    EIP: 0060:[] EFLAGS: 00010296 CPU: 0
    EIP is at ath5k_hw_set_coverage_class+0x74/0x1b0 [ath5k]
    EAX: 000000c2 EBX: 00000000 ECX: ffffffff EDX: c12d2080
    ESI: 00000019 EDI: cf8c0000 EBP: d0a30edc ESP: cfa09bf4
    DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
    Process iw (pid: 1597, ti=cfa09000 task=cf88a000 task.ti=cfa09000)
    Stack:
    d0a34f35 d0a353f8 d0a30edc 000000fe cf8c0000 00000000 1900063d cfa8c9e0
    cfa8c9e8 cfa8c0c0 cfa8c000 d0a27f0c 199d84b4 cfa8c200 00000010 d09bfdc7
    00000000 00000000 ffffffff d08e0d28 cf9263c0 00000001 cfa09cc4 00000000
    Call Trace:
    [] ? ath5k_hw_attach+0xc8c/0x3c10 [ath5k]
    [] ? __ieee80211_request_smps+0x1347/0x1580 [mac80211]
    [] ? nl80211_send_scan_start+0x7b8/0x4520 [cfg80211]
    [] ? nla_parse+0x59/0xc0
    [] ? genl_rcv_msg+0x169/0x1a0
    [] ? genl_rcv_msg+0x0/0x1a0
    [] ? netlink_rcv_skb+0x38/0x90
    [] ? genl_rcv+0x19/0x30
    [] ? netlink_unicast+0x1b3/0x220
    [] ? netlink_sendmsg+0x26e/0x290
    [] ? sock_sendmsg+0xbe/0xf0
    [] ? autoremove_wake_function+0x0/0x50
    [] ? __alloc_pages_nodemask+0x106/0x530
    [] ? do_lookup+0x53/0x1b0
    [] ? __link_path_walk+0x9b9/0x9e0
    [] ? verify_iovec+0x50/0x90
    [] ? sys_sendmsg+0x1e1/0x270
    [] ? find_get_page+0x10/0x50
    [] ? filemap_fault+0x5f/0x370
    [] ? __do_fault+0x319/0x370
    [] ? sys_socketcall+0x244/0x290
    [] ? do_page_fault+0x1ec/0x270
    [] ? do_page_fault+0x0/0x270
    [] ? syscall_call+0x7/0xb
    Code: 00 b8 fe 00 00 00 b9 f8 53 a3 d0 89 5c 24 14 89 7c 24 10 89 44 24
    0c 89 6c 24 08 89 4c 24 04 c7 04 24 35 4f a3 d0 e8 7c 30 60 f0 b7
    43 06 ba 06 00 00 00 a8 10 75 0e 83 e0 20 83 f8 01 19 d2
    EIP: [] ath5k_hw_set_coverage_class+0x74/0x1b0 [ath5k] SS:ESP
    0068:cfa09bf4
    CR2: 0000000000000006
    ---[ end trace 54f73d6b10ceb87b ]---

    Cc: stable@kernel.org
    Reported-by: Steve Brown
    Signed-off-by: Bob Copeland
    Signed-off-by: John W. Linville

    Bob Copeland
     

18 Jun, 2010

1 commit

  • It is common in end-node, non STP bridges to set forwarding
    delay to zero; which causes the forwarding database cleanup
    to run every clock tick. Change to run only as soon as needed
    or at next ageing timer interval which ever is sooner.

    Use round_jiffies_up macro rather than attempting round up
    by changing value.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    stephen hemminger
     

17 Jun, 2010

4 commits

  • This removes dma_get_ops() prefetch optimization in bnx2.

    bnx2 uses dma_get_ops() to see if dma_sync_single_for_cpu() is
    noop. bnx2 does prefetch if it's noop.

    But dma_get_ops() isn't available on all the architectures (only the
    architectures that uses dma_map_ops struct have it). Using
    dma_get_ops() in drivers leads to compilation breakage on many
    architectures.

    This patch removes dma_get_ops() and changes bnx2 to do prefetch on
    all the architectures. This adds useless prefetch on non-coherent
    architectures but this is harmless. It is also unlikely to cause the
    performance drop.

    [ Remove now unused local variable 'pdev' -DaveM ]

    Signed-off-by: FUJITA Tomonori
    Acked-by: Michael Chan
    Signed-off-by: David S. Miller

    FUJITA Tomonori
     
  • This patch implements a proper modification of RX skb buffers before
    recycling. Adjusting only skb->data is not enough because after that
    skb->tail and skb->len become incorrect.

    Signed-off-by: Sergey Matyukevich
    Signed-off-by: David S. Miller

    Sergey Matyukevich
     
  • pcnet_cs:
    serial_cs:
    add new id (TOSHIBA Modem/LAN Card)

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

    Ken Kawasaki
     
  • Issuing the following command on host:

    $ ifconfig eth2 mtu 1600 ; ping 10.0.0.27 -s 1485 -c 1

    Makes some boards (tested with MPC8315 rev 1.1 and MPC8313 rev 1.0)
    oops like this:

    skb_over_panic: text:c0195914 len:1537 put:1537 head:c79e4800 data:c79e4880 tail:0xc79e4e81 end:0xc79e4e80 dev:eth1
    ------------[ cut here ]------------
    kernel BUG at net/core/skbuff.c:127!
    Oops: Exception in kernel mode, sig: 5 [#1]
    MPC831x RDB
    last sysfs file: /sys/kernel/uevent_seqnum
    Modules linked in:
    NIP: c01c1840 LR: c01c1840 CTR: c016d918
    [...]
    NIP [c01c1840] skb_over_panic+0x48/0x5c
    LR [c01c1840] skb_over_panic+0x48/0x5c
    Call Trace:
    [c0339d50] [c01c1840] skb_over_panic+0x48/0x5c (unreliable)
    [c0339d60] [c01c3020] skb_put+0x5c/0x60
    [c0339d70] [c0195914] gfar_clean_rx_ring+0x25c/0x3d0
    [c0339dc0] [c01976e8] gfar_poll+0x170/0x1bc

    Dumped buffer descriptors showed that eTSEC's length/truncation
    logic sometimes passes oversized packets, i.e. for the above ICMP
    packet the following two buffer descriptors may become ready:

    status=1400 length=1536
    status=1800 length=1541

    So, it seems that gianfar actually receives the whole big frame,
    and it tries to place the packet into two BDs. This situation
    confuses the driver, and so the skb_put() sanity check fails.

    This patch fixes the issue by adding an appropriate check, i.e.
    the driver should not try to process frames with buffer
    descriptor's length over rx_buffer_size (i.e. maxfrm and mrblr).

    Note that sometimes eTSEC works correctly, i.e. in the second
    (last) buffer descriptor bits 'truncated' and 'crcerr' are set,
    and so there's no oops. Though I couldn't find any logic when
    it works correctly and when not.

    Signed-off-by: Anton Vorontsov
    Signed-off-by: David S. Miller

    Anton Vorontsov