1
linux/drivers/video/via
Bruno Prémont c267fd777a viafb: fix releasing of /proc/viafb/ subtree
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: Bruno Prémont <bonbons@linux-vserver.org>
Cc: <JosephChan@via.com.tw>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-11-19 18:49:58 -08:00
..
accel.c
accel.h
chip.h
debug.h
dvi.c viafb: dvi.c, dvi.h, global.c and global.h 2008-10-16 11:21:41 -07:00
dvi.h viafb: dvi.c, dvi.h, global.c and global.h 2008-10-16 11:21:41 -07:00
global.c viafb: dvi.c, dvi.h, global.c and global.h 2008-10-16 11:21:41 -07:00
global.h viafb: removed duplicated #include's 2008-10-30 11:38:45 -07:00
hw.c viafb: hw.c, hw.h 2008-10-16 11:21:41 -07:00
hw.h viafb: hw.c, hw.h 2008-10-16 11:21:41 -07:00
iface.c viafb: iface.c, iface.h, ioctl.c, ioctl.h 2008-10-16 11:21:41 -07:00
iface.h viafb: iface.c, iface.h, ioctl.c, ioctl.h 2008-10-16 11:21:41 -07:00
ioctl.c viafb: iface.c, iface.h, ioctl.c, ioctl.h 2008-10-16 11:21:41 -07:00
ioctl.h viafb: iface.c, iface.h, ioctl.c, ioctl.h 2008-10-16 11:21:41 -07:00
lcd.c viafb: lcd.c, lcd.h, lcdtbl.h 2008-10-16 11:21:41 -07:00
lcd.h viafb: lcd.c, lcd.h, lcdtbl.h 2008-10-16 11:21:41 -07:00
lcdtbl.h viafb: lcd.c, lcd.h, lcdtbl.h 2008-10-16 11:21:41 -07:00
Makefile viafb: Makefile, share.h 2008-10-16 11:21:41 -07:00
share.h viafb: Makefile, share.h 2008-10-16 11:21:41 -07:00
tbl1636.c viafb: tbl1636.c, tbl1636.h, tblDPASetting.c, tblDPASetting.h 2008-10-16 11:21:41 -07:00
tbl1636.h viafb: tbl1636.c, tbl1636.h, tblDPASetting.c, tblDPASetting.h 2008-10-16 11:21:41 -07:00
tblDPASetting.c viafb: tbl1636.c, tbl1636.h, tblDPASetting.c, tblDPASetting.h 2008-10-16 11:21:41 -07:00
tblDPASetting.h viafb: tbl1636.c, tbl1636.h, tblDPASetting.c, tblDPASetting.h 2008-10-16 11:21:41 -07:00
via_i2c.c viafb: via_i2c.c, via_i2c.h, viamode.c, viamode.h 2008-10-16 11:21:42 -07:00
via_i2c.h viafb: via_i2c.c, via_i2c.h, viamode.c, viamode.h 2008-10-16 11:21:42 -07:00
via_utility.c viafb: via_utility.c, via_utility.h, vt1636.c, vt1636.h 2008-10-16 11:21:42 -07:00
via_utility.h viafb: via_utility.c, via_utility.h, vt1636.c, vt1636.h 2008-10-16 11:21:42 -07:00
viafbdev.c viafb: fix releasing of /proc/viafb/ subtree 2008-11-19 18:49:58 -08:00
viafbdev.h viafb: viafbdev.c, viafbdev.h 2008-10-16 11:21:41 -07:00
viamode.c viafb: via_i2c.c, via_i2c.h, viamode.c, viamode.h 2008-10-16 11:21:42 -07:00
viamode.h viafb: via_i2c.c, via_i2c.h, viamode.c, viamode.h 2008-10-16 11:21:42 -07:00
vt1636.c viafb: via_utility.c, via_utility.h, vt1636.c, vt1636.h 2008-10-16 11:21:42 -07:00
vt1636.h viafb: via_utility.c, via_utility.h, vt1636.c, vt1636.h 2008-10-16 11:21:42 -07:00