Matt Helsley
925d1c401f
procfs task exe symlink
...
The kernel implements readlink of /proc/pid/exe by getting the file from
the first executable VMA. Then the path to the file is reconstructed and
reported as the result.
Because of the VMA walk the code is slightly different on nommu systems.
This patch avoids separate /proc/pid/exe code on nommu systems. Instead of
walking the VMAs to find the first executable file-backed VMA we store a
reference to the exec'd file in the mm_struct.
That reference would prevent the filesystem holding the executable file
from being unmounted even after unmapping the VMAs. So we track the number
of VM_EXECUTABLE VMAs and drop the new reference when the last one is
unmapped. This avoids pinning the mounted filesystem.
[akpm@linux-foundation.org: improve comments]
[yamamoto@valinux.co.jp: fix dup_mmap]
Signed-off-by: Matt Helsley <matthltc@us.ibm.com>
Cc: Oleg Nesterov <oleg@tv-sign.ru>
Cc: David Howells <dhowells@redhat.com>
Cc:"Eric W. Biederman" <ebiederm@xmission.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Hugh Dickins <hugh@veritas.com>
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-04-29 08:06:17 -07:00
..
irq
kernel: explicitly include required header files under kernel/
2008-04-29 08:06:04 -07:00
power
PM/gxfb: add hook to PM console layer that allows disabling of suspend VT switch
2008-04-28 08:58:36 -07:00
time
softlockup: fix NOHZ wakeup
2008-04-25 00:25:08 +02:00
.gitignore
Update kernel/.gitignore with new auto-generated files
2008-02-09 23:27:01 -08:00
acct.c
bsd_acct: using task_struct->tgid is not right in pid-namespaces
2008-03-24 19:22:20 -07:00
audit.c
Audit: internally use the new LSM audit hooks
2008-04-19 09:52:37 +10:00
audit.h
SELinux: use new audit hooks, remove redundant exports
2008-04-19 09:53:46 +10:00
audit_tree.c
Introduce path_put()
2008-02-14 21:13:33 -08:00
auditfilter.c
Audit: Final renamings and cleanup
2008-04-19 09:59:43 +10:00
auditsc.c
Audit: Final renamings and cleanup
2008-04-19 09:59:43 +10:00
backtracetest.c
bounds.c
mm: Get rid of __ZONE_COUNT
2008-04-28 08:58:22 -07:00
capability.c
cgroup.c
cgroups: add an owner to the mm_struct
2008-04-29 08:06:10 -07:00
cgroup_debug.c
CGroup API files: move "releasable" to cgroup_debug subsystem
2008-04-29 08:06:09 -07:00
compat.c
generic: reduce stack pressure in sched_affinity
2008-04-19 19:44:59 +02:00
configs.c
cpu.c
simplify cpu_hotplug_begin()/put_online_cpus()
2008-04-29 08:06:11 -07:00
cpuset.c
Cpuset hardwall flag: add a mem_hardwall flag to cpusets
2008-04-29 08:06:11 -07:00
delayacct.c
dma.c
exec_domain.c
exit.c
cgroups: add an owner to the mm_struct
2008-04-29 08:06:10 -07:00
extable.c
fork.c
procfs task exe symlink
2008-04-29 08:06:17 -07:00
futex.c
NULL noise: fs/*, mm/*, kernel/*
2008-03-30 14:18:41 -07:00
futex_compat.c
futex_compat __user annotation
2008-03-30 14:18:41 -07:00
hrtimer.c
hrtimer: raise softirq unlocked to avoid circular lock dependency
2008-04-28 22:22:21 +02:00
itimer.c
kallsyms.c
Kconfig.hz
Kconfig.preempt
rcu: move PREEMPT_RCU config option back under PREEMPT
2008-03-10 18:01:20 -07:00
kexec.c
vmcoreinfo: add page flags values
2008-04-28 08:58:23 -07:00
kfifo.c
kgdb.c
kgdb: always use icache flush for sw breakpoints
2008-04-17 20:05:43 +02:00
kmod.c
generic: use new set_cpus_allowed_ptr function
2008-04-19 19:44:58 +02:00
kprobes.c
kprobes: add (un)register_jprobes for batch registration
2008-04-28 08:58:32 -07:00
ksysfs.c
kthread.c
kthread: call wake_up_process() without the lock being held
2008-04-29 08:06:04 -07:00
latencytop.c
latencytop: optimize LT_BACKTRACEDEPTH loops a bit
2008-04-19 19:44:57 +02:00
lockdep.c
Subject: lockdep: include all lock classes in all_lock_classes
2008-02-25 23:03:02 +01:00
lockdep_internals.h
lockdep_proc.c
Makefile
Merge git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-kgdb
2008-04-18 08:37:01 -07:00
marker.c
kernel: explicitly include required header files under kernel/
2008-04-29 08:06:04 -07:00
module.c
kernel: Remove unnecessary inclusions of asm/semaphore.h
2008-04-18 22:17:04 -04:00
mutex-debug.c
kernel: remove fastcall in kernel/*
2008-02-08 09:22:31 -08:00
mutex-debug.h
mutex.c
kernel: remove fastcall in kernel/*
2008-02-08 09:22:31 -08:00
mutex.h
notifier.c
ipc: re-enable msgmni automatic recomputing msgmni if set to negative
2008-04-29 08:06:13 -07:00
ns_cgroup.c
cgroups: kernel/ns_cgroup.c should #include <linux/nsproxy.h>
2008-04-29 08:06:07 -07:00
nsproxy.c
ipc: sysvsem: refuse clone(CLONE_SYSVSEM|CLONE_NEWIPC)
2008-04-29 08:06:14 -07:00
panic.c
Taint kernel after WARN_ON(condition)
2008-04-29 08:05:59 -07:00
params.c
Add new string functions strict_strto* and convert kernel params to use them
2008-02-08 09:22:41 -08:00
pid.c
kernel: remove fastcall in kernel/*
2008-02-08 09:22:31 -08:00
pid_namespace.c
kernel: fix integer as NULL pointer warnings
2008-04-28 17:29:18 -07:00
pm_qos_params.c
posix-cpu-timers.c
posix-timers: fix shadowed variables
2008-04-17 12:22:30 +02:00
posix-timers.c
kernel: Remove unnecessary inclusions of asm/semaphore.h
2008-04-18 22:17:04 -04:00
printk.c
isolate ratelimit from printk.c for other use
2008-04-29 08:06:06 -07:00
profile.c
kernel: Remove unnecessary inclusions of asm/semaphore.h
2008-04-18 22:17:04 -04:00
ptrace.c
ptrace: conditionalize compat_ptrace_request
2008-04-28 14:14:36 -07:00
rcuclassic.c
rcupdate.c
rcupdate: fix comment
2008-02-13 16:21:18 -08:00
rcupreempt.c
generic: reduce stack pressure in sched_affinity
2008-04-19 19:44:59 +02:00
rcupreempt_trace.c
rcutorture.c
kernel: explicitly include required header files under kernel/
2008-04-29 08:06:04 -07:00
relay.c
relay: set an spd_release() hook for splice
2008-03-26 12:04:09 +01:00
res_counter.c
memcgroup: add the max_usage member on the res_counter
2008-04-29 08:06:10 -07:00
resource.c
PCI: clean up resource alignment management
2008-04-20 21:47:08 -07:00
rtmutex-debug.c
Don't operate with pid_t in rtmutex tester
2008-02-08 09:22:41 -08:00
rtmutex-debug.h
rtmutex-tester.c
rtmutex.c
hrtimer: more hrtimer_init_sleeper() fallout.
2008-02-13 15:45:36 +01:00
rtmutex.h
rtmutex_common.h
Don't operate with pid_t in rtmutex tester
2008-02-08 09:22:41 -08:00
rwsem.c
sched.c
CGroups _s64 files: use read_s64/write_s64 in CFS cgroup for rt_runtime file
2008-04-29 08:06:09 -07:00
sched_debug.c
sched: build fix
2008-04-19 19:45:01 +02:00
sched_fair.c
sched: debug: show a weight tree
2008-04-19 19:45:00 +02:00
sched_features.h
sched: /debug/sched_features
2008-04-19 19:45:00 +02:00
sched_idletask.c
sched_rt.c
sched: rt-group: optimize dequeue_rt_stack
2008-04-19 19:45:00 +02:00
sched_stats.h
cpumask: use new cpus_scnprintf function
2008-04-19 19:44:59 +02:00
seccomp.c
semaphore.c
Improve semaphore documentation
2008-04-17 10:43:01 -04:00
signal.c
trivial: small cleanups
2008-04-21 22:15:06 +00:00
softirq.c
tasklets: execute tasklets in the same order they were queued
2008-04-19 19:44:58 +02:00
softlockup.c
softlockup: fix task state setting
2008-02-29 18:46:53 +01:00
spinlock.c
srcu.c
stacktrace.c
stop_machine.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/juhl/trivial
2008-04-21 16:36:46 -07:00
sys.c
add RUSAGE_THREAD
2008-04-29 08:05:59 -07:00
sys_ni.c
sysctl.c
keys: make the keyring quotas controllable through /proc/sys
2008-04-29 08:06:17 -07:00
sysctl_check.c
constify tables in kernel/sysctl_check.c
2008-02-08 09:22:31 -08:00
taskstats.c
test_kprobes.c
time.c
kernel: explicitly include required header files under kernel/
2008-04-29 08:06:04 -07:00
timeconst.pl
timeconst.pl: correct reversal of USEC_TO_HZ and HZ_TO_USEC
2008-02-12 14:29:26 -08:00
timer.c
timers: simplify lockdep handling
2008-04-17 12:22:31 +02:00
tsacct.c
uid16.c
asmlinkage_protect replaces prevent_tail_call
2008-04-10 17:28:26 -07:00
user.c
keys: don't generate user and user session keyrings unless they're accessed
2008-04-29 08:06:17 -07:00
user_namespace.c
eCryptfs: make key module subsystem respect namespaces
2008-04-29 08:06:07 -07:00
utsname.c
kernel: explicitly include required header files under kernel/
2008-04-29 08:06:04 -07:00
utsname_sysctl.c
wait.c
kernel: remove fastcall in kernel/*
2008-02-08 09:22:31 -08:00
workqueue.c
cleanup_workqueue_thread: remove the unneeded "cpu" parameter
2008-04-29 08:06:11 -07:00