 2e13ba54a2
			
		
	
	
	2e13ba54a2
	
	
	
		
			
			Commit 818411616b ("fs, proc: introduce /proc/<pid>/task/<tid>/children
entry") introduced the children entry for checkpoint restore and the
file is only available on kernels configured with CONFIG_EXPERT and
CONFIG_CHECKPOINT_RESTORE.
This is available in most distributions (Fedora, Debian, Ubuntu, CoreOS)
because they usually enable CONFIG_EXPERT and CONFIG_CHECKPOINT_RESTORE.
But Arch does not enable CONFIG_EXPERT or CONFIG_CHECKPOINT_RESTORE.
However, the children proc file is useful outside of checkpoint restore.
I would like to use it in rkt.  The rkt process exec() another program
it does not control, and that other program will fork()+exec() a child
process.  I would like to find the pid of the child process from an
external tool without iterating in /proc over all processes to find
which one has a parent pid equal to rkt.
This commit introduces CONFIG_PROC_CHILDREN and makes
CONFIG_CHECKPOINT_RESTORE select it.  This allows enabling
/proc/<pid>/task/<tid>/children without needing to enable
CONFIG_CHECKPOINT_RESTORE and CONFIG_EXPERT.
Alban tested that /proc/<pid>/task/<tid>/children is present when the
kernel is configured with CONFIG_PROC_CHILDREN=y but without
CONFIG_CHECKPOINT_RESTORE
Signed-off-by: Iago López Galeiras <iago@endocode.com>
Tested-by: Alban Crequy <alban@endocode.com>
Reviewed-by: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Pavel Emelyanov <xemul@parallels.com>
Cc: Serge Hallyn <serge.hallyn@canonical.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Djalal Harouni <djalal@endocode.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
	
			
		
			
				
	
	
		
			77 lines
		
	
	
	
		
			3 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
	
		
			3 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| config PROC_FS
 | |
| 	bool "/proc file system support" if EXPERT
 | |
| 	default y
 | |
| 	help
 | |
| 	  This is a virtual file system providing information about the status
 | |
| 	  of the system. "Virtual" means that it doesn't take up any space on
 | |
| 	  your hard disk: the files are created on the fly by the kernel when
 | |
| 	  you try to access them. Also, you cannot read the files with older
 | |
| 	  version of the program less: you need to use more or cat.
 | |
| 
 | |
| 	  It's totally cool; for example, "cat /proc/interrupts" gives
 | |
| 	  information about what the different IRQs are used for at the moment
 | |
| 	  (there is a small number of Interrupt ReQuest lines in your computer
 | |
| 	  that are used by the attached devices to gain the CPU's attention --
 | |
| 	  often a source of trouble if two devices are mistakenly configured
 | |
| 	  to use the same IRQ). The program procinfo to display some
 | |
| 	  information about your system gathered from the /proc file system.
 | |
| 
 | |
| 	  Before you can use the /proc file system, it has to be mounted,
 | |
| 	  meaning it has to be given a location in the directory hierarchy.
 | |
| 	  That location should be /proc. A command such as "mount -t proc proc
 | |
| 	  /proc" or the equivalent line in /etc/fstab does the job.
 | |
| 
 | |
| 	  The /proc file system is explained in the file
 | |
| 	  <file:Documentation/filesystems/proc.txt> and on the proc(5) manpage
 | |
| 	  ("man 5 proc").
 | |
| 
 | |
| 	  This option will enlarge your kernel by about 67 KB. Several
 | |
| 	  programs depend on this, so everyone should say Y here.
 | |
| 
 | |
| config PROC_KCORE
 | |
| 	bool "/proc/kcore support" if !ARM
 | |
| 	depends on PROC_FS && MMU
 | |
| 	help
 | |
| 	  Provides a virtual ELF core file of the live kernel.  This can
 | |
| 	  be read with gdb and other ELF tools.  No modifications can be
 | |
| 	  made using this mechanism.
 | |
| 
 | |
| config PROC_VMCORE
 | |
| 	bool "/proc/vmcore support"
 | |
| 	depends on PROC_FS && CRASH_DUMP
 | |
| 	default y
 | |
|         help
 | |
|         Exports the dump image of crashed kernel in ELF format.
 | |
| 
 | |
| config PROC_SYSCTL
 | |
| 	bool "Sysctl support (/proc/sys)" if EXPERT
 | |
| 	depends on PROC_FS
 | |
| 	select SYSCTL
 | |
| 	default y
 | |
| 	---help---
 | |
| 	  The sysctl interface provides a means of dynamically changing
 | |
| 	  certain kernel parameters and variables on the fly without requiring
 | |
| 	  a recompile of the kernel or reboot of the system.  The primary
 | |
| 	  interface is through /proc/sys.  If you say Y here a tree of
 | |
| 	  modifiable sysctl entries will be generated beneath the
 | |
|           /proc/sys directory. They are explained in the files
 | |
| 	  in <file:Documentation/sysctl/>.  Note that enabling this
 | |
| 	  option will enlarge the kernel by at least 8 KB.
 | |
| 
 | |
| 	  As it is generally a good thing, you should say Y here unless
 | |
| 	  building a kernel for install/rescue disks or your system is very
 | |
| 	  limited in memory.
 | |
| 
 | |
| config PROC_PAGE_MONITOR
 | |
|  	default y
 | |
| 	depends on PROC_FS && MMU
 | |
| 	bool "Enable /proc page monitoring" if EXPERT
 | |
|  	help
 | |
| 	  Various /proc files exist to monitor process memory utilization:
 | |
| 	  /proc/pid/smaps, /proc/pid/clear_refs, /proc/pid/pagemap,
 | |
| 	  /proc/kpagecount, and /proc/kpageflags. Disabling these
 | |
|           interfaces will reduce the size of the kernel by approximately 4kb.
 | |
| 
 | |
| config PROC_CHILDREN
 | |
| 	bool "Include /proc/<pid>/task/<tid>/children file"
 | |
| 	default n
 |