Commit
9309502109da994974c841259633ad2bace625d8
by Merlijn Boris Wolf Wajermce.io: close fd in mce_unregister_io_monitor
mce apparently never closes the backing fd of a GIOChannel, this was
evident in /proc/<mce-pid>/fd, after hotplugging and removing input
devices a few times. (Note the fds that are still open, pointing to
/dev/input/event* files that are no longer there - 'deleted')
# ls -lsh /proc/1397/fd
total 0
0 lrwx------ 1 root root 64 Feb 11 13:50 0 -> /dev/pts/4
0 lrwx------ 1 root root 64 Feb 11 13:50 1 -> /dev/pts/4
0 lr-x------ 1 root root 64 Feb 11 13:50 10 -> anon_inode:inotify
0 lrwx------ 1 root root 64 Feb 11 13:50 11 -> socket:[232872]
0 lr-x------ 1 root root 64 Feb 11 13:50 12 -> /dev/input/event2 (deleted)
0 lr-x------ 1 root root 64 Feb 11 13:50 13 -> /dev/input/event4 (deleted)
0 lr-x------ 1 root root 64 Feb 11 13:50 14 -> /dev/input/event3 (deleted)
0 lr-x------ 1 root root 64 Feb 11 13:50 15 -> /dev/input/event2 (deleted)
0 lr-x------ 1 root root 64 Feb 11 13:50 16 -> /dev/input/event2 (deleted)
0 lr-x------ 1 root root 64 Feb 11 13:50 17 -> /dev/input/event6
0 lr-x------ 1 root root 64 Feb 11 13:50 18 -> /dev/input/event1
0 lr-x------ 1 root root 64 Feb 11 13:50 19 -> /dev/input/event0
0 lrwx------ 1 root root 64 Feb 11 13:50 2 -> /dev/pts/4
0 lrwx------ 1 root root 64 Feb 11 13:50 20 -> /dev/fb0
0 lr-x------ 1 root root 64 Feb 11 13:50 21 -> /dev/input/event2 (deleted)
0 lr-x------ 1 root root 64 Feb 11 13:50 22 -> /dev/input/event3 (deleted)
0 lr-x------ 1 root root 64 Feb 11 13:50 23 -> /dev/input/event4 (deleted)
0 lr-x------ 1 root root 64 Feb 11 13:50 24 -> /dev/input/event2
0 lr-x------ 1 root root 64 Feb 11 13:50 25 -> /dev/input/event2
0 lr-x------ 1 root root 64 Feb 11 13:50 26 -> /dev/input/event3
0 lr-x------ 1 root root 64 Feb 11 13:50 27 -> /dev/input/event4
0 lr-x------ 1 root root 64 Feb 11 13:50 28 -> /dev/input/event5
0 lrwx------ 1 root root 64 Feb 11 13:50 3 -> anon_inode:[eventfd]
0 lrwx------ 1 root root 64 Feb 11 13:50 4 -> socket:[232111]
0 lrwx------ 1 root root 64 Feb 11 13:50 5 -> socket:[234536]
0 lrwx------ 1 root root 64 Feb 11 13:50 6 -> socket:[234537]
0 lrwx------ 1 root root 64 Feb 11 13:50 7 -> socket:[234540]
0 lrwx------ 1 root root 64 Feb 11 13:50 8 -> anon_inode:[eventfd]
0 lrwx------ 1 root root 64 Feb 11 13:50 9 -> anon_inode:[eventfd]
After this patch, the result looks like this:
# ls -lsh /proc/3558/fd
total 0
0 lrwx------ 1 root root 64 Feb 11 13:54 0 -> /dev/pts/4
0 lrwx------ 1 root root 64 Feb 11 13:54 1 -> /dev/pts/4
0 lr-x------ 1 root root 64 Feb 11 13:54 10 -> anon_inode:inotify
0 lrwx------ 1 root root 64 Feb 11 13:54 11 -> /dev/fb0
0 lr-x------ 1 root root 64 Feb 11 13:55 12 -> /dev/input/event2
0 lr-x------ 1 root root 64 Feb 11 13:55 13 -> /dev/input/event2
0 lr-x------ 1 root root 64 Feb 11 13:55 14 -> /dev/input/event3
0 lr-x------ 1 root root 64 Feb 11 13:55 15 -> /dev/input/event4
0 lr-x------ 1 root root 64 Feb 11 13:55 16 -> /dev/input/event5
0 lr-x------ 1 root root 64 Feb 11 13:55 17 -> /dev/input/event6
0 lr-x------ 1 root root 64 Feb 11 13:55 18 -> /dev/input/event1
0 lr-x------ 1 root root 64 Feb 11 13:55 19 -> /dev/input/event0
0 lrwx------ 1 root root 64 Feb 11 13:54 2 -> /dev/pts/4
0 lrwx------ 1 root root 64 Feb 11 13:55 20 -> socket:[236198]
0 lrwx------ 1 root root 64 Feb 11 13:54 3 -> anon_inode:[eventfd]
0 lrwx------ 1 root root 64 Feb 11 13:54 4 -> socket:[237579]
0 lrwx------ 1 root root 64 Feb 11 13:54 5 -> socket:[236179]
0 lrwx------ 1 root root 64 Feb 11 13:54 6 -> socket:[237580]
0 lrwx------ 1 root root 64 Feb 11 13:54 7 -> socket:[235421]
0 lrwx------ 1 root root 64 Feb 11 13:54 8 -> anon_inode:[eventfd]
0 lrwx------ 1 root root 64 Feb 11 13:54 9 -> anon_inode:[eventfd]