You need to sign in or sign up before continuing.
  1. 03 9月, 2010 2 次提交
    • J
      pkt_sched: Fix lockdep warning on est_tree_lock in gen_estimator · 0b5d404e
      Jarek Poplawski 提交于
      This patch fixes a lockdep warning:
      
      [  516.287584] =========================================================
      [  516.288386] [ INFO: possible irq lock inversion dependency detected ]
      [  516.288386] 2.6.35b #7
      [  516.288386] ---------------------------------------------------------
      [  516.288386] swapper/0 just changed the state of lock:
      [  516.288386]  (&qdisc_tx_lock){+.-...}, at: [<c12eacda>] est_timer+0x62/0x1b4
      [  516.288386] but this lock took another, SOFTIRQ-unsafe lock in the past:
      [  516.288386]  (est_tree_lock){+.+...}
      [  516.288386] 
      [  516.288386] and interrupts could create inverse lock ordering between them.
      ...
      
      So, est_tree_lock needs BH protection because it's taken by
      qdisc_tx_lock, which is used both in BH and process contexts.
      (Full warning with this patch at netdev, 02 Sep 2010.)
      
      Fixes commit: ae638c47
      ("pkt_sched: gen_estimator: add a new lock")
      Signed-off-by: NJarek Poplawski <jarkao2@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0b5d404e
    • J
      ipvs: avoid oops for passive FTP · 7bcbf81a
      Julian Anastasov 提交于
      Fix Passive FTP problem in ip_vs_ftp:
      
      - Do not oops in nf_nat_set_seq_adjust (adjust_tcp_sequence) when
        iptable_nat module is not loaded
      Signed-off-by: NJulian Anastasov <ja@ssi.bg>
      Signed-off-by: NSimon Horman <horms@verge.net.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7bcbf81a
  2. 02 9月, 2010 6 次提交
  3. 01 9月, 2010 2 次提交
    • J
      wireless: register wiphy rfkill w/o holding cfg80211_mutex · c3d34d5d
      John W. Linville 提交于
      Otherwise lockdep complains...
      
      https://bugzilla.kernel.org/show_bug.cgi?id=17311
      
      [ INFO: possible circular locking dependency detected ]
      2.6.36-rc2-git4 #12
      -------------------------------------------------------
      kworker/0:3/3630 is trying to acquire lock:
       (rtnl_mutex){+.+.+.}, at: [<ffffffff813396c7>] rtnl_lock+0x12/0x14
      
      but task is already holding lock:
       (rfkill_global_mutex){+.+.+.}, at: [<ffffffffa014b129>]
      rfkill_switch_all+0x24/0x49 [rfkill]
      
      which lock already depends on the new lock.
      
      the existing dependency chain (in reverse order) is:
      
      -> #2 (rfkill_global_mutex){+.+.+.}:
             [<ffffffff81079ad7>] lock_acquire+0x120/0x15b
             [<ffffffff813ae869>] __mutex_lock_common+0x54/0x52e
             [<ffffffff813aede9>] mutex_lock_nested+0x34/0x39
             [<ffffffffa014b4ab>] rfkill_register+0x2b/0x29c [rfkill]
             [<ffffffffa0185ba0>] wiphy_register+0x1ae/0x270 [cfg80211]
             [<ffffffffa0206f01>] ieee80211_register_hw+0x1b4/0x3cf [mac80211]
             [<ffffffffa0292e98>] iwl_ucode_callback+0x9e9/0xae3 [iwlagn]
             [<ffffffff812d3e9d>] request_firmware_work_func+0x54/0x6f
             [<ffffffff81065d15>] kthread+0x8c/0x94
             [<ffffffff8100ac24>] kernel_thread_helper+0x4/0x10
      
      -> #1 (cfg80211_mutex){+.+.+.}:
             [<ffffffff81079ad7>] lock_acquire+0x120/0x15b
             [<ffffffff813ae869>] __mutex_lock_common+0x54/0x52e
             [<ffffffff813aede9>] mutex_lock_nested+0x34/0x39
             [<ffffffffa018605e>] cfg80211_get_dev_from_ifindex+0x1b/0x7c [cfg80211]
             [<ffffffffa0189f36>] cfg80211_wext_giwscan+0x58/0x990 [cfg80211]
             [<ffffffff8139a3ce>] ioctl_standard_iw_point+0x1a8/0x272
             [<ffffffff8139a529>] ioctl_standard_call+0x91/0xa7
             [<ffffffff8139a687>] T.723+0xbd/0x12c
             [<ffffffff8139a727>] wext_handle_ioctl+0x31/0x6d
             [<ffffffff8133014e>] dev_ioctl+0x63d/0x67a
             [<ffffffff8131afd9>] sock_ioctl+0x48/0x21d
             [<ffffffff81102abd>] do_vfs_ioctl+0x4ba/0x509
             [<ffffffff81102b5d>] sys_ioctl+0x51/0x74
             [<ffffffff81009e02>] system_call_fastpath+0x16/0x1b
      
      -> #0 (rtnl_mutex){+.+.+.}:
             [<ffffffff810796b0>] __lock_acquire+0xa93/0xd9a
             [<ffffffff81079ad7>] lock_acquire+0x120/0x15b
             [<ffffffff813ae869>] __mutex_lock_common+0x54/0x52e
             [<ffffffff813aede9>] mutex_lock_nested+0x34/0x39
             [<ffffffff813396c7>] rtnl_lock+0x12/0x14
             [<ffffffffa0185cb5>] cfg80211_rfkill_set_block+0x1a/0x7b [cfg80211]
             [<ffffffffa014aed0>] rfkill_set_block+0x80/0xd5 [rfkill]
             [<ffffffffa014b07e>] __rfkill_switch_all+0x3f/0x6f [rfkill]
             [<ffffffffa014b13d>] rfkill_switch_all+0x38/0x49 [rfkill]
             [<ffffffffa014b821>] rfkill_op_handler+0x105/0x136 [rfkill]
             [<ffffffff81060708>] process_one_work+0x248/0x403
             [<ffffffff81062620>] worker_thread+0x139/0x214
             [<ffffffff81065d15>] kthread+0x8c/0x94
             [<ffffffff8100ac24>] kernel_thread_helper+0x4/0x10
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      Acked-by: NJohannes Berg <johannes@sipsolutions.net>
      c3d34d5d
    • D
      netlink: Make NETLINK_USERSOCK work again. · b963ea89
      David S. Miller 提交于
      Once we started enforcing the a nl_table[] entry exist for
      a protocol, NETLINK_USERSOCK stopped working.  Add a dummy
      table entry so that it works again.
      Reported-by: NThomas Voegtle <tv@lio96.de>
      Tested-by: NThomas Voegtle <tv@lio96.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b963ea89
  4. 31 8月, 2010 3 次提交
    • D
      irda: Correctly clean up self->ias_obj on irda_bind() failure. · 628e300c
      David S. Miller 提交于
      If irda_open_tsap() fails, the irda_bind() code tries to destroy
      the ->ias_obj object by hand, but does so wrongly.
      
      In particular, it fails to a) release the hashbin attached to the
      object and b) reset the self->ias_obj pointer to NULL.
      
      Fix both problems by using irias_delete_object() and explicitly
      setting self->ias_obj to NULL, just as irda_release() does.
      Reported-by: NTavis Ormandy <taviso@cmpxchg8b.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      628e300c
    • J
      wireless extensions: fix kernel heap content leak · 42da2f94
      Johannes Berg 提交于
      Wireless extensions have an unfortunate, undocumented
      requirement which requires drivers to always fill
      iwp->length when returning a successful status. When
      a driver doesn't do this, it leads to a kernel heap
      content leak when userspace offers a larger buffer
      than would have been necessary.
      
      Arguably, this is a driver bug, as it should, if it
      returns 0, fill iwp->length, even if it separately
      indicated that the buffer contents was not valid.
      
      However, we can also at least avoid the memory content
      leak if the driver doesn't do this by setting the iwp
      length to max_tokens, which then reflects how big the
      buffer is that the driver may fill, regardless of how
      big the userspace buffer is.
      
      To illustrate the point, this patch also fixes a
      corresponding cfg80211 bug (since this requirement
      isn't documented nor was ever pointed out by anyone
      during code review, I don't trust all drivers nor
      all cfg80211 handlers to implement it correctly).
      
      Cc: stable@kernel.org [all the way back]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      42da2f94
    • J
      mac80211: delete work timer · 071249b1
      Johannes Berg 提交于
      The new workqueue changes helped me find this bug
      that's been lingering since the changes to the work
      processing in mac80211 -- the work timer is never
      deleted properly. Do that to avoid having it fire
      after all data structures have been freed. It can't
      be re-armed because all it will do, if running, is
      schedule the work, but that gets flushed later and
      won't have anything to do since all work items are
      gone by now (by way of interface removal).
      
      Cc: stable@kernel.org [2.6.34+]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      071249b1
  5. 28 8月, 2010 1 次提交
    • J
      net/ipv4: Eliminate kstrdup memory leak · c34186ed
      Julia Lawall 提交于
      The string clone is only used as a temporary copy of the argument val
      within the while loop, and so it should be freed before leaving the
      function.  The call to strsep, however, modifies clone, so a pointer to the
      front of the string is kept in saved_clone, to make it possible to free it.
      
      The sematic match that finds this problem is as follows:
      (http://coccinelle.lip6.fr/)
      
      // <smpl>
      @r exists@
      local idexpression x;
      expression E;
      identifier l;
      statement S;
      @@
      
      *x= \(kasprintf\|kstrdup\)(...);
      ...
      if (x == NULL) S
      ... when != kfree(x)
          when != E = x
      if (...) {
        <... when != kfree(x)
      * goto l;
        ...>
      * return ...;
      }
      // </smpl>
      Signed-off-by: NJulia Lawall <julia@diku.dk>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c34186ed
  6. 27 8月, 2010 3 次提交
  7. 26 8月, 2010 2 次提交
    • K
      tcp: select(writefds) don't hang up when a peer close connection · d84ba638
      KOSAKI Motohiro 提交于
      This issue come from ruby language community. Below test program
      hang up when only run on Linux.
      
      	% uname -mrsv
      	Linux 2.6.26-2-486 #1 Sat Dec 26 08:37:39 UTC 2009 i686
      	% ruby -rsocket -ve '
      	BasicSocket.do_not_reverse_lookup = true
      	serv = TCPServer.open("127.0.0.1", 0)
      	s1 = TCPSocket.open("127.0.0.1", serv.addr[1])
      	s2 = serv.accept
      	s2.close
      	s1.write("a") rescue p $!
      	s1.write("a") rescue p $!
      	Thread.new {
      	  s1.write("a")
      	}.join'
      	ruby 1.9.3dev (2010-07-06 trunk 28554) [i686-linux]
      	#<Errno::EPIPE: Broken pipe>
      	[Hang Here]
      
      FreeBSD, Solaris, Mac doesn't. because Ruby's write() method call
      select() internally. and tcp_poll has a bug.
      
      SUS defined 'ready for writing' of select() as following.
      
      |  A descriptor shall be considered ready for writing when a call to an output
      |  function with O_NONBLOCK clear would not block, whether or not the function
      |  would transfer data successfully.
      
      That said, EPIPE situation is clearly one of 'ready for writing'.
      
      We don't have read-side issue because tcp_poll() already has read side
      shutdown care.
      
      |        if (sk->sk_shutdown & RCV_SHUTDOWN)
      |                mask |= POLLIN | POLLRDNORM | POLLRDHUP;
      
      So, Let's insert same logic in write side.
      
      - reference url
        http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/31065
        http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/31068Signed-off-by: NKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d84ba638
    • E
      tcp: fix three tcp sysctls tuning · c5ed63d6
      Eric Dumazet 提交于
      As discovered by Anton Blanchard, current code to autotune 
      tcp_death_row.sysctl_max_tw_buckets, sysctl_tcp_max_orphans and
      sysctl_max_syn_backlog makes little sense.
      
      The bigger a page is, the less tcp_max_orphans is : 4096 on a 512GB
      machine in Anton's case.
      
      (tcp_hashinfo.bhash_size * sizeof(struct inet_bind_hashbucket))
      is much bigger if spinlock debugging is on. Its wrong to select bigger
      limits in this case (where kernel structures are also bigger)
      
      bhash_size max is 65536, and we get this value even for small machines. 
      
      A better ground is to use size of ehash table, this also makes code
      shorter and more obvious.
      
      Based on a patch from Anton, and another from David.
      Reported-and-tested-by: NAnton Blanchard <anton@samba.org>
      Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c5ed63d6
  8. 25 8月, 2010 1 次提交
  9. 24 8月, 2010 2 次提交
  10. 19 8月, 2010 4 次提交
  11. 18 8月, 2010 4 次提交
  12. 16 8月, 2010 1 次提交
  13. 15 8月, 2010 2 次提交
  14. 13 8月, 2010 1 次提交
  15. 12 8月, 2010 5 次提交
    • R
      phylib: available for any speed ethernet · cba86f2e
      Randy Dunlap 提交于
      Several gigabit network drivers (SB1250_MAC, TIGON3, FSL, GIANFAR,
      UCC_GETH, MV643XX_ETH, XILINX_LL_TEMAC, S6GMAC, STMMAC_ETH, PASEMI_MAC,
      and OCTEON_ETHERNET) select PHYLIB.  These drivers are not under
      NET_ETHERNET (10/100 mbit), so this warning is generated (long, irrelevant
      parts are omitted):
      
      warning: (NET_DSA && NET && EXPERIMENTAL && NET_ETHERNET && !S390 || ... || SB1250_MAC && NETDEVICES && NETDEV_1000 && SIBYTE_SB1xxx_SOC || TIGON3 && NETDEVICES && NETDEV_1000 && PCI || FSL_PQ_MDIO && NETDEVICES && NETDEV_1000 && FSL_SOC || GIANFAR && NETDEVICES && NETDEV_1000 && FSL_SOC || UCC_GETH && NETDEVICES && NETDEV_1000 && QUICC_ENGINE || MV643XX_ETH && NETDEVICES && NETDEV_1000 && (MV64X60 || PPC32 || PLAT_ORION) || XILINX_LL_TEMAC && NETDEVICES && NETDEV_1000 && (PPC || MICROBLAZE) || S6GMAC && NETDEVICES && NETDEV_1000 && XTENSA_VARIANT_S6000 || STMMAC_ETH && NETDEV_1000 && NETDEVICES && CPU_SUBTYPE_ST40 || PASEMI_MAC && NETDEVICES && NETDEV_10000 && PPC_PASEMI && PCI || OCTEON_ETHERNET && STAGING && !STAGING_EXCLUDE_BUILD && CPU_CAVIUM_OCTEON) selects PHYLIB which has unmet direct dependencies (!S390 && NET_ETHERNET)
      
      PHYLIB is used by non-10/100 mbit ethernet drivers, so change the dependencies
      to be NETDEVICES instead of NET_ETHERNET.
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cba86f2e
    • O
      can: add limit for nframes and clean up signed/unsigned variables · 5b75c497
      Oliver Hartkopp 提交于
      This patch adds a limit for nframes as the number of frames in TX_SETUP and
      RX_SETUP are derived from a single byte multiplex value by default.
      Use-cases that would require to send/filter more than 256 CAN frames should
      be implemented in userspace for complexity reasons anyway.
      
      Additionally the assignments of unsigned values from userspace to signed
      values in kernelspace and vice versa are fixed by using unsigned values in
      kernelspace consistently.
      Signed-off-by: NOliver Hartkopp <socketcan@hartkopp.net>
      Reported-by: NBen Hawkes <hawkes@google.com>
      Acked-by: NUrs Thuermann <urs.thuermann@volkswagen.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5b75c497
    • W
      DNS: If the DNS server returns an error, allow that to be cached [ver #2] · 4a2d7892
      Wang Lei 提交于
      If the DNS server returns an error, allow that to be cached in the DNS resolver
      key in lieu of a value.  Userspace passes the desired error number as an option
      in the payload:
      
      	"#dnserror=<number>"
      
      Userspace must map h_errno from the name resolution routines to an appropriate
      Linux error before passing it up.  Something like the following mapping is
      recommended:
      
      	[HOST_NOT_FOUND]	= ENODATA,
      	[TRY_AGAIN]		= EAGAIN,
      	[NO_RECOVERY]		= ECONNREFUSED,
      	[NO_DATA]		= ENODATA,
      
      in lieu of Linux errors specifically for representing name service errors.  The
      filesystem must map these errors appropropriately before passing them to
      userspace.  AFS is made to map ENODATA and EAGAIN to EDESTADDRREQ for the
      return to userspace; ECONNREFUSED is allowed to stand as is.
      
      The error can be seen in /proc/keys as a negative number after the description
      of the key.  Compare, for example, the following key entries:
      
      2f97238c I--Q--     1  53s 3f010000     0     0 dns_resol afsdb:grand.centrall.org: -61
      338bfbbe I--Q--     1  59m 3f010000     0     0 dns_resol afsdb:grand.central.org: 37
      
      If the error option is supplied in the payload, the main part of the payload is
      discarded.  The key should have an expiry time set by userspace.
      Signed-off-by: NWang Lei <wang840925@gmail.com>
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Acked-by: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NSteve French <sfrench@us.ibm.com>
      4a2d7892
    • T
      rpcrdma: Fix SQ size calculation when memreg is FRMR · 15cdc644
      Tom Tucker 提交于
      This patch updates the computation to include the worst case situation
      where three FRMR are required to map a single RPC REQ.
      Signed-off-by: NTom Tucker <tom@ogc.us>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      15cdc644
    • S
      xprtrdma: Do not truncate iova_start values in frmr registrations. · 7a8b80eb
      Steve Wise 提交于
      A bad cast causes the iova_start, which in this case is a 64b DMA
      bus address, to be truncated on 32b systems.  This breaks frmrs on
      32b systems.  No cast is needed.
      Signed-off-by: NSteve Wise <swise@opengridcomputing.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      7a8b80eb
  16. 11 8月, 2010 1 次提交
    • R
      param: simple locking for sysfs-writable charp parameters · d6d1b650
      Rusty Russell 提交于
      Since the writing to sysfs can free the old one, we need to block that
      when we access the charp variables.
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      Reviewed-by: NTakashi Iwai <tiwai@suse.de>
      Tested-by: NPhil Carmody <ext-phil.2.carmody@nokia.com>
      Cc: Jeff Dike <jdike@addtoit.com>
      Cc: Dan Williams <dcbw@redhat.com>
      Cc: John W. Linville <linville@tuxdriver.com>
      Cc: Jing Huang <huangj@brocade.com>
      Cc: James E.J. Bottomley <James.Bottomley@suse.de>
      Cc: Greg Kroah-Hartman <gregkh@suse.de>
      Cc: Johannes Berg <johannes@sipsolutions.net>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: user-mode-linux-devel@lists.sourceforge.net
      Cc: libertas-dev@lists.infradead.org
      Cc: linux-wireless@vger.kernel.org
      Cc: netdev@vger.kernel.org
      Cc: linux-scsi@vger.kernel.org
      Cc: linux-usb@vger.kernel.org
      d6d1b650