1. 13 5月, 2009 1 次提交
  2. 01 4月, 2009 1 次提交
  3. 31 3月, 2009 1 次提交
    • A
      proc 2/2: remove struct proc_dir_entry::owner · 99b76233
      Alexey Dobriyan 提交于
      Setting ->owner as done currently (pde->owner = THIS_MODULE) is racy
      as correctly noted at bug #12454. Someone can lookup entry with NULL
      ->owner, thus not pinning enything, and release it later resulting
      in module refcount underflow.
      
      We can keep ->owner and supply it at registration time like ->proc_fops
      and ->data.
      
      But this leaves ->owner as easy-manipulative field (just one C assignment)
      and somebody will forget to unpin previous/pin current module when
      switching ->owner. ->proc_fops is declared as "const" which should give
      some thoughts.
      
      ->read_proc/->write_proc were just fixed to not require ->owner for
      protection.
      
      rmmod'ed directories will be empty and return "." and ".." -- no harm.
      And directories with tricky enough readdir and lookup shouldn't be modular.
      We definitely don't want such modular code.
      
      Removing ->owner will also make PDE smaller.
      
      So, let's nuke it.
      
      Kudos to Jeff Layton for reminding about this, let's say, oversight.
      
      http://bugzilla.kernel.org/show_bug.cgi?id=12454Signed-off-by: NAlexey Dobriyan <adobriyan@gmail.com>
      99b76233
  4. 07 1月, 2009 1 次提交
  5. 05 1月, 2009 1 次提交
  6. 20 11月, 2008 1 次提交
    • B
      viafb: fix releasing of /proc/viafb/ subtree · c267fd77
      Bruno Prémont 提交于
      When unloading viafb module it does not remove it's /proc/viafb/ subtree
      which causes multiple viafb directories to appear below proc when
      mobprobing viafb and also lets kernel WARN() on duplicate proc entries:
      
      [  145.458387] WARNING: at /usr/src/linux-2.6.28-rc3-git6/fs/proc/generic.c:551 proc_register+0xe6/0x160()
      [  145.458945] proc_dir_entry '/proc/viafb' already registered
      [  145.459278] Modules linked in: viafb(+) i2c_algo_bit cfbcopyarea cfbimgblt cfbfillrect snd_hda_intel snd_pcm snd_timer snd soundcore snd_page_alloc sg via_agp agpgart [last unloaded: drm]
      [  145.460647] Pid: 1904, comm: modprobe Tainted: G        W  2.6.28-rc3-git6 #4
      [  145.461064] Call Trace:
      [  145.461248]  [<c01066f1>] ? dump_stack+0x1/0x80
      [  145.461533]  [<c01228a3>] warn_slowpath+0x63/0x80
      [  145.461851]  [<c0253ec9>] ? idr_get_empty_slot+0xe9/0x250
      [  145.462186]  [<c0254120>] ? ida_get_new_above+0xf0/0x150
      [  145.462528]  [<c019fb86>] proc_register+0xe6/0x160
      [  145.462827]  [<c019fdc6>] proc_mkdir_mode+0x36/0x50
      [  145.463135]  [<c019fdef>] proc_mkdir+0xf/0x20
      [  145.463457]  [<f807173c>] viafb_init+0x73c/0xc86 [viafb]
      [  145.463823]  [<f8071000>] ? viafb_init+0x0/0xc86 [viafb]
      [  145.464147]  [<c010111d>] do_one_initcall+0x2d/0x160
      [  145.464460]  [<c01a6543>] ? sysfs_add_file+0x13/0x20
      [  145.464786]  [<c015f031>] ? vfree+0x21/0x30
      [  145.465049]  [<c01433b5>] ? load_module+0x1215/0x1500
      [  145.465381]  [<c014e455>] ? __alloc_pages_internal+0x95/0x400
      [  145.465755]  [<c0143723>] sys_init_module+0x83/0x1a0
      [  145.466065]  [<c016ceed>] ? sys_read+0x3d/0x70
      [  145.466354]  [<c0103bc1>] sysenter_do_call+0x12/0x25
      [  145.466653] ---[ end trace c84b37826e16748c ]---
      Signed-off-by: NBruno Prémont <bonbons@linux-vserver.org>
      Cc: <JosephChan@via.com.tw>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      c267fd77
  7. 31 10月, 2008 1 次提交
  8. 17 10月, 2008 12 次提交