1. 25 Oct, 2010 1 commit
  2. 07 Oct, 2010 1 commit
  3. 06 Jul, 2010 1 commit
    • Chris Metcalf's avatar
      Move list types from <linux/list.h> to <linux/types.h>. · de5d9bf6
      Chris Metcalf authored
      This allows a list_head (or hlist_head, etc.) to be used from places
      that used to be impractical, in particular <asm/processor.h>, which
      used to cause include file recursion: <linux/list.h> includes
      <linux/prefetch.h>, which always includes <asm/processor.h> for the
      prefetch macros, as well as <asm/system.h>, which often includes
      <asm/processor.h> directly or indirectly.
      This avoids a lot of painful workaround hackery on the tile
      architecture, where we use a list_head in the thread_struct to chain
      together tasks that are activated on a particular hardwall.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      Reviewed-by: default avatarMatthew Wilcox <willy@linux.intel.com>
  4. 29 Jun, 2010 1 commit
    • npiggin@suse.de's avatar
      fs: fix superblock iteration race · 57439f87
      npiggin@suse.de authored
      list_for_each_entry_safe is not suitable to protect against concurrent
      modification of the list. 6754af64
       introduced a race in sb walking.
      list_for_each_entry can use the trick of pinning the current entry in
      the list before we drop and retake the lock because it subsequently
      follows cur->next. However list_for_each_entry_safe saves n=cur->next
      for following before entering the loop body, so when the lock is
      dropped, n may be deleted.
      Signed-off-by: default avatarNick Piggin <npiggin@suse.de>
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: John Stultz <johnstul@us.ibm.com>
      Cc: Frank Mayhar <fmayhar@google.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
  5. 06 Mar, 2010 1 commit
  6. 16 Jan, 2010 1 commit
  7. 01 Sep, 2008 1 commit
    • Vegard Nossum's avatar
      debugobjects: fix lockdep warning · 673d62cc
      Vegard Nossum authored
      Daniel J. Blueman reported:
      > =======================================================
      > [ INFO: possible circular locking dependency detected ]
      > 2.6.27-rc4-224c #1
      > -------------------------------------------------------
      > hald/4680 is trying to acquire lock:
      >  (&n->list_lock){++..}, at: [<ffffffff802bfa26>] add_partial+0x26/0x80
      > but task is already holding lock:
      >  (&obj_hash[i].lock){++..}, at: [<ffffffff8041cfdc>]
      > debug_object_free+0x5c/0x120
      We fix it by moving the actual freeing to outside the lock (the lock
      now only protects the list).
      The pool lock is also promoted to irq-safe (suggested by Dan). It's
      necessary because free_pool is now called outside the irq disabled
      region. So we need to protect against an interrupt handler which calls
      [tglx@linutronix.de: added hlist_move_list helper to avoid looping
      		     through the list twice]
      Reported-by: default avatarDaniel J Blueman <daniel.blueman@gmail.com>
      Signed-off-by: default avatarVegard Nossum <vegard.nossum@gmail.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
  8. 08 Aug, 2008 1 commit
  9. 07 Aug, 2008 2 commits
  10. 25 Jul, 2008 1 commit
  11. 19 May, 2008 1 commit
  12. 30 Apr, 2008 1 commit
  13. 29 Apr, 2008 1 commit
  14. 28 Apr, 2008 1 commit
  15. 21 Apr, 2008 1 commit
  16. 19 Oct, 2007 1 commit
    • Randy Dunlap's avatar
      kernel-api docbook: fix content problems · 8f731f7d
      Randy Dunlap authored
      Fix kernel-api docbook contents problems.
      docproc: linux-2.6.23-git13/include/asm-x86/unaligned_32.h: No such file or directory
      Warning(linux-2.6.23-git13//include/linux/list.h:482): bad line: 			of list entry
      Warning(linux-2.6.23-git13//mm/filemap.c:864): No description found for parameter 'ra'
      Warning(linux-2.6.23-git13//block/ll_rw_blk.c:3760): No description found for parameter 'req'
      Warning(linux-2.6.23-git13//include/linux/input.h:1077): No description found for parameter 'private'
      Warning(linux-2.6.23-git13//include/linux/input.h:1077): No description found for parameter 'cdev'
      Signed-off-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      Cc: Jens Axboe <jens.axboe@oracle.com>
      Cc: WU Fengguang <wfg@mail.ustc.edu.cn>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
  17. 17 Oct, 2007 1 commit
    • Denis V. Lunev's avatar
      shrink_dcache_sb speedup · 37c42524
      Denis V. Lunev authored
      This patch makes shrink_dcache_sb consistent with dentry pruning policy.
      On the first pass we iterate over dentry unused list and prepare some
      dentries for removal.
      However, since the existing code moves evicted dentries to the beginning of
      the LRU it can happen that fresh dentries from other superblocks will be
      inserted *before* our dentries.
      This can result in significant slowdown of shrink_dcache_sb().  Moreover,
      for virtual filesystems like unionfs which can call dput() during dentries
      kill existing code results in O(n^2) complexity.
      We observed 2 minutes shrink_dcache_sb() with only 35000 dentries.
      To avoid this effects we propose to isolate sb dentries at the end
      of LRU list.
      Signed-off-by: default avatarDenis V. Lunev <den@openvz.org>
      Signed-off-by: default avatarKirill Korotaev <dev@openvz.org>
      Signed-off-by: default avatarAndrey Mirkin <amirkin@openvz.org>
      Cc: Neil Brown <neilb@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
  18. 10 Oct, 2007 1 commit
  19. 12 May, 2007 1 commit
  20. 08 May, 2007 1 commit
    • Pavel Emelianov's avatar
      Introduce a handy list_first_entry macro · b5e61818
      Pavel Emelianov authored
      There are many places in the kernel where the construction like
         foo = list_entry(head->next, struct foo_struct, list);
      are used.
      The code might look more descriptive and neat if using the macro
         list_first_entry(head, type, member) \
                   list_entry((head)->next, type, member)
      Here is the macro itself and the examples of its usage in the generic code.
       If it will turn out to be useful, I can prepare the set of patches to
      inject in into arch-specific code, drivers, networking, etc.
      Signed-off-by: default avatarPavel Emelianov <xemul@openvz.org>
      Signed-off-by: default avatarKirill Korotaev <dev@openvz.org>
      Cc: Randy Dunlap <randy.dunlap@oracle.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Zach Brown <zach.brown@oracle.com>
      Cc: Davide Libenzi <davidel@xmailserver.org>
      Cc: John McCutchan <ttb@tentacle.dhs.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: john stultz <johnstul@us.ibm.com>
      Cc: Ram Pai <linuxram@us.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
  21. 11 Feb, 2007 2 commits
  22. 26 Jan, 2007 1 commit
  23. 29 Sep, 2006 1 commit
  24. 14 Jul, 2006 1 commit
  25. 27 Jun, 2006 1 commit
  26. 25 Jun, 2006 2 commits
  27. 23 Jun, 2006 1 commit
  28. 29 Apr, 2006 1 commit
  29. 20 Mar, 2006 2 commits
  30. 03 Feb, 2006 1 commit
  31. 10 Jan, 2006 1 commit
  32. 12 Dec, 2005 1 commit
  33. 07 Nov, 2005 1 commit
  34. 17 Oct, 2005 1 commit
    • Herbert Xu's avatar
      [PATCH] list: add missing rcu_dereference on first element · b24d18aa
      Herbert Xu authored
      It seems that all the list_*_rcu primitives are missing a memory barrier
      on the very first dereference.  For example,
      #define list_for_each_rcu(pos, head) \
      	for (pos = (head)->next; prefetch(pos->next), pos != (head); \
      		pos = rcu_dereference(pos->next))
      It will go something like:
      	pos = (head)->next
      	pos != (head)
      	do stuff
      We're missing a barrier here.
      	pos = rcu_dereference(pos->next)
      		fetch pos->next
      		barrier given by rcu_dereference(pos->next)
      		store pos
      Without the missing barrier, the pos->next value may turn out to be stale.
      In fact, if "do stuff" were also dereferencing pos and relying on
      list_for_each_rcu to provide the barrier then it may also break.
      So here is a patch to make sure that we have a barrier for the first
      element in the list.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Acked-by: default avatar"Paul E. McKenney" <paulmck@us.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
  35. 29 Aug, 2005 2 commits