1. 16 6月, 2010 1 次提交
  2. 14 6月, 2010 5 次提交
  3. 13 6月, 2010 1 次提交
    • R
      enic: fix pci_alloc_consistent argument · d49aba84
      Randy Dunlap 提交于
      Fix build warning on i386 (32-bit) with 32-bit dma_addr_t:
      
      drivers/net/enic/vnic_dev.c: In function 'vnic_dev_init_prov':
      drivers/net/enic/vnic_dev.c:716: warning: passing argument 3 of 'pci_alloc_consistent' from incompatible pointer type
      include/asm-generic/pci-dma-compat.h:16: note: expected 'dma_addr_t *' but argument is of type 'u64 *'
      
      Now builds without warnings on i386 and on x86_64.
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
      Cc:	Scott Feldman <scofeldm@cisco.com>
      Cc:	Vasanthy Kolluri <vkolluri@cisco.com>
      Cc:	Roopa Prabhu <roprabhu@cisco.com>
      Acked-by: NScott Feldman <scofeldm@cisco.com>
      d49aba84
  4. 12 6月, 2010 2 次提交
  5. 11 6月, 2010 4 次提交
    • F
      net8139: fix a race at the end of NAPI · 349124a0
      Figo.zhang 提交于
      fix a race at the end of NAPI complete processing, it had
      better do __napi_complete() first before re-enable interrupt.
      Signed-off-by: NFigo.zhang <figo1802@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      349124a0
    • D
      pktgen: Fix accuracy of inter-packet delay. · 07a0f0f0
      Daniel Turull 提交于
      This patch correct a bug in the delay of pktgen. 
      It makes sure the inter-packet interval is accurate.
      Signed-off-by: NDaniel Turull <daniel.turull@gmail.com>
      Signed-off-by: NRobert Olsson <robert.olsson@its.uu.se>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      07a0f0f0
    • E
      pkt_sched: gen_estimator: add a new lock · ae638c47
      Eric Dumazet 提交于
      gen_kill_estimator() / gen_new_estimator() is not always called with
      RTNL held.
      
      net/netfilter/xt_RATEEST.c is one user of these API that do not hold
      RTNL, so random corruptions can occur between "tc" and "iptables".
      
      Add a new fine grained lock instead of trying to use RTNL in netfilter.
      Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ae638c47
    • J
      net: deliver skbs on inactive slaves to exact matches · 597a264b
      John Fastabend 提交于
      Currently, the accelerated receive path for VLAN's will
      drop packets if the real device is an inactive slave and
      is not one of the special pkts tested for in
      skb_bond_should_drop().  This behavior is different then
      the non-accelerated path and for pkts over a bonded vlan.
      
      For example,
      
      vlanx -> bond0 -> ethx
      
      will be dropped in the vlan path and not delivered to any
      packet handlers at all.  However,
      
      bond0 -> vlanx -> ethx
      
      and
      
      bond0 -> ethx
      
      will be delivered to handlers that match the exact dev,
      because the VLAN path checks the real_dev which is not a
      slave and netif_recv_skb() doesn't drop frames but only
      delivers them to exact matches.
      
      This patch adds a sk_buff flag which is used for tagging
      skbs that would previously been dropped and allows the
      skb to continue to skb_netif_recv().  Here we add
      logic to check for the deliver_no_wcard flag and if it
      is set only deliver to handlers that match exactly.  This
      makes both paths above consistent and gives pkt handlers
      a way to identify skbs that come from inactive slaves.
      Without this patch in some configurations skbs will be
      delivered to handlers with exact matches and in others
      be dropped out right in the vlan path.
      
      I have tested the following 4 configurations in failover modes
      and load balancing modes.
      
      # bond0 -> ethx
      
      # vlanx -> bond0 -> ethx
      
      # bond0 -> vlanx -> ethx
      
      # bond0 -> ethx
                  |
        vlanx -> --
      Signed-off-by: NJohn Fastabend <john.r.fastabend@intel.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      597a264b
  6. 10 6月, 2010 8 次提交
  7. 09 6月, 2010 3 次提交
    • S
      ipvs: Add missing locking during connection table hashing and unhashing · aea9d711
      Sven Wegener 提交于
      The code that hashes and unhashes connections from the connection table
      is missing locking of the connection being modified, which opens up a
      race condition and results in memory corruption when this race condition
      is hit.
      
      Here is what happens in pretty verbose form:
      
      CPU 0					CPU 1
      ------------				------------
      An active connection is terminated and
      we schedule ip_vs_conn_expire() on this
      CPU to expire this connection.
      
      					IRQ assignment is changed to this CPU,
      					but the expire timer stays scheduled on
      					the other CPU.
      
      					New connection from same ip:port comes
      					in right before the timer expires, we
      					find the inactive connection in our
      					connection table and get a reference to
      					it. We proper lock the connection in
      					tcp_state_transition() and read the
      					connection flags in set_tcp_state().
      
      ip_vs_conn_expire() gets called, we
      unhash the connection from our
      connection table and remove the hashed
      flag in ip_vs_conn_unhash(), without
      proper locking!
      
      					While still holding proper locks we
      					write the connection flags in
      					set_tcp_state() and this sets the hashed
      					flag again.
      
      ip_vs_conn_expire() fails to expire the
      connection, because the other CPU has
      incremented the reference count. We try
      to re-insert the connection into our
      connection table, but this fails in
      ip_vs_conn_hash(), because the hashed
      flag has been set by the other CPU. We
      re-schedule execution of
      ip_vs_conn_expire(). Now this connection
      has the hashed flag set, but isn't
      actually hashed in our connection table
      and has a dangling list_head.
      
      					We drop the reference we held on the
      					connection and schedule the expire timer
      					for timeouting the connection on this
      					CPU. Further packets won't be able to
      					find this connection in our connection
      					table.
      
      					ip_vs_conn_expire() gets called again,
      					we think it's already hashed, but the
      					list_head is dangling and while removing
      					the connection from our connection table
      					we write to the memory location where
      					this list_head points to.
      
      The result will probably be a kernel oops at some other point in time.
      
      This race condition is pretty subtle, but it can be triggered remotely.
      It needs the IRQ assignment change or another circumstance where packets
      coming from the same ip:port for the same service are being processed on
      different CPUs. And it involves hitting the exact time at which
      ip_vs_conn_expire() gets called. It can be avoided by making sure that
      all packets from one connection are always processed on the same CPU and
      can be made harder to exploit by changing the connection timeouts to
      some custom values.
      Signed-off-by: NSven Wegener <sven.wegener@stealer.net>
      Cc: stable@kernel.org
      Acked-by: NSimon Horman <horms@verge.net.au>
      Signed-off-by: NPatrick McHardy <kaber@trash.net>
      aea9d711
    • J
      mac80211: fix deauth before assoc · b054b747
      Johannes Berg 提交于
      When we receive a deauthentication frame before
      having successfully associated, we neither print
      a message nor abort assocation. The former makes
      it hard to debug, while the latter later causes
      a warning in cfg80211 when, as will typically be
      the case, association timed out.
      
      This warning was reported by many, e.g. in
      https://bugzilla.kernel.org/show_bug.cgi?id=15981,
      but I couldn't initially pinpoint it. I verified
      the fix by hacking hostapd to send a deauth frame
      instead of an association response.
      
      Cc: stable@kernel.org
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Tested-by: NMiles Lane <miles.lane@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      b054b747
    • J
      iwlwifi: add missing rcu_read_lock · 6db6340c
      Johannes Berg 提交于
      Using ieee80211_find_sta() needs to be under
      RCU read lock, which iwlwifi currently misses,
      so fix it.
      
      Cc: stable@kernel.org
      Reported-by: NMiles Lane <miles.lane@gmail.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Acked-by: NReinette Chatre <reinette.chatre@intel.com>
      Tested-by: NMiles Lane <miles.lane@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      6db6340c
  8. 08 6月, 2010 5 次提交
  9. 07 6月, 2010 5 次提交
  10. 06 6月, 2010 4 次提交
    • E
      iwlwifi: move sysfs_create_group to post request firmware · 7d47618a
      Emmanuel Grumbach 提交于
      Move the sysfs_create_group to iwl_ucode_callback after we
      have safely got the firmware.
      
      The motivation to do this comes from a warning from lockdep which detected
      that we request priv->mutex while holding s_active during a sysfs request
      (show_statistics in the example copy pasted). The reverse order exists upon
      request_firmware: request_firmware which is a sysfs operation
      that requires s_active is run under priv->mutex.
      
      This ensures that we don't get sysfs request before we finish to request
      the firmware, avoiding this deadlock.
      
      =======================================================
      [ INFO: possible circular locking dependency detected ]
      -------------------------------------------------------
      cat/2595 is trying to acquire lock:
       (&priv->mutex){+.+.+.}, at: [<facfa598>] show_statistics+0x48/0x100 [iwlagn]
      
      but task is already holding lock:
       (s_active){++++.+}, at: [<c0580ebd>] sysfs_get_active_two+0x1d/0x50
      
      which lock already depends on the new lock.
      
      the existing dependency chain (in reverse order) is:
      
      -> #1 (s_active){++++.+}:
             [<c0489b74>] __lock_acquire+0xc44/0x1230
             [<c048a1ed>] lock_acquire+0x8d/0x110
             [<c0581499>] sysfs_addrm_finish+0xe9/0x180
             [<c057f64a>] sysfs_hash_and_remove+0x4a/0x80
             [<c05829d4>] sysfs_remove_group+0x44/0xd0
             [<c0714b75>] dpm_sysfs_remove+0x15/0x20
             [<c070dac8>] device_del+0x38/0x170
             [<c070dc1e>] device_unregister+0x1e/0x60
             [<c071838d>] _request_firmware+0x29d/0x550
             [<c07186c7>] request_firmware+0x17/0x20
             [<fad01bf1>] iwl_mac_start+0xb1/0x1230 [iwlagn]
             [<fa46ba06>] ieee80211_open+0x436/0x6f0 [mac80211]
             [<c0808cd2>] dev_open+0x92/0xf0
             [<c0808b2b>] dev_change_flags+0x7b/0x190
             [<c08148e8>] do_setlink+0x178/0x3b0
             [<c0815169>] rtnl_setlink+0xf9/0x130
             [<c081453b>] rtnetlink_rcv_msg+0x1bb/0x1f0
             [<c0827ce6>] netlink_rcv_skb+0x86/0xa0
             [<c081436c>] rtnetlink_rcv+0x1c/0x30
             [<c08279c3>] netlink_unicast+0x263/0x290
             [<c0828768>] netlink_sendmsg+0x1c8/0x2a0
             [<c07f85fd>] sock_sendmsg+0xcd/0x100
             [<c07f964d>] sys_sendmsg+0x15d/0x290
             [<c07f9e6b>] sys_socketcall+0xeb/0x2a0
             [<c040ad9f>] sysenter_do_call+0x12/0x38
      
      -> #0 (&priv->mutex){+.+.+.}:
             [<c0489f84>] __lock_acquire+0x1054/0x1230
             [<c048a1ed>] lock_acquire+0x8d/0x110
             [<c08bb358>] __mutex_lock_common+0x58/0x470
             [<c08bb84a>] mutex_lock_nested+0x3a/0x50
             [<facfa598>] show_statistics+0x48/0x100 [iwlagn]
             [<c070d219>] dev_attr_show+0x29/0x50
             [<c057fecd>] sysfs_read_file+0xdd/0x190
             [<c052880f>] vfs_read+0x9f/0x190
             [<c0528d22>] sys_read+0x42/0x70
             [<c040ad9f>] sysenter_do_call+0x12/0x38
      
      other info that might help us debug this:
      
      3 locks held by cat/2595:
       #0:  (&buffer->mutex){+.+.+.}, at: [<c057fe25>] sysfs_read_file+0x35/0x190
       #1:  (s_active){++++.+}, at: [<c0580ecd>] sysfs_get_active_two+0x2d/0x50
       #2:  (s_active){++++.+}, at: [<c0580ebd>] sysfs_get_active_two+0x1d/0x50
      
      stack backtrace:
      Pid: 2595, comm: cat Not tainted 2.6.33-tp-rc4 #2
      Call Trace:
       [<c08b99ab>] ? printk+0x1d/0x22
       [<c0487752>] print_circular_bug+0xc2/0xd0
       [<c0489f84>] __lock_acquire+0x1054/0x1230
       [<c0478d81>] ? sched_clock_cpu+0x121/0x180
       [<c048a1ed>] lock_acquire+0x8d/0x110
       [<facfa598>] ? show_statistics+0x48/0x100 [iwlagn]
       [<c08bb358>] __mutex_lock_common+0x58/0x470
       [<facfa598>] ? show_statistics+0x48/0x100 [iwlagn]
       [<c08bb84a>] mutex_lock_nested+0x3a/0x50
       [<facfa598>] ? show_statistics+0x48/0x100 [iwlagn]
       [<facfa598>] show_statistics+0x48/0x100 [iwlagn]
       [<c0580cf9>] ? sysfs_get_active+0x69/0xb0
       [<facfa550>] ? show_statistics+0x0/0x100 [iwlagn]
       [<c070d219>] dev_attr_show+0x29/0x50
       [<c057fecd>] sysfs_read_file+0xdd/0x190
       [<c05ff314>] ? security_file_permission+0x14/0x20
       [<c0528242>] ? rw_verify_area+0x62/0xd0
       [<c052880f>] vfs_read+0x9f/0x190
       [<c047745b>] ? up_read+0x1b/0x30
       [<c057fdf0>] ? sysfs_read_file+0x0/0x190
       [<c04af3b4>] ? audit_syscall_entry+0x1f4/0x220
       [<c0528d22>] sys_read+0x42/0x70
       [<c040ad9f>] sysenter_do_call+0x12/0x38
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      7d47618a
    • W
      iwlwifi: add name to Maintainers list · 9edc71b7
      Wey-Yi Guy 提交于
      Add "Wey-Yi Guy" to maintainers list for iwlwifi.
      Signed-off-by: NWey-Yi Guy <wey-yi.w.guy@intel.com>
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      9edc71b7
    • A
      iwl3945: fix internal scan · 14023641
      Abhijeet Kolekar 提交于
      Port of internal scan to iwl3945 missed introduction
      of iwl3945_get_single_channel_for_scan.
      
      Fix the following bug by introducing the iwl3945_get_single_channel_for_scan
      http://bugzilla.intellinuxwireless.org/show_bug.cgi?id=2208Signed-off-by: NAbhijeet Kolekar <abhijeet.kolekar@intel.com>
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      14023641
    • R
      iwl3945: enable stuck queue detection on 3945 · a6866ac9
      Reinette Chatre 提交于
      We learn from
      http://bugzilla.intellinuxwireless.org/show_bug.cgi?id=1834 and
      https://bugzilla.redhat.com/show_bug.cgi?id=589777
      that 3945 can also suffer from a stuck command queue. Enable stuck queue
      detection for iwl3945 to enable recovery in this case.
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      a6866ac9
  11. 05 6月, 2010 2 次提交