Forum | Documentation | Website | Blog

Skip to content
Snippets Groups Projects
  1. Jan 05, 2009
    • Ken Chen's avatar
      proc: add /proc/*/stack · 2ec220e2
      Ken Chen authored
      
      /proc/*/stack adds the ability to query a task's stack trace. It is more
      useful than /proc/*/wchan as it provides full stack trace instead of single
      depth. Example output:
      
      	$ cat /proc/self/stack
      	[<c010a271>] save_stack_trace_tsk+0x17/0x35
      	[<c01827b4>] proc_pid_stack+0x4a/0x76
      	[<c018312d>] proc_single_show+0x4a/0x5e
      	[<c016bdec>] seq_read+0xf3/0x29f
      	[<c015a004>] vfs_read+0x6d/0x91
      	[<c015a0c1>] sys_read+0x3b/0x60
      	[<c0102eda>] syscall_call+0x7/0xb
      	[<ffffffff>] 0xffffffff
      
      [add save_stack_trace_tsk() on mips, ACK Ralf --adobriyan]
      Signed-off-by: default avatarKen Chen <kenchen@google.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
      2ec220e2
    • Alexey Dobriyan's avatar
      proc: remove '##' usage · 631f9c18
      Alexey Dobriyan authored
      
      Inability to jump to /proc/*/foo handlers with ctags is annoying.
      
      Signed-off-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
      631f9c18
    • Alexey Dobriyan's avatar
      proc: remove useless WARN_ONs · ecae934e
      Alexey Dobriyan authored
      
      NULL "struct inode *" means VFS passed NULL inode to ->open.
      
      Signed-off-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
      ecae934e
    • Alexey Dobriyan's avatar
      proc: stop using BKL · b4df2b92
      Alexey Dobriyan authored
      
      There are four BKL users in proc: de_put(), proc_lookup_de(),
      proc_readdir_de(), proc_root_readdir(),
      
      1) de_put()
      -----------
      de_put() is classic atomic_dec_and_test() refcount wrapper -- no BKL
      needed. BKL doesn't matter to possible refcount leak as well.
      
      2) proc_lookup_de()
      -------------------
      Walking PDE list is protected by proc_subdir_lock(), proc_get_inode() is
      potentially blocking, all callers of proc_lookup_de() eventually end up
      from ->lookup hooks which is protected by directory's ->i_mutex -- BKL
      doesn't protect anything.
      
      3) proc_readdir_de()
      --------------------
      "." and ".." part doesn't need BKL, walking PDE list is under
      proc_subdir_lock, calling filldir callback is potentially blocking
      because it writes to luserspace. All proc_readdir_de() callers
      eventually come from ->readdir hook which is under directory's
      ->i_mutex -- BKL doesn't protect anything.
      
      4) proc_root_readdir_de()
      -------------------------
      proc_root_readdir_de is ->readdir hook, see (3).
      
      Since readdir hooks doesn't use BKL anymore, switch to
      generic_file_llseek, since it also takes directory's i_mutex.
      
      Signed-off-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
      b4df2b92
  2. Jan 04, 2009
  3. Jan 03, 2009