17 Jul, 2017

5 commits

  • Firstly by applying the following with coccinelle's spatch:

    @@ expression SB; @@
    -SB->s_flags & MS_RDONLY
    +sb_rdonly(SB)

    to effect the conversion to sb_rdonly(sb), then by applying:

    @@ expression A, SB; @@
    (
    -(!sb_rdonly(SB)) && A
    +!sb_rdonly(SB) && A
    |
    -A != (sb_rdonly(SB))
    +A != sb_rdonly(SB)
    |
    -A == (sb_rdonly(SB))
    +A == sb_rdonly(SB)
    |
    -!(sb_rdonly(SB))
    +!sb_rdonly(SB)
    |
    -A && (sb_rdonly(SB))
    +A && sb_rdonly(SB)
    |
    -A || (sb_rdonly(SB))
    +A || sb_rdonly(SB)
    |
    -(sb_rdonly(SB)) != A
    +sb_rdonly(SB) != A
    |
    -(sb_rdonly(SB)) == A
    +sb_rdonly(SB) == A
    |
    -(sb_rdonly(SB)) && A
    +sb_rdonly(SB) && A
    |
    -(sb_rdonly(SB)) || A
    +sb_rdonly(SB) || A
    )

    @@ expression A, B, SB; @@
    (
    -(sb_rdonly(SB)) ? 1 : 0
    +sb_rdonly(SB)
    |
    -(sb_rdonly(SB)) ? A : B
    +sb_rdonly(SB) ? A : B
    )

    to remove left over excess bracketage and finally by applying:

    @@ expression A, SB; @@
    (
    -(A & MS_RDONLY) != sb_rdonly(SB)
    +(bool)(A & MS_RDONLY) != sb_rdonly(SB)
    |
    -(A & MS_RDONLY) == sb_rdonly(SB)
    +(bool)(A & MS_RDONLY) == sb_rdonly(SB)
    )

    to make comparisons against the result of sb_rdonly() (which is a bool)
    work correctly.

    Signed-off-by: David Howells

    David Howells
     
  • Add an sb_rdonly() function to query the MS_RDONLY flag on sb->s_flags
    preparatory to providing an SB_RDONLY flag.

    Signed-off-by: David Howells

    David Howells
     
  • In file included from include/linux/flat.h:13:0,
    from fs/binfmt_flat.c:36:
    arch/h8300/include/asm/flat.h: In function 'flat_get_addr_from_rp':
    arch/h8300/include/asm/flat.h:28:3: error: expected ')' before 'val'
    val &= 0x00ffffff;
    ^
    arch/h8300/include/asm/flat.h:31:1: error: expected expression before '}' token
    }
    ^
    In file included from include/linux/flat.h:13:0,
    from fs/binfmt_flat.c:36:
    arch/h8300/include/asm/flat.h:26:6: warning: unused variable 'val' [-Wunused-variable]
    u32 val = get_unaligned((__force u32 *)rp);
    ^
    In file included from include/linux/flat.h:13:0,
    from fs/binfmt_flat.c:36:
    arch/h8300/include/asm/flat.h:31:1: warning: no return statement in function returning non-void [-Wreturn-type]
    }
    ^

    Reported-by: kbuild test robot
    Fixes: 468138d78510688f ("binfmt_flat: flat_{get,put}_addr_from_rp() should be able to fail")
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Several variables had their types changed from unsigned long to u32, but
    the arch-specific implementations of flat_set_persistent() weren't
    updated, leading to compiler warnings on blackfin and m68k:

    fs/binfmt_flat.c: In function ‘load_flat_file’:
    fs/binfmt_flat.c:799: warning: passing argument 2 of ‘flat_set_persistent’ from incompatible pointer type

    Fixes: 468138d78510688f ("binfmt_flat: flat_{get,put}_addr_from_rp() should be able to fail")
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Several variables had their types changed from unsigned long to u32, but
    the printk()-style format to print them wasn't updated, leading to:

    fs/binfmt_flat.c: In function ‘load_flat_file’:
    fs/binfmt_flat.c:577: warning: format ‘%ld’ expects type ‘long int’, but argument 3 has type ‘u32’

    Fixes: 468138d78510688f ("binfmt_flat: flat_{get,put}_addr_from_rp() should be able to fail")
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     

16 Jul, 2017

13 commits

  • Linus Torvalds
     
  • Pull documentation format standardization from Jonathan Corbet:
    "This series converts a number of top-level documents to the RST format
    without incorporating them into the Sphinx tree. The hope is to bring
    some uniformity to kernel documentation and, perhaps more importantly,
    have our existing docs serve as an example of the desired formatting
    for those that will be added later.

    Mauro has gone through and fixed up a lot of top-level documentation
    files to make them conform to the RST format, but without moving or
    renaming them in any way. This will help when we incorporate the ones
    we want to keep into the Sphinx doctree, but the real purpose is to
    bring a bit of uniformity to our documentation and let the top-level
    docs serve as examples for those writing new ones"

    * tag 'standardize-docs' of git://git.lwn.net/linux: (84 commits)
    docs: kprobes.txt: Fix whitespacing
    tee.txt: standardize document format
    cgroup-v2.txt: standardize document format
    dell_rbu.txt: standardize document format
    zorro.txt: standardize document format
    xz.txt: standardize document format
    xillybus.txt: standardize document format
    vfio.txt: standardize document format
    vfio-mediated-device.txt: standardize document format
    unaligned-memory-access.txt: standardize document format
    this_cpu_ops.txt: standardize document format
    svga.txt: standardize document format
    static-keys.txt: standardize document format
    smsc_ece1099.txt: standardize document format
    SM501.txt: standardize document format
    siphash.txt: standardize document format
    sgi-ioc4.txt: standardize document format
    SAK.txt: standardize document format
    rpmsg.txt: standardize document format
    robust-futexes.txt: standardize document format
    ...

    Linus Torvalds
     
  • Pull random updates from Ted Ts'o:
    "Add wait_for_random_bytes() and get_random_*_wait() functions so that
    callers can more safely get random bytes if they can block until the
    CRNG is initialized.

    Also print a warning if get_random_*() is called before the CRNG is
    initialized. By default, only one single-line warning will be printed
    per boot. If CONFIG_WARN_ALL_UNSEEDED_RANDOM is defined, then a
    warning will be printed for each function which tries to get random
    bytes before the CRNG is initialized. This can get spammy for certain
    architecture types, so it is not enabled by default"

    * tag 'random_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/random:
    random: reorder READ_ONCE() in get_random_uXX
    random: suppress spammy warnings about unseeded randomness
    random: warn when kernel uses unseeded randomness
    net/route: use get_random_int for random counter
    net/neighbor: use get_random_u32 for 32-bit hash random
    rhashtable: use get_random_u32 for hash_rnd
    ceph: ensure RNG is seeded before using
    iscsi: ensure RNG is seeded before use
    cifs: use get_random_u32 for 32-bit lock random
    random: add get_random_{bytes,u32,u64,int,long,once}_wait family
    random: add wait_for_random_bytes() API

    Linus Torvalds
     
  • Pull ->s_options removal from Al Viro:
    "Preparations for fsmount/fsopen stuff (coming next cycle). Everything
    gets moved to explicit ->show_options(), killing ->s_options off +
    some cosmetic bits around fs/namespace.c and friends. Basically, the
    stuff needed to work with fsmount series with minimum of conflicts
    with other work.

    It's not strictly required for this merge window, but it would reduce
    the PITA during the coming cycle, so it would be nice to have those
    bits and pieces out of the way"

    * 'work.mount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    isofs: Fix isofs_show_options()
    VFS: Kill off s_options and helpers
    orangefs: Implement show_options
    9p: Implement show_options
    isofs: Implement show_options
    afs: Implement show_options
    affs: Implement show_options
    befs: Implement show_options
    spufs: Implement show_options
    bpf: Implement show_options
    ramfs: Implement show_options
    pstore: Implement show_options
    omfs: Implement show_options
    hugetlbfs: Implement show_options
    VFS: Don't use save/replace_mount_options if not using generic_show_options
    VFS: Provide empty name qstr
    VFS: Make get_filesystem() return the affected filesystem
    VFS: Clean up whitespace in fs/namespace.c and fs/super.c
    Provide a function to create a NUL-terminated string from unterminated data

    Linus Torvalds
     
  • Pull more __copy_.._user elimination from Al Viro.

    * 'work.__copy_to_user' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    drm_dp_aux_dev: switch to read_iter/write_iter

    Linus Torvalds
     
  • Pull uacess-unaligned removal from Al Viro:
    "That stuff had just one user, and an exotic one, at that - binfmt_flat
    on arm and m68k"

    * 'work.uaccess-unaligned' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    kill {__,}{get,put}_user_unaligned()
    binfmt_flat: flat_{get,put}_addr_from_rp() should be able to fail

    Linus Torvalds
     
  • Pull network field-by-field copy-in updates from Al Viro:
    "This part of the misc compat queue was held back for review from
    networking folks and since davem has jus ACKed those..."

    * 'misc.compat' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    get_compat_bpf_fprog(): don't copyin field-by-field
    get_compat_msghdr(): get rid of field-by-field copyin
    copy_msghdr_from_user(): get rid of field-by-field copyin

    Linus Torvalds
     
  • Pull MIPS updates from Ralf Baechle:
    "Boston platform support:
    - Document DT bindings
    - Add CLK driver for board clocks

    CM:
    - Avoid per-core locking with CM3 & higher
    - WARN on attempt to lock invalid VP, not BUG

    CPS:
    - Select CONFIG_SYS_SUPPORTS_SCHED_SMT for MIPSr6
    - Prevent multi-core with dcache aliasing
    - Handle cores not powering down more gracefully
    - Handle spurious VP starts more gracefully

    DSP:
    - Add lwx & lhx missaligned access support

    eBPF:
    - Add MIPS support along with many supporting change to add the
    required infrastructure

    Generic arch code:
    - Misc sysmips MIPS_ATOMIC_SET fixes
    - Drop duplicate HAVE_SYSCALL_TRACEPOINTS
    - Negate error syscall return in trace
    - Correct forced syscall errors
    - Traced negative syscalls should return -ENOSYS
    - Allow samples/bpf/tracex5 to access syscall arguments for sane
    traces
    - Cleanup from old Kconfig options in defconfigs
    - Fix PREF instruction usage by memcpy for MIPS R6
    - Fix various special cases in the FPU eulation
    - Fix some special cases in MIPS16e2 support
    - Fix MIPS I ISA /proc/cpuinfo reporting
    - Sort MIPS Kconfig alphabetically
    - Fix minimum alignment requirement of IRQ stack as required by
    ABI / GCC
    - Fix special cases in the module loader
    - Perform post-DMA cache flushes on systems with MAARs
    - Probe the I6500 CPU
    - Cleanup cmpxchg and add support for 1 and 2 byte operations
    - Use queued read/write locks (qrwlock)
    - Use queued spinlocks (qspinlock)
    - Add CPU shared FTLB feature detection
    - Handle tlbex-tlbp race condition
    - Allow storing pgd in C0_CONTEXT for MIPSr6
    - Use current_cpu_type() in m4kc_tlbp_war()
    - Support Boston in the generic kernel

    Generic platform:
    - yamon-dt: Pull YAMON DT shim code out of SEAD-3 board
    - yamon-dt: Support > 256MB of RAM
    - yamon-dt: Use serial* rather than uart* aliases
    - Abstract FDT fixup application
    - Set RTC_ALWAYS_BCD to 0
    - Add a MAINTAINERS entry

    core kernel:
    - qspinlock.c: include linux/prefetch.h

    Loongson 3:
    - Add support

    Perf:
    - Add I6500 support

    SEAD-3:
    - Remove GIC timer from DT
    - Set interrupt-parent per-device, not at root node
    - Fix GIC interrupt specifiers

    SMP:
    - Skip IPI setup if we only have a single CPU

    VDSO:
    - Make comment match reality
    - Improvements to time code in VDSO"

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (86 commits)
    locking/qspinlock: Include linux/prefetch.h
    MIPS: Fix MIPS I ISA /proc/cpuinfo reporting
    MIPS: Fix minimum alignment requirement of IRQ stack
    MIPS: generic: Support MIPS Boston development boards
    MIPS: DTS: img: Don't attempt to build-in all .dtb files
    clk: boston: Add a driver for MIPS Boston board clocks
    dt-bindings: Document img,boston-clock binding
    MIPS: Traced negative syscalls should return -ENOSYS
    MIPS: Correct forced syscall errors
    MIPS: Negate error syscall return in trace
    MIPS: Drop duplicate HAVE_SYSCALL_TRACEPOINTS select
    MIPS16e2: Provide feature overrides for non-MIPS16 systems
    MIPS: MIPS16e2: Report ASE presence in /proc/cpuinfo
    MIPS: MIPS16e2: Subdecode extended LWSP/SWSP instructions
    MIPS: MIPS16e2: Identify ASE presence
    MIPS: VDSO: Fix a mismatch between comment and preprocessor constant
    MIPS: VDSO: Add implementation of gettimeofday() fallback
    MIPS: VDSO: Add implementation of clock_gettime() fallback
    MIPS: VDSO: Fix conversions in do_monotonic()/do_monotonic_coarse()
    MIPS: Use current_cpu_type() in m4kc_tlbp_war()
    ...

    Linus Torvalds
     
  • Pull UML updates from Richard Weinberger:
    "Mostly fixes for UML:

    - First round of fixes for PTRACE_GETRESET/SETREGSET

    - A printf vs printk cleanup

    - Minor improvements"

    * 'for-linus-4.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml:
    um: Correctly check for PTRACE_GETRESET/SETREGSET
    um: v2: Use generic NOTES macro
    um: Add kerneldoc for userspace_tramp() and start_userspace()
    um: Add kerneldoc for segv_handler
    um: stub-data.h: remove superfluous include
    um: userspace - be more verbose in ptrace set regs error
    um: add dummy ioremap and iounmap functions
    um: Allow building and running on older hosts
    um: Avoid longjmp/setjmp symbol clashes with libpthread.a
    um: console: Ignore console= option
    um: Use os_warn to print out pre-boot warning/error messages
    um: Add os_warn() for pre-boot warning/error messages
    um: Use os_info for the messages on normal path
    um: Add os_info() for pre-boot information messages
    um: Use printk instead of printf in make_uml_dir

    Linus Torvalds
     
  • Pull UBIFS updates from Richard Weinberger:

    - Updates and fixes for the file encryption mode

    - Minor improvements

    - Random fixes

    * tag 'upstream-4.13-rc1' of git://git.infradead.org/linux-ubifs:
    ubifs: Set double hash cookie also for RENAME_EXCHANGE
    ubifs: Massage assert in ubifs_xattr_set() wrt. init_xattrs
    ubifs: Don't leak kernel memory to the MTD
    ubifs: Change gfp flags in page allocation for bulk read
    ubifs: Fix oops when remounting with no_bulk_read.
    ubifs: Fail commit if TNC is obviously inconsistent
    ubifs: allow userspace to map mounts to volumes
    ubifs: Wire-up statx() support
    ubifs: Remove dead code from ubifs_get_link()
    ubifs: Massage debug prints wrt. fscrypt
    ubifs: Add assert to dent_key_init()
    ubifs: Fix unlink code wrt. double hash lookups
    ubifs: Fix data node size for truncating uncompressed nodes
    ubifs: Don't encrypt special files on creation
    ubifs: Fix memory leak in RENAME_WHITEOUT error path in do_rename
    ubifs: Fix inode data budget in ubifs_mknod
    ubifs: Correctly evict xattr inodes
    ubifs: Unexport ubifs_inode_slab
    ubifs: don't bother checking for encryption key in ->mmap()
    ubifs: require key for truncate(2) of encrypted file

    Linus Torvalds
     
  • Pull more KVM updates from Radim Krčmář:
    "Second batch of KVM updates for v4.13

    Common:
    - add uevents for VM creation/destruction
    - annotate and properly access RCU-protected objects

    s390:
    - rename IOCTL added in the first v4.13 merge

    x86:
    - emulate VMLOAD VMSAVE feature in SVM
    - support paravirtual asynchronous page fault while nested
    - add Hyper-V userspace interfaces for better migration
    - improve master clock corner cases
    - extend internal error reporting after EPT misconfig
    - correct single-stepping of emulated instructions in SVM
    - handle MCE during VM entry
    - fix nVMX VM entry checks and nVMX VMCS shadowing"

    * tag 'kvm-4.13-2' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (28 commits)
    kvm: x86: hyperv: make VP_INDEX managed by userspace
    KVM: async_pf: Let guest support delivery of async_pf from guest mode
    KVM: async_pf: Force a nested vmexit if the injected #PF is async_pf
    KVM: async_pf: Add L1 guest async_pf #PF vmexit handler
    KVM: x86: Simplify kvm_x86_ops->queue_exception parameter list
    kvm: x86: hyperv: add KVM_CAP_HYPERV_SYNIC2
    KVM: x86: make backwards_tsc_observed a per-VM variable
    KVM: trigger uevents when creating or destroying a VM
    KVM: SVM: Enable Virtual VMLOAD VMSAVE feature
    KVM: SVM: Add Virtual VMLOAD VMSAVE feature definition
    KVM: SVM: Rename lbr_ctl field in the vmcb control area
    KVM: SVM: Prepare for new bit definition in lbr_ctl
    KVM: SVM: handle singlestep exception when skipping emulated instructions
    KVM: x86: take slots_lock in kvm_free_pit
    KVM: s390: Fix KVM_S390_GET_CMMA_BITS ioctl definition
    kvm: vmx: Properly handle machine check during VM-entry
    KVM: x86: update master clock before computing kvmclock_offset
    kvm: nVMX: Shadow "high" parts of shadowed 64-bit VMCS fields
    kvm: nVMX: Fix nested_vmx_check_msr_bitmap_controls
    kvm: nVMX: Validate the I/O bitmaps on nested VM-entry
    ...

    Linus Torvalds
     
  • Avoid the READ_ONCE in commit 4a072c71f49b ("random: silence compiler
    warnings and fix race") if we can leave the function after
    arch_get_random_XXX().

    Cc: Jason A. Donenfeld
    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Theodore Ts'o

    Sebastian Andrzej Siewior
     
  • Unfortunately, on some models of some architectures getting a fully
    seeded CRNG is extremely difficult, and so this can result in dmesg
    getting spammed for a surprisingly long time. This is really bad from
    a security perspective, and so architecture maintainers really need to
    do what they can to get the CRNG seeded sooner after the system is
    booted. However, users can't do anything actionble to address this,
    and spamming the kernel messages log will only just annoy people.

    For developers who want to work on improving this situation,
    CONFIG_WARN_UNSEEDED_RANDOM has been renamed to
    CONFIG_WARN_ALL_UNSEEDED_RANDOM. By default the kernel will always
    print the first use of unseeded randomness. This way, hopefully the
    security obsessed will be happy that there is _some_ indication when
    the kernel boots there may be a potential issue with that architecture
    or subarchitecture. To see all uses of unseeded randomness,
    developers can enable CONFIG_WARN_ALL_UNSEEDED_RANDOM.

    Signed-off-by: Theodore Ts'o

    Theodore Ts'o
     

15 Jul, 2017

22 commits

  • Pull XFS fixes from Darrick Wong:
    "Largely debugging and regression fixes.

    - Add some locking assertions for the _ilock helpers.

    - Revert the XFS_QMOPT_NOLOCK patch; after discussion with hch the
    online fsck patch that would have needed it has been redesigned and
    no longer needs it.

    - Fix behavioral regression of SEEK_HOLE/DATA with negative offsets
    to match 4.12-era XFS behavior"

    * tag 'xfs-4.13-merge-6' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
    vfs: in iomap seek_{hole,data}, return -ENXIO for negative offsets
    Revert "xfs: grab dquots without taking the ilock"
    xfs: assert locking precondition in xfs_readlink_bmap_ilocked
    xfs: assert locking precondіtion in xfs_attr_list_int_ilocked
    xfs: fixup xfs_attr_get_ilocked

    Linus Torvalds
     
  • Pull btrfs fixes from David Sterba:
    "We've identified and fixed a silent corruption (introduced by code in
    the first pull), a fixup after the blk_status_t merge and two fixes to
    incremental send that Filipe has been hunting for some time"

    * 'for-4.13-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
    Btrfs: fix unexpected return value of bio_readpage_error
    btrfs: btrfs_create_repair_bio never fails, skip error handling
    btrfs: cloned bios must not be iterated by bio_for_each_segment_all
    Btrfs: fix write corruption due to bio cloning on raid5/6
    Btrfs: incremental send, fix invalid memory access
    Btrfs: incremental send, fix invalid path for link commands

    Linus Torvalds
     
  • Pull a few more input updates from Dmitry Torokhov:

    - multi-touch handling for Xen

    - fix for long-standing bug causing crashes in i8042 on boot

    - change to gpio_keys to better handle key presses during system state
    transition

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
    Input: i8042 - fix crash at boot time
    Input: gpio_keys - handle the missing key press event in resume phase
    Input: xen-kbdfront - add multi-touch support

    Linus Torvalds
     
  • Pull crypto fixes from Herbert Xu:

    - fix new compiler warnings in cavium

    - set post-op IV properly in caam (this fixes chaining)

    - fix potential use-after-free in atmel in case of EBUSY

    - fix sleeping in softirq path in chcr

    - disable buggy sha1-avx2 driver (may overread and page fault)

    - fix use-after-free on signals in caam

    * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    crypto: cavium - make several functions static
    crypto: chcr - Avoid algo allocation in softirq.
    crypto: caam - properly set IV after {en,de}crypt
    crypto: atmel - only treat EBUSY as transient if backlog
    crypto: af_alg - Avoid sock_graft call warning
    crypto: caam - fix signals handling
    crypto: sha1-ssse3 - Disable avx2

    Linus Torvalds
     
  • Pull device properties framework fix from Rafael Wysocki:
    "This fixes a problem with bool properties that could be seen as "true"
    when the property was not present at all by adding a special helper
    for bool properties with checks for all of the requisute conditions
    (Sakari Ailus)"

    * tag 'devprop-fix-4.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    device property: Introduce fwnode_call_bool_op() for ops that return bool

    Linus Torvalds
     
  • Pull ACPI fixes from Rafael Wysocki:
    "These fix the return value of an IRQ mapping routine in the ACPI core,
    fix an EC driver issue causing abnormal fan behavior after system
    resume on some systems and add quirks for ACPI device objects that
    need to be treated as "always present" to work around bogus
    implementations of the _STA control method.

    Specifics:

    - Fix the return value of acpi_gsi_to_irq() to make the GSI to IRQ
    mapping work on the Mustang (ARM64) platform (Mark Salter).

    - Fix an EC driver issue that causes fans to behave abnormally after
    system resume on some systems which turns out to be related to
    switching over the EC into the polling mode during the noirq stages
    of system suspend and resume (Lv Zheng).

    - Add quirks for ACPI device objects that need to be treated as
    "always present", because their _STA methods are designed to work
    around Windows driver bugs and return garbage from our perspective
    (Hans de Goede)"

    * tag 'acpi-fixes-4.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    ACPI / x86: Add KIOX000A accelerometer on GPD win to always_present_ids array
    ACPI / x86: Add Dell Venue 11 Pro 7130 touchscreen to always_present_ids
    ACPI / x86: Allow matching always_present_id array entries by DMI
    Revert "ACPI / EC: Enable event freeze mode..." to fix a regression
    ACPI / EC: Drop EC noirq hooks to fix a regression
    ACPI / irq: Fix return code of acpi_gsi_to_irq()

    Linus Torvalds
     
  • Pull power management fixes from Rafael Wysocki:
    "These fix a recently exposed issue in the PCI device wakeup code and
    one older problem related to PCI device wakeup that has been reported
    recently, modify one more piece of computations in intel_pstate to get
    rid of a rounding error, fix a possible race in the schedutil cpufreq
    governor, fix the device PM QoS sysfs interface to correctly handle
    invalid user input, fix return values of two probe routines in devfreq
    drivers and constify an attribute_group structure in devfreq.

    Specifics:

    - Avoid clearing the PCI PME Enable bit for devices as a result of
    config space restoration which confuses AML executed afterward and
    causes wakeup events to be lost on some systems (Rafael Wysocki).

    - Fix the native PCIe PME interrupts handling in the cases when the
    PME IRQ is set up as a system wakeup one so that runtime PM remote
    wakeup works as expected after system resume on systems where that
    happens (Rafael Wysocki).

    - Fix the device PM QoS sysfs interface to handle invalid user input
    correctly instead of using an unititialized variable value as the
    latency tolerance for the device at hand (Dan Carpenter).

    - Get rid of one more rounding error from intel_pstate computations
    (Srinivas Pandruvada).

    - Fix the schedutil cpufreq governor to prevent it from possibly
    accessing unititialized data structures from governor callbacks in
    some cases on systems when multiple CPUs share a single cpufreq
    policy object (Vikram Mulukutla).

    - Fix the return values of probe routines in two devfreq drivers
    (Gustavo Silva).

    - Constify an attribute_group structure in devfreq (Arvind Yadav)"

    * tag 'pm-fixes-4.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    PCI / PM: Fix native PME handling during system suspend/resume
    PCI / PM: Restore PME Enable after config space restoration
    cpufreq: schedutil: Fix sugov_start() versus sugov_update_shared() race
    PM / QoS: return -EINVAL for bogus strings
    cpufreq: intel_pstate: Fix ratio setting for min_perf_pct
    PM / devfreq: constify attribute_group structures.
    PM / devfreq: tegra: fix error return code in tegra_devfreq_probe()
    PM / devfreq: rk3399_dmc: fix error return code in rk3399_dmcfreq_probe()

    Linus Torvalds
     
  • Merge even more updates from Andrew Morton:

    - a few leftovers

    - fault-injector rework

    - add a module loader test driver

    * emailed patches from Andrew Morton :
    kmod: throttle kmod thread limit
    kmod: add test driver to stress test the module loader
    MAINTAINERS: give kmod some maintainer love
    xtensa: use generic fb.h
    fault-inject: add /proc//fail-nth
    fault-inject: simplify access check for fail-nth
    fault-inject: make fail-nth read/write interface symmetric
    fault-inject: parse as natural 1-based value for fail-nth write interface
    fault-inject: automatically detect the number base for fail-nth write interface
    kernel/watchdog.c: use better pr_fmt prefix
    MAINTAINERS: move the befs tree to kernel.org
    lib/atomic64_test.c: add a test that atomic64_inc_not_zero() returns an int
    mm: fix overflow check in expand_upwards()

    Linus Torvalds
     
  • Using strscpy was wrong because FORTIFY_SOURCE is passing the maximum
    possible size of the outermost object, but strscpy defines the count
    parameter as the exact buffer size, so this could copy past the end of
    the source. This would still be wrong with the planned usage of
    __builtin_object_size(p, 1) for intra-object overflow checks since it's
    the maximum possible size of the specified object with no guarantee of
    it being that large.

    Reuse of the fortified functions like this currently makes the runtime
    error reporting less precise but that can be improved later on.

    Noticed by Dave Jones and KASAN.

    Signed-off-by: Daniel Micay
    Acked-by: Kees Cook
    Reported-by: Dave Jones
    Signed-off-by: Linus Torvalds

    Daniel Micay
     
  • Pull arch/tile updates from Chris Metcalf:
    "This adds support for an to help with removing
    __need_xxx #defines from glibc, and removes some dead code in
    arch/tile/mm/init.c"

    * git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
    mm, tile: drop arch_{add,remove}_memory
    tile: prefer to __need_int_reg_t

    Linus Torvalds
     
  • Pull powerpc fixes from Michael Ellerman:
    "Nothing that really stands out, just a bunch of fixes that have come
    in in the last couple of weeks.

    None of these are actually fixes for code that is new in 4.13. It's
    roughly half older bugs, with fixes going to stable, and half
    fixes/updates for Power9.

    Thanks to: Aneesh Kumar K.V, Anton Blanchard, Balbir Singh, Benjamin
    Herrenschmidt, Madhavan Srinivasan, Michael Neuling, Nicholas Piggin,
    Oliver O'Halloran"

    * tag 'powerpc-4.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc/64: Fix atomic64_inc_not_zero() to return an int
    powerpc: Fix emulation of mfocrf in emulate_step()
    powerpc: Fix emulation of mcrf in emulate_step()
    powerpc/perf: Add POWER9 alternate PM_RUN_CYC and PM_RUN_INST_CMPL events
    powerpc/perf: Fix SDAR_MODE value for continous sampling on Power9
    powerpc/asm: Mark cr0 as clobbered in mftb()
    powerpc/powernv: Fix local TLB flush for boot and MCE on POWER9
    powerpc/mm/radix: Synchronize updates to the process table
    powerpc/mm/radix: Properly clear process table entry
    powerpc/powernv: Tell OPAL about our MMU mode on POWER9
    powerpc/kexec: Fix radix to hash kexec due to IAMR/AMOR

    Linus Torvalds
     
  • If we reach the limit of modprobe_limit threads running the next
    request_module() call will fail. The original reason for adding a kill
    was to do away with possible issues with in old circumstances which would
    create a recursive series of request_module() calls.

    We can do better than just be super aggressive and reject calls once we've
    reached the limit by simply making pending callers wait until the
    threshold has been reduced, and then throttling them in, one by one.

    This throttling enables requests over the kmod concurrent limit to be
    processed once a pending request completes. Only the first item queued up
    to wait is woken up. The assumption here is once a task is woken it will
    have no other option to also kick the queue to check if there are more
    pending tasks -- regardless of whether or not it was successful.

    By throttling and processing only max kmod concurrent tasks we ensure we
    avoid unexpected fatal request_module() calls, and we keep memory
    consumption on module loading to a minimum.

    With x86_64 qemu, with 4 cores, 4 GiB of RAM it takes the following run
    time to run both tests:

    time ./kmod.sh -t 0008
    real 0m16.366s
    user 0m0.883s
    sys 0m8.916s

    time ./kmod.sh -t 0009
    real 0m50.803s
    user 0m0.791s
    sys 0m9.852s

    Link: http://lkml.kernel.org/r/20170628223155.26472-4-mcgrof@kernel.org
    Signed-off-by: Luis R. Rodriguez
    Reviewed-by: Petr Mladek
    Cc: Jessica Yu
    Cc: Shuah Khan
    Cc: Rusty Russell
    Cc: Michal Marek
    Cc: Greg Kroah-Hartman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Luis R. Rodriguez
     
  • This adds a new stress test driver for kmod: the kernel module loader.
    The new stress test driver, test_kmod, is only enabled as a module right
    now. It should be possible to load this as built-in and load tests
    early (refer to the force_init_test module parameter), however since a
    lot of test can get a system out of memory fast we leave this disabled
    for now.

    Using a system with 1024 MiB of RAM can *easily* get your kernel OOM
    fast with this test driver.

    The test_kmod driver exposes API knobs for us to fine tune simple
    request_module() and get_fs_type() calls. Since these API calls only
    allow each one parameter a test driver for these is rather simple.
    Other factors that can help out test driver though are the number of
    calls we issue and knowing current limitations of each. This exposes
    configuration as much as possible through userspace to be able to build
    tests directly from userspace.

    Since it allows multiple misc devices its will eventually (once we add a
    knob to let us create new devices at will) also be possible to perform
    more tests in parallel, provided you have enough memory.

    We only enable tests we know work as of right now.

    Demo screenshots:

    # tools/testing/selftests/kmod/kmod.sh
    kmod_test_0001_driver: OK! - loading kmod test
    kmod_test_0001_driver: OK! - Return value: 256 (MODULE_NOT_FOUND), expected MODULE_NOT_FOUND
    kmod_test_0001_fs: OK! - loading kmod test
    kmod_test_0001_fs: OK! - Return value: -22 (-EINVAL), expected -EINVAL
    kmod_test_0002_driver: OK! - loading kmod test
    kmod_test_0002_driver: OK! - Return value: 256 (MODULE_NOT_FOUND), expected MODULE_NOT_FOUND
    kmod_test_0002_fs: OK! - loading kmod test
    kmod_test_0002_fs: OK! - Return value: -22 (-EINVAL), expected -EINVAL
    kmod_test_0003: OK! - loading kmod test
    kmod_test_0003: OK! - Return value: 0 (SUCCESS), expected SUCCESS
    kmod_test_0004: OK! - loading kmod test
    kmod_test_0004: OK! - Return value: 0 (SUCCESS), expected SUCCESS
    kmod_test_0005: OK! - loading kmod test
    kmod_test_0005: OK! - Return value: 0 (SUCCESS), expected SUCCESS
    kmod_test_0006: OK! - loading kmod test
    kmod_test_0006: OK! - Return value: 0 (SUCCESS), expected SUCCESS
    kmod_test_0005: OK! - loading kmod test
    kmod_test_0005: OK! - Return value: 0 (SUCCESS), expected SUCCESS
    kmod_test_0006: OK! - loading kmod test
    kmod_test_0006: OK! - Return value: 0 (SUCCESS), expected SUCCESS
    XXX: add test restult for 0007
    Test completed

    You can also request for specific tests:

    # tools/testing/selftests/kmod/kmod.sh -t 0001
    kmod_test_0001_driver: OK! - loading kmod test
    kmod_test_0001_driver: OK! - Return value: 256 (MODULE_NOT_FOUND), expected MODULE_NOT_FOUND
    kmod_test_0001_fs: OK! - loading kmod test
    kmod_test_0001_fs: OK! - Return value: -22 (-EINVAL), expected -EINVAL
    Test completed

    Lastly, the current available number of tests:

    # tools/testing/selftests/kmod/kmod.sh --help
    Usage: tools/testing/selftests/kmod/kmod.sh [ -t ]
    Valid tests: 0001-0009

    0001 - Simple test - 1 thread for empty string
    0002 - Simple test - 1 thread for modules/filesystems that do not exist
    0003 - Simple test - 1 thread for get_fs_type() only
    0004 - Simple test - 2 threads for get_fs_type() only
    0005 - multithreaded tests with default setup - request_module() only
    0006 - multithreaded tests with default setup - get_fs_type() only
    0007 - multithreaded tests with default setup test request_module() and get_fs_type()
    0008 - multithreaded - push kmod_concurrent over max_modprobes for request_module()
    0009 - multithreaded - push kmod_concurrent over max_modprobes for get_fs_type()

    The following test cases currently fail, as such they are not currently
    enabled by default:

    # tools/testing/selftests/kmod/kmod.sh -t 0008
    # tools/testing/selftests/kmod/kmod.sh -t 0009

    To be sure to run them as intended please unload both of the modules:

    o test_module
    o xfs

    And ensure they are not loaded on your system prior to testing them. If
    you use these paritions for your rootfs you can change the default test
    driver used for get_fs_type() by exporting it into your environment. For
    example of other test defaults you can override refer to kmod.sh
    allow_user_defaults().

    Behind the scenes this is how we fine tune at a test case prior to
    hitting a trigger to run it:

    cat /sys/devices/virtual/misc/test_kmod0/config
    echo -n "2" > /sys/devices/virtual/misc/test_kmod0/config_test_case
    echo -n "ext4" > /sys/devices/virtual/misc/test_kmod0/config_test_fs
    echo -n "80" > /sys/devices/virtual/misc/test_kmod0/config_num_threads
    cat /sys/devices/virtual/misc/test_kmod0/config
    echo -n "1" > /sys/devices/virtual/misc/test_kmod0/config_num_threads

    Finally to trigger:

    echo -n "1" > /sys/devices/virtual/misc/test_kmod0/trigger_config

    The kmod.sh script uses the above constructs to build different test cases.

    A bit of interpretation of the current failures follows, first two
    premises:

    a) When request_module() is used userspace figures out an optimized
    version of module order for us. Once it finds the modules it needs, as
    per depmod symbol dep map, it will finit_module() the respective
    modules which are needed for the original request_module() request.

    b) We have an optimization in place whereby if a kernel uses
    request_module() on a module already loaded we never bother userspace
    as the module already is loaded. This is all handled by kernel/kmod.c.

    A few things to consider to help identify root causes of issues:

    0) kmod 19 has a broken heuristic for modules being assumed to be
    built-in to your kernel and will return 0 even though request_module()
    failed. Upgrade to a newer version of kmod.

    1) A get_fs_type() call for "xfs" will request_module() for "fs-xfs",
    not for "xfs". The optimization in kernel described in b) fails to
    catch if we have a lot of consecutive get_fs_type() calls. The reason
    is the optimization in place does not look for aliases. This means two
    consecutive get_fs_type() calls will bump kmod_concurrent, whereas
    request_module() will not.

    This one explanation why test case 0009 fails at least once for
    get_fs_type().

    2) If a module fails to load --- for whatever reason (kmod_concurrent
    limit reached, file not yet present due to rootfs switch, out of
    memory) we have a period of time during which module request for the
    same name either with request_module() or get_fs_type() will *also*
    fail to load even if the file for the module is ready.

    This explains why *multiple* NULLs are possible on test 0009.

    3) finit_module() consumes quite a bit of memory.

    4) Filesystems typically also have more dependent modules than other
    modules, its important to note though that even though a get_fs_type()
    call does not incur additional kmod_concurrent bumps, since userspace
    loads dependencies it finds it needs via finit_module_fd(), it *will*
    take much more memory to load a module with a lot of dependencies.

    Because of 3) and 4) we will easily run into out of memory failures with
    certain tests. For instance test 0006 fails on qemu with 1024 MiB of RAM.
    It panics a box after reaping all userspace processes and still not
    having enough memory to reap.

    [arnd@arndb.de: add dependencies for test module]
    Link: http://lkml.kernel.org/r/20170630154834.3689272-1-arnd@arndb.de
    Link: http://lkml.kernel.org/r/20170628223155.26472-3-mcgrof@kernel.org
    Signed-off-by: Luis R. Rodriguez
    Cc: Jessica Yu
    Cc: Shuah Khan
    Cc: Rusty Russell
    Cc: Michal Marek
    Cc: Petr Mladek
    Cc: Greg Kroah-Hartman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Luis R. Rodriguez
     
  • As suggested by Jessica, I've been actively working on kmod, so might as
    well reflect its maintained status.

    Changes are expected to go through akpm's tree.

    Link: http://lkml.kernel.org/r/20170628223155.26472-2-mcgrof@kernel.org
    Signed-off-by: Luis R. Rodriguez
    Suggested-by: Jessica Yu
    Cc: Shuah Khan
    Cc: Rusty Russell
    Cc: Michal Marek
    Cc: Petr Mladek
    Cc: Greg Kroah-Hartman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Luis R. Rodriguez
     
  • The arch uses a verbatim copy of the asm-generic version and does not
    add any own implementations to the header, so use asm-generic/fb.h
    instead of duplicating code.

    Link: http://lkml.kernel.org/r/20170517083545.2115-1-tklauser@distanz.ch
    Signed-off-by: Tobias Klauser
    Acked-by: Max Filippov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tobias Klauser
     
  • fail-nth interface is only created in /proc/self/task//.
    This change also adds it in /proc//.

    This makes shell based tool a bit simpler.

    $ bash -c "builtin echo 100 > /proc/self/fail-nth && exec ls /"

    Link: http://lkml.kernel.org/r/1491490561-10485-6-git-send-email-akinobu.mita@gmail.com
    Signed-off-by: Akinobu Mita
    Cc: Dmitry Vyukov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • The fail-nth file is created with 0666 and the access is permitted if
    and only if the task is current.

    This file is owned by the currnet user. So we can create it with 0644
    and allow the owner to write it. This enables to watch the status of
    task->fail_nth from another processes.

    [akinobu.mita@gmail.com: don't convert unsigned type value as signed int]
    Link: http://lkml.kernel.org/r/1492444483-9239-1-git-send-email-akinobu.mita@gmail.com
    [akinobu.mita@gmail.com: avoid unwanted data race to task->fail_nth]
    Link: http://lkml.kernel.org/r/1499962492-8931-1-git-send-email-akinobu.mita@gmail.com
    Link: http://lkml.kernel.org/r/1491490561-10485-5-git-send-email-akinobu.mita@gmail.com
    Signed-off-by: Akinobu Mita
    Acked-by: Dmitry Vyukov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • The read interface for fail-nth looks a bit odd. Read from this file
    returns "NYYYY..." or "YYYYY..." (this makes me surprise when cat this
    file). Because there is no EOF condition. The first character
    indicates current->fail_nth is zero or not, and then current->fail_nth
    is reset to zero.

    Just returning task->fail_nth value is more natural to understand.

    Link: http://lkml.kernel.org/r/1491490561-10485-4-git-send-email-akinobu.mita@gmail.com
    Signed-off-by: Akinobu Mita
    Cc: Dmitry Vyukov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • The value written to fail-nth file is parsed as 0-based. Parsing as
    one-based is more natural to understand and it enables to cancel the
    previous setup by simply writing '0'.

    This change also converts task->fail_nth from signed to unsigned int.

    Link: http://lkml.kernel.org/r/1491490561-10485-3-git-send-email-akinobu.mita@gmail.com
    Signed-off-by: Akinobu Mita
    Cc: Dmitry Vyukov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • Automatically detect the number base to use when writing to fail-nth
    file instead of always parsing as a decimal number.

    Link: http://lkml.kernel.org/r/1491490561-10485-2-git-send-email-akinobu.mita@gmail.com
    Signed-off-by: Akinobu Mita
    Cc: Dmitry Vyukov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • After commit 73ce0511c436 ("kernel/watchdog.c: move hardlockup
    detector to separate file"), 'NMI watchdog' is inappropriate in
    kernel/watchdog.c, using 'watchdog' only.

    Link: http://lkml.kernel.org/r/1499928642-48983-1-git-send-email-wangkefeng.wang@huawei.com
    Signed-off-by: Kefeng Wang
    Cc: Babu Moger
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kefeng Wang
     
  • Update the location of the befs git tree and my email address.

    Link: http://lkml.kernel.org/r/20170709110012.2991-1-luisbg@kernel.org
    Signed-off-by: Luis de Bethencourt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Luis de Bethencourt