OpenCloudOS-Kernel/arch/s390/kernel
Linus Torvalds 87c31b39ab Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
Pull user namespace related fixes from Eric Biederman:
 "As these are bug fixes almost all of thes changes are marked for
  backporting to stable.

  The first change (implicitly adding MNT_NODEV on remount) addresses a
  regression that was created when security issues with unprivileged
  remount were closed.  I go on to update the remount test to make it
  easy to detect if this issue reoccurs.

  Then there are a handful of mount and umount related fixes.

  Then half of the changes deal with the a recently discovered design
  bug in the permission checks of gid_map.  Unix since the beginning has
  allowed setting group permissions on files to less than the user and
  other permissions (aka ---rwx---rwx).  As the unix permission checks
  stop as soon as a group matches, and setgroups allows setting groups
  that can not later be dropped, results in a situtation where it is
  possible to legitimately use a group to assign fewer privileges to a
  process.  Which means dropping a group can increase a processes
  privileges.

  The fix I have adopted is that gid_map is now no longer writable
  without privilege unless the new file /proc/self/setgroups has been
  set to permanently disable setgroups.

  The bulk of user namespace using applications even the applications
  using applications using user namespaces without privilege remain
  unaffected by this change.  Unfortunately this ix breaks a couple user
  space applications, that were relying on the problematic behavior (one
  of which was tools/selftests/mount/unprivileged-remount-test.c).

  To hopefully prevent needing a regression fix on top of my security
  fix I rounded folks who work with the container implementations mostly
  like to be affected and encouraged them to test the changes.

    > So far nothing broke on my libvirt-lxc test bed. :-)
    > Tested with openSUSE 13.2 and libvirt 1.2.9.
    > Tested-by: Richard Weinberger <richard@nod.at>

    > Tested on Fedora20 with libvirt 1.2.11, works fine.
    > Tested-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>

    > Ok, thanks - yes, unprivileged lxc is working fine with your kernels.
    > Just to be sure I was testing the right thing I also tested using
    > my unprivileged nsexec testcases, and they failed on setgroup/setgid
    > as now expected, and succeeded there without your patches.
    > Tested-by: Serge Hallyn <serge.hallyn@ubuntu.com>

    > I tested this with Sandstorm.  It breaks as is and it works if I add
    > the setgroups thing.
    > Tested-by: Andy Lutomirski <luto@amacapital.net> # breaks things as designed :("

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace:
  userns: Unbreak the unprivileged remount tests
  userns; Correct the comment in map_write
  userns: Allow setting gid_maps without privilege when setgroups is disabled
  userns: Add a knob to disable setgroups on a per user namespace basis
  userns: Rename id_map_mutex to userns_state_mutex
  userns: Only allow the creator of the userns unprivileged mappings
  userns: Check euid no fsuid when establishing an unprivileged uid mapping
  userns: Don't allow unprivileged creation of gid mappings
  userns: Don't allow setgroups until a gid mapping has been setablished
  userns: Document what the invariant required for safe unprivileged mappings.
  groups: Consolidate the setgroups permission checks
  mnt: Clear mnt_expire during pivot_root
  mnt: Carefully set CL_UNPRIVILEGED in clone_mnt
  mnt: Move the clear of MNT_LOCKED from copy_tree to it's callers.
  umount: Do not allow unmounting rootfs.
  umount: Disallow unprivileged mount force
  mnt: Update unprivileged remount test
  mnt: Implicitly add MNT_NODEV on remount when it was implicitly added by mount
2014-12-17 12:31:40 -08:00
..
vdso32 s390/vdso: fix stack corruption 2014-10-27 13:27:02 +01:00
vdso64 s390/vdso: fix stack corruption 2014-10-27 13:27:02 +01:00
.gitignore s390: add various .gitignore files. 2012-05-16 14:42:41 +02:00
Makefile s390/ftrace: remove 31 bit ftrace support 2014-10-09 09:14:18 +02:00
asm-offsets.c s390/cmpxchg: use compiler builtins 2014-11-03 13:29:47 +01:00
audit.c
audit.h
base.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
cache.c s390, cacheinfo: Fix CPU hotplug callback registration 2014-03-20 13:43:41 +01:00
compat_audit.c
compat_linux.c groups: Consolidate the setgroups permission checks 2014-12-05 17:19:27 -06:00
compat_linux.h s390: add support for vector extension 2014-10-09 09:14:13 +02:00
compat_ptrace.h [S390] ptrace cleanup 2011-01-05 12:47:31 +01:00
compat_signal.c s390/signal: add sparse annotations 2014-11-03 13:30:36 +01:00
compat_wrapper.c s390/kernel: add system calls for PCI memory access 2014-11-19 09:46:43 +01:00
cpcmd.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
crash_dump.c s390/kdump: add support for vector extension 2014-10-09 09:14:16 +02:00
debug.c s390/debug: avoid function call for debug_sprintf_* 2014-12-08 09:42:29 +01:00
diag.c [S390] replace diag10() with diag10_range() function 2011-05-10 17:13:43 +02:00
dis.c s390/disassembler: add vector instructions 2014-10-09 09:14:15 +02:00
dumpstack.c s390/traps: print interrupt code and instruction length code 2014-11-21 08:49:30 +01:00
early.c s390/ftrace,kprobes: allow to patch first instruction 2014-10-27 13:27:27 +01:00
ebcdic.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
entry.S s390: use local symbol names in entry[64].S 2014-12-08 09:42:38 +01:00
entry.h s390/kernel: add system calls for PCI memory access 2014-11-19 09:46:43 +01:00
entry64.S s390: use local symbol names in entry[64].S 2014-12-08 09:42:38 +01:00
ftrace.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2014-12-11 17:30:55 -08:00
head.S s390/head.s: use zero as address for stfl 2014-09-25 10:52:06 +02:00
head31.S s390/mm: Convert bootmem to memblock 2014-05-20 08:58:40 +02:00
head64.S s390: fix kernel crash due to linkage stack instructions 2014-02-05 11:00:50 +01:00
head_kdump.S s390/kdump: Use 64 bit mode for 0x10000 entry point 2012-10-18 17:50:09 +02:00
idle.c s390/idle: convert open coded idle time seqcount 2014-12-08 09:42:32 +01:00
ipl.c s390/ipl: Add missing SCSI loadparm attributes to /sys/firmware 2014-09-01 09:56:29 +02:00
irq.c s390/irq: use irq 0 2014-11-18 18:23:03 +01:00
jump_label.c s390/jump-label: add arch_jump_label_transform_static() 2011-10-25 11:54:37 -07:00
kprobes.c s390/kprobes: fix instruction copy for out of line execution 2014-12-01 11:07:44 +01:00
lgr.c s390/sysinfo,stsi: change return code handling 2012-09-26 15:45:12 +02:00
machine_kexec.c s390/kdump: add support for vector extension 2014-10-09 09:14:16 +02:00
mcount.S s390/ftrace,kprobes: allow to patch first instruction 2014-10-27 13:27:27 +01:00
module.c mm/arch: use NUMA_NO_NODE 2013-11-13 12:09:05 +09:00
nmi.c s390: fix machine check handling 2014-12-01 11:06:55 +01:00
os_info.c Include missing linux/slab.h inclusions 2013-04-29 15:42:01 -04:00
perf_cpum_cf.c s390: Replace __get_cpu_var uses 2014-08-26 13:45:52 -04:00
perf_cpum_cf_events.c s390/cpum_cf: Export event names in sysfs 2013-12-16 14:37:50 +01:00
perf_cpum_sf.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2014-12-11 17:30:55 -08:00
perf_event.c s390/perf: make print_debug_cf() static 2014-03-14 12:59:32 +01:00
pgm_check.S s390: add support for vector extension 2014-10-09 09:14:13 +02:00
process.c s390/simd: clear vector register pointer on fork/clone 2014-12-08 09:42:35 +01:00
processor.c Merge branch 'for-3.18-consistent-ops' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2014-10-15 07:48:18 +02:00
ptrace.c s390/ptrace: always include vector registers in core files 2014-12-08 09:42:37 +01:00
reipl.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
reipl64.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
relocate_kernel.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
relocate_kernel64.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
runtime_instr.c s390/irq: Use defines for external interruption codes 2014-04-03 14:30:52 +02:00
s390_ksyms.c s390: use IS_ENABLED to check if a CONFIG is set to y or m 2013-12-16 14:38:04 +01:00
sclp.S s390/irq: Use defines for external interruption codes 2014-04-03 14:30:52 +02:00
setup.c s390/ftrace,kprobes: allow to patch first instruction 2014-10-27 13:27:27 +01:00
signal.c s390/signal: add sparse annotations 2014-11-03 13:30:36 +01:00
smp.c s390/ftrace,kprobes: allow to patch first instruction 2014-10-27 13:27:27 +01:00
stacktrace.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
suspend.c nosave: consolidate __nosave_{begin,end} in <asm/sections.h> 2014-10-09 22:26:04 -04:00
swsusp_asm64.S s390/hibernate: add early resume function 2013-08-30 08:57:15 +02:00
sys_s390.c teach SYSCALL_DEFINE<n> how to deal with long long/unsigned long long 2013-03-03 22:46:22 -05:00
syscalls.S s390/kernel: add system calls for PCI memory access 2014-11-19 09:46:43 +01:00
sysinfo.c s390: delete __cpuinit usage from all s390 files 2013-07-14 19:36:53 -04:00
time.c s390/kprobes: make use of NOKPROBE_SYMBOL() 2014-10-27 13:27:28 +01:00
topology.c s390/topology: call set_sched_topology early 2014-09-26 12:22:39 +02:00
traps.c s390/traps: die on translation exceptions 2014-11-21 08:49:33 +01:00
uprobes.c s390/uprobes: fix kprobes dependency 2014-10-17 14:45:51 +02:00
vdso.c arm64,ia64,ppc,s390,sh,tile,um,x86,mm: remove default gate area 2014-08-08 15:57:27 -07:00
vmlinux.lds.S s390/linker skript: discard exit.data at runtime 2013-02-14 15:55:21 +01:00
vtime.c s390/time: use stck clock fast for do_account_vtime 2014-10-27 13:27:01 +01:00