David Howells
8bbf4976b5
KEYS: Alter use of key instantiation link-to-keyring argument
...
Alter the use of the key instantiation and negation functions' link-to-keyring
arguments. Currently this specifies a keyring in the target process to link
the key into, creating the keyring if it doesn't exist. This, however, can be
a problem for copy-on-write credentials as it means that the instantiating
process can alter the credentials of the requesting process.
This patch alters the behaviour such that:
(1) If keyctl_instantiate_key() or keyctl_negate_key() are given a specific
keyring by ID (ringid >= 0), then that keyring will be used.
(2) If keyctl_instantiate_key() or keyctl_negate_key() are given one of the
special constants that refer to the requesting process's keyrings
(KEY_SPEC_*_KEYRING, all <= 0), then:
(a) If sys_request_key() was given a keyring to use (destringid) then the
key will be attached to that keyring.
(b) If sys_request_key() was given a NULL keyring, then the key being
instantiated will be attached to the default keyring as set by
keyctl_set_reqkey_keyring().
(3) No extra link will be made.
Decision point (1) follows current behaviour, and allows those instantiators
who've searched for a specifically named keyring in the requestor's keyring so
as to partition the keys by type to still have their named keyrings.
Decision point (2) allows the requestor to make sure that the key or keys that
get produced by request_key() go where they want, whilst allowing the
instantiator to request that the key is retained. This is mainly useful for
situations where the instantiator makes a secondary request, the key for which
should be retained by the initial requestor:
+-----------+ +--------------+ +--------------+
| | | | | |
| Requestor |------->| Instantiator |------->| Instantiator |
| | | | | |
+-----------+ +--------------+ +--------------+
request_key() request_key()
This might be useful, for example, in Kerberos, where the requestor requests a
ticket, and then the ticket instantiator requests the TGT, which someone else
then has to go and fetch. The TGT, however, should be retained in the
keyrings of the requestor, not the first instantiator. To make this explict
an extra special keyring constant is also added.
Signed-off-by: David Howells <dhowells@redhat.com>
Reviewed-by: James Morris <jmorris@namei.org>
Signed-off-by: James Morris <jmorris@namei.org>
2008-11-14 10:39:14 +11:00
..
irq
irq: make variable static
2008-10-22 07:37:17 +02:00
power
PM_TEST_SUSPEND should depend on RTC_CLASS, not RTC_LIB
2008-11-01 12:40:38 -07:00
time
Merge branch 'timers/range-hrtimers' into v28-range-hrtimers-for-linus-v2
2008-10-22 09:48:06 +02:00
trace
tracing, ring-buffer: add paranoid checks for loops
2008-11-03 11:10:04 +01:00
.gitignore
acct.c
CRED: Wrap task credential accesses in the core kernel
2008-11-14 10:39:12 +11:00
audit.c
[PATCH] Fix the bug of using AUDIT_STATUS_RATE_LIMIT when set fail, no error output.
2008-08-01 12:15:16 -04:00
audit.h
audit_tree.c
[PATCH] get rid of nameidata in audit_tree
2008-10-23 05:12:53 -04:00
auditfilter.c
Re: [PATCH] the loginuid field should be output in all AUDIT_CONFIG_CHANGE audit messages
2008-08-01 12:15:03 -04:00
auditsc.c
CRED: Wrap task credential accesses in the core kernel
2008-11-14 10:39:12 +11:00
backtracetest.c
bounds.c
capability.c
Capabilities: BUG when an invalid capability is requested
2008-11-11 22:01:24 +11:00
cgroup.c
CRED: Wrap task credential accesses in the core kernel
2008-11-14 10:39:12 +11:00
cgroup_debug.c
cgroups: fix probable race with put_css_set[_taskexit] and find_css_set
2008-10-20 08:52:38 -07:00
cgroup_freezer.c
freezer_cg: simplify freezer_change_state()
2008-10-30 11:38:45 -07:00
compat.c
Merge branches 'timers/clocksource', 'timers/hrtimers', 'timers/nohz', 'timers/ntp', 'timers/posixtimers' and 'timers/debug' into v28-timers-for-linus
2008-10-20 13:14:06 +02:00
configs.c
kernel/configs.c: remove useless comments
2008-10-20 08:52:34 -07:00
cpu.c
Merge branches 'sched/devel', 'sched/cpu-hotplug', 'sched/cpusets' and 'sched/urgent' into sched/core
2008-10-08 11:31:02 +02:00
cpuset.c
cpuset: use seq_*mask_* to print masks
2008-10-20 08:52:39 -07:00
delayacct.c
dma-coherent.c
dma-coherent: export dma_[alloc|release]_from_coherent methods
2008-08-22 08:34:53 +02:00
dma.c
kernel/dma.c: remove a CVS keyword
2008-10-16 11:21:30 -07:00
exec_domain.c
proc: move /proc/execdomains to kernel/exec_domain.c
2008-10-23 14:30:41 +04:00
exit.c
Merge branch 'tracing-v28-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-10-20 13:35:07 -07:00
extable.c
fork.c
Merge branch 'timers/range-hrtimers' into v28-range-hrtimers-for-linus-v2
2008-10-22 09:48:06 +02:00
freezer.c
freezer_cg: use thaw_process() in unfreeze_cgroup()
2008-10-30 11:38:45 -07:00
futex.c
CRED: Wrap task credential accesses in the core kernel
2008-11-14 10:39:12 +11:00
futex_compat.c
CRED: Wrap task credential accesses in the core kernel
2008-11-14 10:39:12 +11:00
hrtimer.c
Merge branch 'timers/range-hrtimers' into v28-range-hrtimers-for-linus-v2
2008-10-22 09:48:06 +02:00
itimer.c
timers: fix itimer/many thread hang
2008-09-14 16:25:35 +02:00
kallsyms.c
kernel/kallsyms.c: fix double return
2008-10-16 11:21:32 -07:00
Kconfig.freezer
container freezer: implement freezer cgroup subsystem
2008-10-20 08:52:34 -07:00
Kconfig.hz
sched: fix SCHED_HRTICK dependency
2008-07-28 14:37:38 +02:00
Kconfig.preempt
kexec.c
kexec: fix crash_save_vmcoreinfo_init build problem
2008-10-20 15:28:50 -07:00
kfifo.c
kgdb.c
kgdb: call touch_softlockup_watchdog on resume
2008-10-06 13:50:59 -05:00
kmod.c
KEYS: Alter use of key instantiation link-to-keyring argument
2008-11-14 10:39:14 +11:00
kprobes.c
make kprobes.c:kretprobe_table_lock() static
2008-10-16 11:21:52 -07:00
ksysfs.c
profiling: dynamically enable readprofile at runtime
2008-10-16 11:21:31 -07:00
kthread.c
Merge branch 'tracing-v28-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-10-20 13:35:07 -07:00
latencytop.c
lockdep.c
lockdep: fix irqs on/off ip tracing
2008-10-28 11:19:07 +01:00
lockdep_internals.h
lockdep: build fix
2008-08-13 12:55:10 +02:00
lockdep_proc.c
lockstat: fix numerical output rounding error
2008-08-26 10:37:46 +02:00
Makefile
Merge branch 'tracing/ftrace' into tracing/urgent
2008-10-22 09:08:14 +02:00
marker.c
markers: bit-field is not thread-safe nor smp-safe
2008-10-14 10:38:45 +02:00
module.c
Merge branch 'proc' of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc
2008-10-23 12:04:37 -07:00
mutex-debug.c
mutex-debug.h
mutex.c
locking: fix mutex @key parameter kernel-doc notation
2008-07-28 18:12:36 +02:00
mutex.h
notifier.c
ftrace: ignore functions that cannot be kprobe-ed
2008-10-14 10:34:22 +02:00
ns_cgroup.c
nsproxy.c
removed unused #include <linux/version.h>'s
2008-08-23 12:14:12 -07:00
panic.c
Make panic= and panic_on_oops into core_params
2008-10-22 10:00:25 +11:00
params.c
Fix compile warning in kernel/params.c
2008-10-23 12:09:00 -07:00
pid.c
pid_namespace.c
pid_ns: (BUG 11391) change ->child_reaper when init->group_leader exits
2008-09-02 19:21:38 -07:00
pm_qos_params.c
pm_qos_requirement might sleep
2008-09-02 19:21:40 -07:00
posix-cpu-timers.c
timers: fix itimer/many thread hang, v2
2008-09-23 13:38:44 +02:00
posix-timers.c
Merge branch 'timers/range-hrtimers' into v28-range-hrtimers-for-linus-v2
2008-10-22 09:48:06 +02:00
printk.c
printk: remove unused code from kernel/printk.c
2008-10-23 21:54:29 +02:00
profile.c
kernel/profile: fix profile_init() section mismatch
2008-10-30 11:38:46 -07:00
ptrace.c
CRED: Wrap task credential accesses in the core kernel
2008-11-14 10:39:12 +11:00
rcuclassic.c
rcu: RCU-based detection of stalled CPUs for Classic RCU, fix
2008-10-03 10:41:00 +02:00
rcupdate.c
rcupdate: fix bug of rcu_barrier*()
2008-10-21 15:59:53 +02:00
rcupreempt.c
byteorder: remove direct includes of linux/byteorder/swab[b].h
2008-10-20 08:52:40 -07:00
rcupreempt_trace.c
rcu: trace fix possible mem-leak
2008-08-15 17:54:40 +02:00
rcutorture.c
byteorder: remove direct includes of linux/byteorder/swab[b].h
2008-10-20 12:51:53 -07:00
relay.c
relay: fix "full buffer with exactly full last subbuffer" accounting problem
2008-08-05 14:33:46 -07:00
res_counter.c
resource.c
reserve_region_with_split: Fix GFP_KERNEL usage under spinlock
2008-11-01 09:53:58 -07:00
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c
rtmutex.c
hrtimer: convert kernel/* to the new hrtimer apis
2008-09-05 21:35:13 -07:00
rtmutex.h
rtmutex_common.h
rwsem.c
sched.c
CRED: Wrap task credential accesses in the core kernel
2008-11-14 10:39:12 +11:00
sched_clock.c
sched_clock: prevent scd->clock from moving backwards
2008-10-10 11:17:04 +02:00
sched_cpupri.c
sched_cpupri.h
sched_debug.c
sched: change sched_debug's mode to 0444
2008-10-30 11:37:57 +01:00
sched_fair.c
sched: virtual time buddy preemption
2008-10-24 12:51:03 +02:00
sched_features.h
sched: disable the hrtick for now
2008-10-20 14:27:43 +02:00
sched_idletask.c
sched: add CONFIG_SMP consistency
2008-10-22 10:01:52 +02:00
sched_rt.c
Merge commit 'v2.6.28-rc1' into sched/urgent
2008-10-24 12:48:46 +02:00
sched_stats.h
Merge branch 'proc' of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc
2008-10-23 12:04:37 -07:00
seccomp.c
semaphore.c
semaphore: __down_common: use signal_pending_state()
2008-08-05 14:33:47 -07:00
signal.c
CRED: Wrap task credential accesses in the core kernel
2008-11-14 10:39:12 +11:00
smp.c
smp: have smp_call_function_single() detect invalid CPUs
2008-08-25 17:45:48 -07:00
softirq.c
Merge branches 'timers/clocksource', 'timers/hrtimers', 'timers/nohz', 'timers/ntp', 'timers/posixtimers' and 'timers/debug' into v28-timers-for-linus
2008-10-20 13:14:06 +02:00
softlockup.c
Make the taint flags reliable
2008-10-16 11:21:31 -07:00
spinlock.c
lockdep: spin_lock_nest_lock(), checkpatch fixes
2008-08-13 13:56:51 +02:00
srcu.c
stacktrace.c
stop_machine.c
Revert "Call init_workqueues before pre smp initcalls."
2008-10-25 19:53:38 -07:00
sys.c
CRED: Wrap task credential accesses in the core kernel
2008-11-14 10:39:12 +11:00
sys_ni.c
Configure out AIO support
2008-10-16 11:21:51 -07:00
sysctl.c
CRED: Wrap task credential accesses in the core kernel
2008-11-14 10:39:12 +11:00
sysctl_check.c
taskstats.c
test_kprobes.c
time.c
select: add a timespec_add_safe() function
2008-09-05 21:34:57 -07:00
timeconst.pl
timer.c
CRED: Wrap task credential accesses in the core kernel
2008-11-14 10:39:12 +11:00
tracepoint.c
tracepoint: check if the probe has been registered
2008-10-27 16:45:46 +01:00
tsacct.c
task IO accounting: move all IO statistics in struct task_io_accounting
2008-07-27 16:12:28 -07:00
uid16.c
user.c
sched: rt-bandwidth for user grouping interface
2008-08-19 13:10:09 +02:00
user_namespace.c
CRED: Wrap task credential accesses in the core kernel
2008-11-14 10:39:12 +11:00
utsname.c
removed unused #include <linux/version.h>'s
2008-08-23 12:14:12 -07:00
utsname_sysctl.c
sysctl: simplify ->strategy
2008-10-16 11:21:47 -07:00
wait.c
wait: kill is_sync_wait()
2008-10-16 11:21:31 -07:00
workqueue.c
workqueue: introduce create_rt_workqueue
2008-10-22 10:00:25 +11:00