10 Dec, 2015

4 commits

  • commit 5967c17b118a2bd1dd1d554cc4eee16233e52bec upstream.

    We should never allow to enable/disable any facilities for the guest
    when other VCPUs were already created.

    kvm_arch_vcpu_(load|put) relies on SIMD not changing during runtime.
    If somebody would create and run VCPUs and then decides to enable
    SIMD, undefined behaviour could be possible (e.g. vector save area
    not being set up).

    Acked-by: Christian Borntraeger
    Acked-by: Cornelia Huck
    Signed-off-by: David Hildenbrand
    Signed-off-by: Christian Borntraeger
    Signed-off-by: Greg Kroah-Hartman

    David Hildenbrand
     
  • commit b85de33a1a3433487b6a721cfdce25ec8673e622 upstream.

    Commit 383d0b050106 ("KVM: s390: handle pending local interrupts via
    bitmap") introduced a possible memory overwrite from user space.

    User space could pass an invalid emergency signal code (sending VCPU)
    and therefore exceed the bitmap. Let's take care of this case and
    check that the id is in the valid range.

    Reviewed-by: Dominik Dingel
    Signed-off-by: David Hildenbrand
    Signed-off-by: Christian Borntraeger
    Signed-off-by: Greg Kroah-Hartman

    David Hildenbrand
     
  • commit 152e9f65d66f0a3891efc3869440becc0e7ff53f upstream.

    For now, VCPUs were always created sequentially with incrementing
    VCPU ids. Therefore, the index in the VCPUs array matched the id.

    As sequential creation might change with cpu hotplug, let's use
    the correct lookup function to find a VCPU by id, not array index.

    Let's also use kvm_lookup_vcpu() for validation of the sending VCPU
    on external call injection.

    Reviewed-by: Christian Borntraeger
    Signed-off-by: David Hildenbrand
    Signed-off-by: Christian Borntraeger
    Signed-off-by: Greg Kroah-Hartman

    David Hildenbrand
     
  • commit c5c2c393468576bad6d10b2b5fefff8cd25df3f4 upstream.

    We seemed to have missed a few corner cases in commit f6c137ff00a4
    ("KVM: s390: randomize sca address").

    The SCA has a maximum size of 2112 bytes. By setting the sca_offset to
    some unlucky numbers, we exceed the page.

    0x7c0 (1984) -> Fits exactly
    0x7d0 (2000) -> 16 bytes out
    0x7e0 (2016) -> 32 bytes out
    0x7f0 (2032) -> 48 bytes out

    One VCPU entry is 32 bytes long.

    For the last two cases, we actually write data to the other page.
    1. The address of the VCPU.
    2. Injection/delivery/clearing of SIGP externall calls via SIGP IF.

    Especially the 2. happens regularly. So this could produce two problems:
    1. The guest losing/getting external calls.
    2. Random memory overwrites in the host.

    So this problem happens on every 127 + 128 created VM with 64 VCPUs.

    Acked-by: Christian Borntraeger
    Signed-off-by: David Hildenbrand
    Signed-off-by: Christian Borntraeger
    Signed-off-by: Greg Kroah-Hartman

    David Hildenbrand
     

23 Oct, 2015

2 commits

  • commit adc0b7fbf6fe9967505c0254d9535ec7288186ae upstream.

    my gcc 5.1 used an ldgr instruction with a register != 0,2,4,6 for
    spilling/filling into a floating point register in our decompressor.

    This will cause an AFP-register data exception as the decompressor
    did not setup the additional floating point registers via cr0.
    That causes a program check loop that looked like a hang with
    one "Uncompressing Linux... " message (directly booted via kvm)
    or a loop of "Uncompressing Linux... " messages (when booted via
    zipl boot loader).

    The offending code in my build was

    48e400: e3 c0 af ff ff 71 lay %r12,-1(%r10)
    -->48e406: b3 c1 00 1c ldgr %f1,%r12
    48e40a: ec 6c 01 22 02 7f clij %r6,2,12,0x48e64e

    but gcc could do spilling into an fpr at any function. We can
    simply disable floating point support at that early stage.

    Signed-off-by: Christian Borntraeger
    Acked-by: Heiko Carstens
    Signed-off-by: Greg Kroah-Hartman

    Christian Borntraeger
     
  • commit 8d4bd0ed0439dfc780aab801a085961925ed6838 upstream.

    The uc_sigmask in the ucontext structure is an array of words to keep
    the 64 signal bits (or 1024 if you ask glibc but the kernel sigset_t
    only has 64 bits).

    For 64 bit the sigset_t contains a single 8 byte word, but for 31 bit
    there are two 4 byte words. The compat signal handler code uses a
    simple copy of the 64 bit sigset_t to the 31 bit compat_sigset_t.
    As s390 is a big-endian architecture this is incorrect, the two words
    in the 31 bit sigset_t array need to be swapped.

    Reported-by: Stefan Liebler
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Greg Kroah-Hartman

    Martin Schwidefsky
     

30 Sep, 2015

1 commit

  • commit 2d3862d26e67a59340ba1cf1748196c76c5787de upstream.

    When loading x86 64bit kernel above 4GiB with patched grub2, got kernel
    gunzip error.

    | early console in decompress_kernel
    | decompress_kernel:
    | input: [0x807f2143b4-0x807ff61aee]
    | output: [0x807cc00000-0x807f3ea29b] 0x027ea29c: output_len
    | boot via startup_64
    | KASLR using RDTSC...
    | new output: [0x46fe000000-0x470138cfff] 0x0338d000: output_run_size
    | decompress: [0x46fe000000-0x47007ea29b]
    Cc: Alexandre Courbot
    Cc: Jon Medhurst
    Cc: Stephen Warren
    Cc: "H. Peter Anvin"
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds
    Signed-off-by: Greg Kroah-Hartman

    Yinghai Lu
     

22 Sep, 2015

1 commit

  • commit 89b1145e93771d727645c96e323539c029b63f1c upstream.

    The novx parameter disables the vector facility but the HWCAP_S390_VXRS
    bit in the ELf hardware capabilies is always set if the machine has
    the vector facility. If the user space program uses the "vx" string
    in the features field of /proc/cpuinfo to utilize vector instruction
    it will crash if the novx kernel paramter is set.

    Convert setup_hwcaps to an arch_initcall and use MACHINE_HAS_VX to
    decide if the HWCAPS_S390_VXRS bit needs to be set.

    Reported-by: Ulrich Weigand
    Reviewed-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Greg Kroah-Hartman

    Martin Schwidefsky
     

11 Aug, 2015

5 commits

  • commit 0b991f5cdcd6201e5401f83ca3a672343c3bfc49 upstream.

    Stephen Powell reported the following crash on a z890 machine:

    Kernel BUG at 00000000001219d0 [verbose debug info unavailable]
    illegal operation: 0001 ilc:3 [#1] SMP
    Krnl PSW : 0704e00180000000 00000000001219d0 (init_cache_level+0x38/0xe0)
    R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:2 PM:0 EA:3
    Krnl Code: 00000000001219c2: a7840056 brc 8,121a6e
    00000000001219c6: a7190000 lghi %r1,0
    #00000000001219ca: eb101000004c ecag %r1,%r0,0(%r1)
    >00000000001219d0: a7390000 lghi %r3,0
    00000000001219d4: e310f0a00024 stg %r1,160(%r15)
    00000000001219da: a7080000 lhi %r0,0
    00000000001219de: a7b9f000 lghi %r11,-4096
    00000000001219e2: c0a0002899d9 larl %r10,634d94
    Call Trace:
    [] detect_cache_attributes+0x2a/0x2b8
    [] cacheinfo_sysfs_init+0x60/0xc8
    [] do_one_initcall+0x98/0x1c8
    [] kernel_init_freeable+0x212/0x2d8
    [] kernel_init+0x26/0x118
    [] kernel_thread_starter+0x6/0xc

    The illegal operation was executed because of a missing facility check,
    which should have made sure that the ECAG execution would only be executed
    on machines which have the general-instructions-extension facility
    installed.

    Reported-and-tested-by: Stephen Powell
    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Greg Kroah-Hartman

    Heiko Carstens
     
  • commit 30342fe65e511007672437741158d493472f427f upstream.

    Currently we assumed the following BPF to eBPF register mapping:

    - BPF_REG_A -> BPF_REG_7
    - BPF_REG_X -> BPF_REG_8

    Unfortunately this mapping is wrong. The correct mapping is:

    - BPF_REG_A -> BPF_REG_0
    - BPF_REG_X -> BPF_REG_7

    So clear the correct registers and use the BPF_REG_A and BPF_REG_X
    macros instead of BPF_REG_0/7.

    Fixes: 054623105728 ("s390/bpf: Add s390x eBPF JIT compiler backend")
    Signed-off-by: Michael Holzheu
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Greg Kroah-Hartman

    Michael Holzheu
     
  • commit cad49cfc44a5160e3fa09b18e4e7f7cacd13f27d upstream.

    If a machine check happens, the machine has the vector facility installed
    and the extended save area exists, the cpu will save vector register
    contents into the extended save area. This is regardless of control
    register 0 contents, which enables and disables the vector facility during
    runtime.

    On each machine check we should validate the vector registers. The current
    code however tries to validate the registers only if the running task is
    using vector registers in user space.

    However even the current code is broken and causes vector register
    corruption on machine checks, if user space uses them:
    the prefix area contains a pointer (absolute address) to the machine check
    extended save area. In order to save some space the save area was put into
    an unused area of the second prefix page.
    When validating vector register contents the code uses the absolute address
    of the extended save area, which is wrong. Due to prefixing the vector
    instructions will then access contents using absolute addresses instead
    of real addresses, where the machine stored the contents.

    If the above would work there is still the problem that register validition
    would only happen if user space uses vector registers. If kernel space uses
    them also, this may also lead to vector register content corruption:
    if the kernel makes use of vector instructions, but the current running
    user space context does not, the machine check handler will validate
    floating point registers instead of vector registers.
    Given the fact that writing to a floating point register may change the
    upper halve of the corresponding vector register, we also experience vector
    register corruption in this case.

    Fix all of these issues, and always validate vector registers on each
    machine check, if the machine has the vector facility installed and the
    extended save area is defined.

    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Greg Kroah-Hartman

    Heiko Carstens
     
  • commit f9c87a6f46d508eae0d9ae640be98d50f237f827 upstream.

    If the kernel is compiled with gcc 5.1 and the XZ compression option
    the decompress_kernel function calls _sclp_print_early in 64-bit mode
    while the content of the upper register half of %r6 is non-zero.
    This causes a specification exception on the servc instruction in
    _sclp_servc.

    The _sclp_print_early function saves and restores the upper registers
    halves but it fails to clear them for the 31-bit code of the mini sclp
    driver.

    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Greg Kroah-Hartman

    Martin Schwidefsky
     
  • commit e47994dd44bcb4a77b4152bd0eada585934703c0 upstream.

    The sfpc inline assembly within execve_tail() may incorrectly set bits
    28-31 of the sfpc instruction to a value which is not zero.
    These bits however are currently unused and therefore should be zero
    so we won't get surprised if these bits will be used in the future.

    Therefore remove the second operand from the inline assembly.

    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Greg Kroah-Hartman

    Heiko Carstens
     

22 Jul, 2015

1 commit

  • commit f9bb48825a6b5d02f4cabcc78967c75db903dcdc upstream.

    This allows for better documentation in the code and
    it allows for a simpler and fully correct version of
    fs_fully_visible to be written.

    The mount points converted and their filesystems are:
    /sys/hypervisor/s390/ s390_hypfs
    /sys/kernel/config/ configfs
    /sys/kernel/debug/ debugfs
    /sys/firmware/efi/efivars/ efivarfs
    /sys/fs/fuse/connections/ fusectl
    /sys/fs/pstore/ pstore
    /sys/kernel/tracing/ tracefs
    /sys/fs/cgroup/ cgroup
    /sys/kernel/security/ securityfs
    /sys/fs/selinux/ selinuxfs
    /sys/fs/smackfs/ smackfs

    Acked-by: Greg Kroah-Hartman
    Signed-off-by: "Eric W. Biederman"
    Signed-off-by: Greg Kroah-Hartman

    Eric W. Biederman
     

11 Jul, 2015

4 commits

  • commit 3c8e5105e759e7b2d88ea8a85b1285e535bc7500 upstream.

    The REGSET_VX_LOW ELF notes should contain the lower 64 bit halfes of the
    first sixteen 128 bit vector registers. Unfortunately currently we copy
    the upper halfes.

    Fix this and correctly copy the lower halfes.

    Fixes: a62bc0739253 ("s390/kdump: add support for vector extension")
    Signed-off-by: Michael Holzheu
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Greg Kroah-Hartman

    Michael Holzheu
     
  • commit b035b60ded132592055c0f9bd1cc280259c7de4b upstream.

    Currently all backward jumps crash for JITed s390x eBPF programs
    with an illegal instruction program check and kernel panic. Because
    for negative values the opcode of the jump instruction is overriden
    by the negative branch offset an illegal instruction is generated
    by the JIT:

    000003ff802da378: c01100000002 lgfi %r1,2
    000003ff802da37e: fffffff52065 unknown
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Greg Kroah-Hartman

    Michael Holzheu
     
  • commit f2ae45edbca7ba5324eef01719ede0151dc5cead upstream.

    commit 6d3da24141 ("KVM: s390: deliver floating interrupts in order
    of priority") introduced a regression for the reset handling.

    We don't clear the bitmap of pending floating interrupts
    and interrupt parameters. This could result in stale interrupts
    even after a reset. Let's fix this by clearing the pending bitmap
    and the parameters for service and machine check interrupts.

    Signed-off-by: Jens Freimann
    Signed-off-by: Christian Borntraeger
    Signed-off-by: Paolo Bonzini
    Signed-off-by: Greg Kroah-Hartman

    Jens Freimann
     
  • commit b938eacea0b6881f2116a061e6da3ec840e75137 upstream.

    Commit ea5f49692575 ("KVM: s390: only one external call may be pending
    at a time") introduced a bug on machines that don't have SIGP
    interpretation facility installed.
    The injection of an external call will now always fail with -EBUSY
    (if none is already pending).

    This leads to the following symptoms:
    - An external call will be injected but with the wrong "src cpu id",
    as this id will not be remembered.
    - The target vcpu will not be woken up, therefore the guest will hang if
    it cannot deal with unexpected failures of the SIGP EXTERNAL CALL
    instruction.
    - If an external call is already pending, -EBUSY will not be reported.

    Reviewed-by: Christian Borntraeger
    Reviewed-by: Jens Freimann
    Signed-off-by: David Hildenbrand
    Signed-off-by: Christian Borntraeger
    Signed-off-by: Greg Kroah-Hartman

    David Hildenbrand
     

04 Jun, 2015

2 commits

  • Currently the bpf frame pointer is set to the old r15. This is
    wrong because of packed stack. Fix this and adjust the frame pointer
    to respect packed stack. This now generates a prolog like the following:

    3ff8001c3fa: eb67f0480024 stmg %r6,%r7,72(%r15)
    3ff8001c400: ebcff0780024 stmg %r12,%r15,120(%r15)
    3ff8001c406: b904001f lgr %r1,%r15
    Acked-by: Heiko Carstens
    Signed-off-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Michael Holzheu
     
  • On s390x we have to provide 160 bytes stack space before we can call
    the next function. From the 160 bytes that we got from the previous
    function we only use 11 * 8 bytes and have 160 - 11 * 8 bytes left.
    Currently for BPF we allocate additional 160 - 11 * 8 bytes for the
    next function. This is wrong because then the next function only gets:

    (160 - 11 * 8) + (160 - 11 * 8) = 2 * 72 = 144 bytes

    Fix this and allocate enough memory for the next function.

    Fixes: 054623105728 ("s390/bpf: Add s390x eBPF JIT compiler backend")
    Signed-off-by: Michael Holzheu
    Acked-by: Heiko Carstens
    Signed-off-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Michael Holzheu
     

23 May, 2015

1 commit


22 May, 2015

1 commit

  • Multitheaded tests showed that the icv buffer in the current ghash
    implementation is not handled correctly. A move of this working ghash
    buffer value to the descriptor context fixed this. Code is tested and
    verified with an multithreaded application via af_alg interface.

    Cc: stable@vger.kernel.org
    Signed-off-by: Harald Freudenberger
    Signed-off-by: Gerald Schaefer
    Reported-by: Herbert Xu
    Signed-off-by: Herbert Xu

    Harald Freudenberger
     

19 May, 2015

1 commit

  • Git commit 152125b7a882df36a55a8eadbea6d0edf1461ee7
    "s390/mm: implement dirty bits for large segment table entries"
    broke the pmd_pfn function, it changed the return value from
    'unsigned long' to 'int'. This breaks all machine configurations
    with memory above the 8TB line.

    Cc: stable@vger.kernel.org # 3.17+
    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     

13 May, 2015

1 commit

  • The store-clock-fast loop in generate_entropy() mixes (exors)
    only the first 64 bytes of the initial page before doing the
    first SHA256. Fix the loop to mix the store-clock-fast values
    all over the page.

    Signed-off-by: Harald Freudenberger
    Reported-by: David Binderman
    Signed-off-by: Martin Schwidefsky

    Harald Freudenberger
     

30 Apr, 2015

2 commits

  • When compiling the kernel for GCOV (CONFIG_GCOV_KERNEL,-fprofile-arcs),
    gcc allocates a lot of stack space because of the large switch statement
    in bpf_jit_insn().

    This leads to the following compile warning:

    arch/s390/net/bpf_jit_comp.c: In function 'bpf_jit_prog':
    arch/s390/net/bpf_jit_comp.c:1144:1: warning: frame size of
    function 'bpf_jit_prog' is 12592 bytes which is more than
    half the stack size. The dynamic check would not be reliable.
    No check emitted for this function.

    arch/s390/net/bpf_jit_comp.c:1144:1: warning: the frame size of 12504
    bytes is larger than 1024 bytes [-Wframe-larger-than=]

    And indead gcc allocates 12592 bytes of stack space:

    # objdump -d arch/s390/net/bpf_jit_comp.o
    ...
    0000000000000c60 :
    c60: eb 6f f0 48 00 24 stmg %r6,%r15,72(%r15)
    c66: b9 04 00 ef lgr %r14,%r15
    c6a: e3 f0 fe d0 fc 71 lay %r15,-12592(%r15)

    As a workaround of that problem we now define bpf_jit_insn() as
    noinline which then reduces the stack space.

    # objdump -d arch/s390/net/bpf_jit_comp.o
    ...
    0000000000000070 :
    70: eb 6f f0 48 00 24 stmg %r6,%r15,72(%r15)
    76: c0 d0 00 00 00 00 larl %r13,76
    7c: a7 f1 3f 80 tmll %r15,16256
    80: b9 04 00 ef lgr %r14,%r15
    84: e3 f0 ff a0 ff 71 lay %r15,-96(%r15)

    Signed-off-by: Michael Holzheu
    Signed-off-by: Martin Schwidefsky

    Michael Holzheu
     
  • The s390x ALU64_DIV/MOD has been implemented according to the eBPF
    interpreter specification that used do_div(). This function does a 64-bit
    by 32-bit divide. It turned out that this was wrong and now the interpreter
    uses div64_u64_rem() for full 64-bit division.

    So fix this and use full 64-bit division in the s390x eBPF backend code.

    Signed-off-by: Michael Holzheu
    Signed-off-by: Martin Schwidefsky

    Michael Holzheu
     

29 Apr, 2015

1 commit

  • Pull s390 updates from Martin Schwidefsky:
    "One additional new feature for 4.1, a new PRNG based on SHA-512 for
    the zcrypt driver.

    Two memory management related changes, the page table reallocation for
    KVM is removed, and with file ptes gone the encoding of page table
    entries is improved.

    And three bug fixes"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
    s390/zcrypt: Introduce new SHA-512 based Pseudo Random Generator.
    s390/mm: change swap pte encoding and pgtable cleanup
    s390/mm: correct transfer of dirty & young bits in __pmd_to_pte
    s390/bpf: add dependency to z196 features
    s390/3215: free memory in error path
    s390/kvm: remove delayed reallocation of page tables for KVM
    kexec: allocate the kexec control page with KEXEC_CONTROL_MEMORY_GFP

    Linus Torvalds
     

27 Apr, 2015

2 commits

  • Pull fourth vfs update from Al Viro:
    "d_inode() annotations from David Howells (sat in for-next since before
    the beginning of merge window) + four assorted fixes"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    RCU pathwalk breakage when running into a symlink overmounting something
    fix I_DIO_WAKEUP definition
    direct-io: only inc/dec inode->i_dio_count for file systems
    fs/9p: fix readdir()
    VFS: assorted d_backing_inode() annotations
    VFS: fs/inode.c helpers: d_inode() annotations
    VFS: fs/cachefiles: d_backing_inode() annotations
    VFS: fs library helpers: d_inode() annotations
    VFS: assorted weird filesystems: d_inode() annotations
    VFS: normal filesystems (and lustre): d_inode() annotations
    VFS: security/: d_inode() annotations
    VFS: security/: d_backing_inode() annotations
    VFS: net/: d_inode() annotations
    VFS: net/unix: d_backing_inode() annotations
    VFS: kernel/: d_inode() annotations
    VFS: audit: d_backing_inode() annotations
    VFS: Fix up some ->d_inode accesses in the chelsio driver
    VFS: Cachefiles should perform fs modifications on the top layer only
    VFS: AF_UNIX sockets should call mknod on the top layer only

    Linus Torvalds
     
  • Pull second batch of KVM changes from Paolo Bonzini:
    "This mostly includes the PPC changes for 4.1, which this time cover
    Book3S HV only (debugging aids, minor performance improvements and
    some cleanups). But there are also bug fixes and small cleanups for
    ARM, x86 and s390.

    The task_migration_notifier revert and real fix is still pending
    review, but I'll send it as soon as possible after -rc1"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (29 commits)
    KVM: arm/arm64: check IRQ number on userland injection
    KVM: arm: irqfd: fix value returned by kvm_irq_map_gsi
    KVM: VMX: Preserve host CR4.MCE value while in guest mode.
    KVM: PPC: Book3S HV: Use msgsnd for signalling threads on POWER8
    KVM: PPC: Book3S HV: Translate kvmhv_commence_exit to C
    KVM: PPC: Book3S HV: Streamline guest entry and exit
    KVM: PPC: Book3S HV: Use bitmap of active threads rather than count
    KVM: PPC: Book3S HV: Use decrementer to wake napping threads
    KVM: PPC: Book3S HV: Don't wake thread with no vcpu on guest IPI
    KVM: PPC: Book3S HV: Get rid of vcore nap_count and n_woken
    KVM: PPC: Book3S HV: Move vcore preemption point up into kvmppc_run_vcpu
    KVM: PPC: Book3S HV: Minor cleanups
    KVM: PPC: Book3S HV: Simplify handling of VCPUs that need a VPA update
    KVM: PPC: Book3S HV: Accumulate timing information for real-mode code
    KVM: PPC: Book3S HV: Create debugfs file for each guest's HPT
    KVM: PPC: Book3S HV: Add ICP real mode counters
    KVM: PPC: Book3S HV: Move virtual mode ICP functions to real-mode
    KVM: PPC: Book3S HV: Convert ICS mutex lock to spin lock
    KVM: PPC: Book3S HV: Add guest->host real mode completion counters
    KVM: PPC: Book3S HV: Add helpers for lock/unlock hpte
    ...

    Linus Torvalds
     

23 Apr, 2015

6 commits


21 Apr, 2015

1 commit

  • Pull more s390 updates from Martin Schwidefsky:
    "The big thing in this second merge for s390 is the new eBPF JIT from
    Michael which replaces the old 32-bit backend.

    The remaining commits are bug fixes"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
    s390/pci: add locking for fmb access
    s390/pci: extract software counters from fmb
    s390/dasd: Fix unresumed device after suspend/resume having no paths
    s390/dasd: fix unresumed device after suspend/resume
    s390/dasd: fix inability to set a DASD device offline
    s390/mm: Fix memory hotplug for unaligned standby memory
    s390/bpf: Add s390x eBPF JIT compiler backend
    s390: Use bool function return values of true/false not 1/0

    Linus Torvalds
     

16 Apr, 2015

4 commits

  • Merge second patchbomb from Andrew Morton:

    - the rest of MM

    - various misc bits

    - add ability to run /sbin/reboot at reboot time

    - printk/vsprintf changes

    - fiddle with seq_printf() return value

    * akpm: (114 commits)
    parisc: remove use of seq_printf return value
    lru_cache: remove use of seq_printf return value
    tracing: remove use of seq_printf return value
    cgroup: remove use of seq_printf return value
    proc: remove use of seq_printf return value
    s390: remove use of seq_printf return value
    cris fasttimer: remove use of seq_printf return value
    cris: remove use of seq_printf return value
    openrisc: remove use of seq_printf return value
    ARM: plat-pxa: remove use of seq_printf return value
    nios2: cpuinfo: remove use of seq_printf return value
    microblaze: mb: remove use of seq_printf return value
    ipc: remove use of seq_printf return value
    rtc: remove use of seq_printf return value
    power: wakeup: remove use of seq_printf return value
    x86: mtrr: if: remove use of seq_printf return value
    linux/bitmap.h: improve BITMAP_{LAST,FIRST}_WORD_MASK
    MAINTAINERS: CREDITS: remove Stefano Brivio from B43
    .mailmap: add Ricardo Ribalda
    CREDITS: add Ricardo Ribalda Delgado
    ...

    Linus Torvalds
     
  • The seq_printf return value, because it's frequently misused,
    will eventually be converted to void.

    See: commit 1f33c41c03da ("seq_file: Rename seq_overflow() to
    seq_has_overflowed() and make public")

    Signed-off-by: Joe Perches
    Acked-by: Sebastian Ott
    Cc: Gerald Schaefer
    Cc: Peter Oberparleiter
    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • There are a lot of embedded systems that run most or all of their
    functionality in init, running as root:root. For these systems,
    supporting multiple users is not necessary.

    This patch adds a new symbol, CONFIG_MULTIUSER, that makes support for
    non-root users, non-root groups, and capabilities optional. It is enabled
    under CONFIG_EXPERT menu.

    When this symbol is not defined, UID and GID are zero in any possible case
    and processes always have all capabilities.

    The following syscalls are compiled out: setuid, setregid, setgid,
    setreuid, setresuid, getresuid, setresgid, getresgid, setgroups,
    getgroups, setfsuid, setfsgid, capget, capset.

    Also, groups.c is compiled out completely.

    In kernel/capability.c, capable function was moved in order to avoid
    adding two ifdef blocks.

    This change saves about 25 KB on a defconfig build. The most minimal
    kernels have total text sizes in the high hundreds of kB rather than
    low MB. (The 25k goes down a bit with allnoconfig, but not that much.

    The kernel was booted in Qemu. All the common functionalities work.
    Adding users/groups is not possible, failing with -ENOSYS.

    Bloat-o-meter output:
    add/remove: 7/87 grow/shrink: 19/397 up/down: 1675/-26325 (-24650)

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Iulia Manda
    Reviewed-by: Josh Triplett
    Acked-by: Geert Uytterhoeven
    Tested-by: Paul E. McKenney
    Reviewed-by: Paul E. McKenney
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Iulia Manda
     
  • Pull exec domain removal from Richard Weinberger:
    "This series removes execution domain support from Linux.

    The idea behind exec domains was to support different ABIs. The
    feature was never complete nor stable. Let's rip it out and make the
    kernel signal handling code less complicated"

    * 'exec_domain_rip_v2' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/misc: (27 commits)
    arm64: Removed unused variable
    sparc: Fix execution domain removal
    Remove rest of exec domains.
    arch: Remove exec_domain from remaining archs
    arc: Remove signal translation and exec_domain
    xtensa: Remove signal translation and exec_domain
    xtensa: Autogenerate offsets in struct thread_info
    x86: Remove signal translation and exec_domain
    unicore32: Remove signal translation and exec_domain
    um: Remove signal translation and exec_domain
    tile: Remove signal translation and exec_domain
    sparc: Remove signal translation and exec_domain
    sh: Remove signal translation and exec_domain
    s390: Remove signal translation and exec_domain
    mn10300: Remove signal translation and exec_domain
    microblaze: Remove signal translation and exec_domain
    m68k: Remove signal translation and exec_domain
    m32r: Remove signal translation and exec_domain
    m32r: Autogenerate offsets in struct thread_info
    frv: Remove signal translation and exec_domain
    ...

    Linus Torvalds