10 Oct, 2015

4 commits


08 Oct, 2015

2 commits

  • Pull arm64 fixes from Will Deacon:
    "This addresses a couple of issues found with RT, a broken initrd
    message in the console log and a simple performance fix for some MMC
    workloads.

    Summary:

    - A couple of locking fixes for RT kernels
    - Avoid printing bogus initrd warnings when initrd isn't present
    - Performance fix for random mmap file readahead
    - Typo fix"

    * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
    arm64: replace read_lock to rcu lock in call_break_hook
    arm64: Don't relocate non-existent initrd
    arm64: convert patch_lock to raw lock
    arm64: readahead: fault retry breaks mmap file read random detection
    arm64: debug: Fix typo in debug-monitors.c

    Linus Torvalds
     
  • Pull fbdev fixes from Tomi Valkeinen:

    - fbdev: Minor fixes to broadsheetfb, fsl-diu-fb, mb862xxfb, tridentfb,
    omapfb

    - display-timing: Fix memory leak in error path

    * tag 'fbdev-fixes-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux:
    video: of: fix memory leak
    fbdev: broadsheetfb: fix memory leak
    OMAPDSS: panel-sony-acx565akm: Export OF module alias information
    fbdev: omap2: connector-dvi: use of_get_i2c_adapter_by_node interface
    tridentfb: Fix set_lwidth on TGUI9440 and CYBER9320
    tridentfb: fix hang on Blade3D with CONFIG_CC_OPTIMIZE_FOR_SIZE
    video: fbdev: mb862xx: Fix module autoload for OF platform driver
    video: fbdev: fsl: Fix the sleep function for FSL DIU module

    Linus Torvalds
     

07 Oct, 2015

15 commits

  • Pull regmap fixes from Mark Brown:
    "A couple of fixes for the debugfs information on the register map,
    fixing issues with very small reads potentially causing underflows and
    wraparounds"

    * tag 'regmap-fix-v4.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap:
    regmap: debugfs: Don't bother actually printing when calculating max length
    regmap: debugfs: Ensure we don't underflow when printing access masks

    Linus Torvalds
     
  • Pull spi fixes from Mark Brown:
    "A couple of very minor fixes, one for error handling in the Davinci
    driver probe function and another making the Renesas sh-msiof DT
    binding documentation correspond to what's actually implemented"

    * tag 'spi-fix-v4.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
    spi: sh-msiof: Match renesas,rx-fifo-size in DT bindings doc with driver
    spi: davinci: fix handling platform_get_irq result

    Linus Torvalds
     
  • …git/broonie/regulator

    Pull regulator fixes from Mark Brown:
    "Two fixes here, one device specific fix for axp20x and a core fix for
    cases where one regulator is supplying another which broke probe
    deferral, substituting in a dummy regulator too aggressively"

    * tag 'regulator-fix-v4.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
    regulator: core: Handle probe deferral from DT when resolving supplies
    regulator: axp20x: Fix enable bit indexes for DCDC4 and DCDC5

    Linus Torvalds
     
  • If of_parse_display_timing() fails we are printing an error message and
    jumping to the error path but we missed freeing "dt".

    Signed-off-by: Sudip Mukherjee
    Signed-off-by: Tomi Valkeinen

    Sudip Mukherjee
     
  • Mark Brown
     
  • Pull strscpy fixes from Chris Metcalf :
    "This patch series fixes up a couple of architecture issues where
    strscpy wasn't configured correctly (missing on h8300, duplicating
    local and asm-generic copies on powerpc and tile).

    It also adds a use of zero_bytemask() to the final store for strscpy
    to avoid writing uninitialized data to the destination. However, to
    make this work we had to add support for zero_bytemask() to the two
    architectures that didn't have it (alpha and tile), because they were
    providing their own local copies, but didn't provide the
    zero_bytemask() that was previously only required when building with
    CONFIG_DCACHE_WORD_ACCESS"

    [ Side note: there is still no actual users of strscpy except for the
    one preexisting use in arch/tile that predates the generic version.
    So this is all about fixing the infrastructure so that we eventually
    can start using it. - Linus ]

    * 'strscpy' of git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
    strscpy: zero any trailing garbage bytes in the destination
    word-at-a-time.h: support zero_bytemask() on alpha and tile
    word-at-a-time.h: fix some Kbuild files

    Linus Torvalds
     
  • Pull MTD fixes from Brian Norris:
    "A few MTD fixes:

    - mxc_nand: a "refactoring only" change in 4.3-rc1 had some bad
    pointer (array) arithmetic. Fix that

    - sunxi_nand:

    - Fix an old list manipulation / memory management bug in the device
    release() code path

    - Correct a few mistakes in OOB write support"

    * tag 'for-linus-20151006' of git://git.infradead.org/linux-mtd:
    mxc_nand: fix copy_spare
    mtd: nand: sunxi: fix sunxi_nand_chips_cleanup()
    mtd: nand: sunxi: fix OOB handling in ->write_xxx() functions

    Linus Torvalds
     
  • Pull NFS client bugfixes from Trond Myklebust:
    "Highlights include:

    Bugfixes:
    - Fix a use-after-free bug in the RPC/RDMA client
    - Fix a write performance regression
    - Fix up page writeback accounting
    - Don't try to reclaim unused state owners
    - Fix a NFSv4 nograce recovery hang
    - reset states to use open_stateid when returning delegation
    voluntarily
    - Fix a tracepoint NULL-pointer dereference"

    * tag 'nfs-for-4.3-3' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
    NFS: Fix a tracepoint NULL-pointer dereference
    nfs4: reset states to use open_stateid when returning delegation voluntarily
    NFSv4: Fix a nograce recovery hang
    NFSv4.1: nfs4_opendata_check_deleg needs to handle NFS4_OPEN_CLAIM_DELEG_CUR_FH
    NFSv4: Don't try to reclaim unused state owners
    NFS: Fix a write performance regression
    NFS: Fix up page writeback accounting
    xprtrdma: disconnect and flush cqs before freeing buffers

    Linus Torvalds
     
  • This reverts commit 998ef75ddb5709bbea0bf1506cd2717348a3c647.

    The commit itself does not appear to be buggy per se, but it is exposing
    a bug in ext4 (and Ted thinks ext3 too, but we solved that by getting
    rid of it). It's too late in the release cycle to really worry about
    this, even if Dave Hansen has a patch that may actually fix the
    underlying ext4 problem. We can (and should) revisit this for the next
    release.

    The problem is that moving the prefaulting later now exposes a special
    case with partially successful writes that isn't handled correctly. And
    the prefaulting likely isn't normally even that much of a performance
    issue - it looks like at least one reason Dave saw this in his
    performance tests is that he also ran them on Skylake that now supports
    the new SMAP code, which makes the normally very cheap user space
    prefaulting noticeably more expensive.

    Bisected-and-acked-by: Ted Ts'o
    Analyzed-and-acked-by: Dave Hansen
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • Running xfstest generic/013 with the tracepoint nfs:nfs4_open_file
    enabled produces a NULL-pointer dereference when calculating fileid and
    filehandle of the opened file. Fix this by checking if state is NULL
    before trying to use the inode pointer.

    Reported-by: Olga Kornievskaia
    Signed-off-by: Anna Schumaker
    Signed-off-by: Trond Myklebust

    Anna Schumaker
     
  • It's possible that the destination can be shadowed in userspace
    (as, for example, the perf buffers are now). So we should take
    care not to leak data that could be inspected by userspace.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • Both alpha and tile needed implementations of zero_bytemask.

    The alpha version is untested.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • arch/tile added word-at-a-time.h after the patch that added generic-y
    entries; the generic-y entry is now stale.

    arch/h8300 is newer than the generic-y patch for word-at-a-time.h,
    and needs a generic-y entry.

    arch/powerpc seems to have gotten a generic-y entry by mistake in
    the first patch; this change removes it.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:917
    in_atomic(): 0, irqs_disabled(): 128, pid: 342, name: perf
    1 lock held by perf/342:
    #0: (break_hook_lock){+.+...}, at: [] call_break_hook+0x34/0xd0
    irq event stamp: 62224
    hardirqs last enabled at (62223): [] __call_rcu.constprop.59+0x104/0x270
    hardirqs last disabled at (62224): [] vprintk_emit+0x68/0x640
    softirqs last enabled at (0): [] copy_process.part.8+0x428/0x17f8
    softirqs last disabled at (0): [< (null)>] (null)
    CPU: 0 PID: 342 Comm: perf Not tainted 4.1.6-rt5 #4
    Hardware name: linux,dummy-virt (DT)
    Call trace:
    [] dump_backtrace+0x0/0x128
    [] show_stack+0x20/0x30
    [] dump_stack+0x7c/0xa0
    [] ___might_sleep+0x174/0x260
    [] __rt_spin_lock+0x28/0x40
    [] rt_read_lock+0x60/0x80
    [] call_break_hook+0x30/0xd0
    [] brk_handler+0x30/0x98
    [] do_debug_exception+0x50/0xb8
    Exception stack(0xffffffc00514fe30 to 0xffffffc00514ff50)
    fe20: 00000000 00000000 c1594680 0000007f
    fe40: ffffffff ffffffff 92063940 0000007f 0550dcd8 ffffffc0 00000000 00000000
    fe60: 0514fe70 ffffffc0 000be1f8 ffffffc0 0514feb0 ffffffc0 0008948c ffffffc0
    fe80: 00000004 00000000 0514fed0 ffffffc0 ffffffff ffffffff 9282a948 0000007f
    fea0: 00000000 00000000 9282b708 0000007f c1592820 0000007f 00083914 ffffffc0
    fec0: 00000000 00000000 00000010 00000000 00000064 00000000 00000001 00000000
    fee0: 005101e0 00000000 c1594680 0000007f c1594740 0000007f ffffffd8 ffffff80
    ff00: 00000000 00000000 00000000 00000000 c1594770 0000007f c1594770 0000007f
    ff20: 00665e10 00000000 7f7f7f7f 7f7f7f7f 01010101 01010101 00000000 00000000
    ff40: 928e4cc0 0000007f 91ff11e8 0000007f

    call_break_hook is called in atomic context (hard irq disabled), so replace
    the sleepable lock to rcu lock, replace relevant list operations to rcu
    version and call synchronize_rcu() in unregister_break_hook().

    And, replace write lock to spinlock in {un}register_break_hook.

    Signed-off-by: Yang Shi
    Signed-off-by: Will Deacon

    Yang Shi
     
  • When booting a kernel without an initrd, the kernel reports that it
    moves -1 bytes worth, having gone through the motions with initrd_start
    equal to initrd_end:

    Moving initrd from [4080000000-407fffffff] to [9fff49000-9fff48fff]

    Prevent this by bailing out early when the initrd size is zero (i.e. we
    have no initrd), avoiding the confusing message and other associated
    work.

    Fixes: 1570f0d7ab425c1e ("arm64: support initrd outside kernel linear map")
    Cc: Mark Salter
    Signed-off-by: Mark Rutland
    Signed-off-by: Will Deacon

    Mark Rutland
     

06 Oct, 2015

7 commits

  • Pull xen bug fixes from David Vrabel:

    - Fix VM save performance regression with x86 PV guests

    - Make kexec work in x86 PVHVM guests (if Xen has the soft-reset ABI)

    - Other minor fixes.

    * tag 'for-linus-4.3b-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
    x86/xen/p2m: hint at the last populated P2M entry
    x86/xen: Do not clip xen_e820_map to xen_e820_map_entries when sanitizing map
    x86/xen: Support kexec/kdump in HVM guests by doing a soft reset
    xen/x86: Don't try to write syscall-related MSRs for PV guests
    xen: use correct type for HYPERVISOR_memory_op()

    Linus Torvalds
     
  • Pull s390 fixes from Martin Schwidefsky:
    "Three bug fixes and an update to the default configuration"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
    s390/defconfig: set SCSI_DH=y
    s390/vtime: correct scaled cputime of partially idle CPUs
    s390/boot/decompression: disable floating point in decompressor
    s390/numa: use correct type for node_to_cpumask_map

    Linus Torvalds
     
  • Pull CIFS fixes from Steve French:
    "Two fixes for problems pointed out by automated tools.

    Thanks PaX/grsecurity team and Dan Carpenter (and the Smatch tool)"

    * 'for-next' of git://git.samba.org/sfrench/cifs-2.6:
    [CIFS] Update cifs version number
    [SMB3] Do not fall back to SMBWriteX in set_file_size error cases
    [SMB3] Missing null tcon check

    Linus Torvalds
     
  • With commit 633d6f17cd91ad5bf2370265946f716e42d388c6 (x86/xen: prepare
    p2m list for memory hotplug) the P2M may be sized to accomdate a much
    larger amount of memory than the domain currently has.

    When saving a domain, the toolstack must scan all the P2M looking for
    populated pages. This results in a performance regression due to the
    unnecessary scanning.

    Instead of reporting (via shared_info) the maximum possible size of
    the P2M, hint at the last PFN which might be populated. This hint is
    increased as new leaves are added to the P2M (in the expectation that
    they will be used for populated entries).

    Signed-off-by: David Vrabel
    Cc: # 4.0+

    David Vrabel
     
  • Mark Brown
     
  • Mark Brown
     
  • When running kprobe test on arm64 rt kernel, it reports the below warning:

    root@qemu7:~# modprobe kprobe_example
    BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:917
    in_atomic(): 0, irqs_disabled(): 128, pid: 484, name: modprobe
    CPU: 0 PID: 484 Comm: modprobe Not tainted 4.1.6-rt5 #2
    Hardware name: linux,dummy-virt (DT)
    Call trace:
    [] dump_backtrace+0x0/0x128
    [] show_stack+0x20/0x30
    [] dump_stack+0x1c/0x28
    [] ___might_sleep+0x120/0x198
    [] rt_spin_lock+0x28/0x40
    [] __aarch64_insn_write+0x28/0x78
    [] aarch64_insn_patch_text_nosync+0x18/0x48
    [] aarch64_insn_patch_text_cb+0x70/0xa0
    [] aarch64_insn_patch_text_sync+0x28/0x48
    [] arch_arm_kprobe+0x38/0x48
    [] arm_kprobe+0x34/0x50
    [] register_kprobe+0x4cc/0x5b8
    [] kprobe_init+0x38/0x7c [kprobe_example]
    [] do_one_initcall+0x90/0x1b0
    [] do_init_module+0x6c/0x1cc
    [] load_module+0x17f8/0x1db0
    [] SyS_finit_module+0xb4/0xc8

    Convert patch_lock to raw loc kto avoid this issue.

    Although the problem is found on rt kernel, the fix should be applicable to
    mainline kernel too.

    Acked-by: Steven Rostedt
    Signed-off-by: Yang Shi
    Signed-off-by: Will Deacon

    Yang Shi
     

05 Oct, 2015

2 commits

  • This is the arm64 portion of commit 45cac65b0fcd ("readahead: fault
    retry breaks mmap file read random detection"), which was absent from
    the initial port and has since gone unnoticed. The original commit says:

    > .fault now can retry. The retry can break state machine of .fault. In
    > filemap_fault, if page is miss, ra->mmap_miss is increased. In the second
    > try, since the page is in page cache now, ra->mmap_miss is decreased. And
    > these are done in one fault, so we can't detect random mmap file access.
    >
    > Add a new flag to indicate .fault is tried once. In the second try, skip
    > ra->mmap_miss decreasing. The filemap_fault state machine is ok with it.

    With this change, Mark reports that:

    > Random read improves by 250%, sequential read improves by 40%, and
    > random write by 400% to an eMMC device with dm crypto wrapped around it.

    Cc: Shaohua Li
    Cc: Rik van Riel
    Cc: Wu Fengguang
    Cc:
    Signed-off-by: Mark Salyzyn
    Signed-off-by: Riley Andrews
    Signed-off-by: Will Deacon

    Mark Salyzyn
     
  • Fix comment typo: s/handers/handlers/

    Signed-off-by: Yang Shi
    Signed-off-by: Will Deacon

    Yang Shi
     

04 Oct, 2015

7 commits

  • Linus Torvalds
     
  • Pull strscpy string copy function implementation from Chris Metcalf.

    Chris sent this during the merge window, but I waffled back and forth on
    the pull request, which is why it's going in only now.

    The new "strscpy()" function is definitely easier to use and more secure
    than either strncpy() or strlcpy(), both of which are horrible nasty
    interfaces that have serious and irredeemable problems.

    strncpy() has a useless return value, and doesn't NUL-terminate an
    overlong result. To make matters worse, it pads a short result with
    zeroes, which is a performance disaster if you have big buffers.

    strlcpy(), by contrast, is a mis-designed "fix" for strlcpy(), lacking
    the insane NUL padding, but having a differently broken return value
    which returns the original length of the source string. Which means
    that it will read characters past the count from the source buffer, and
    you have to trust the source to be properly terminated. It also makes
    error handling fragile, since the test for overflow is unnecessarily
    subtle.

    strscpy() avoids both these problems, guaranteeing the NUL termination
    (but not excessive padding) if the destination size wasn't zero, and
    making the overflow condition very obvious by returning -E2BIG. It also
    doesn't read past the size of the source, and can thus be used for
    untrusted source data too.

    So why did I waffle about this for so long?

    Every time we introduce a new-and-improved interface, people start doing
    these interminable series of trivial conversion patches.

    And every time that happens, somebody does some silly mistake, and the
    conversion patch to the improved interface actually makes things worse.
    Because the patch is mindnumbing and trivial, nobody has the attention
    span to look at it carefully, and it's usually done over large swatches
    of source code which means that not every conversion gets tested.

    So I'm pulling the strscpy() support because it *is* a better interface.
    But I will refuse to pull mindless conversion patches. Use this in
    places where it makes sense, but don't do trivial patches to fix things
    that aren't actually known to be broken.

    * 'strscpy' of git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
    tile: use global strscpy() rather than private copy
    string: provide strscpy()
    Make asm/word-at-a-time.h available on all architectures

    Linus Torvalds
     
  • Pull md fixes from Neil Brown:
    "Assorted fixes for md in 4.3-rc.

    Two tagged for -stable, and one is really a cleanup to match and
    improve kmemcache interface.

    * tag 'md/4.3-fixes' of git://neil.brown.name/md:
    md/bitmap: don't pass -1 to bitmap_storage_alloc.
    md/raid1: Avoid raid1 resync getting stuck
    md: drop null test before destroy functions
    md: clear CHANGE_PENDING in readonly array
    md/raid0: apply base queue limits *before* disk_stack_limits
    md/raid5: don't index beyond end of array in need_this_block().
    raid5: update analysis state for failed stripe
    md: wait for pending superblock updates before switching to read-only

    Linus Torvalds
     
  • Pull MIPS updates from Ralf Baechle:
    "This week's round of MIPS fixes:
    - Fix JZ4740 build
    - Fix fallback to GFP_DMA
    - FP seccomp in case of ENOSYS
    - Fix bootmem panic
    - A number of FP and CPS fixes
    - Wire up new syscalls
    - Make sure BPF assembler objects can properly be disassembled
    - Fix BPF assembler code for MIPS I"

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
    MIPS: scall: Always run the seccomp syscall filters
    MIPS: Octeon: Fix kernel panic on startup from memory corruption
    MIPS: Fix R2300 FP context switch handling
    MIPS: Fix octeon FP context switch handling
    MIPS: BPF: Fix load delay slots.
    MIPS: BPF: Do all exports of symbols with FEXPORT().
    MIPS: Fix the build on jz4740 after removing the custom gpio.h
    MIPS: CPS: #ifdef on CONFIG_MIPS_MT_SMP rather than CONFIG_MIPS_MT
    MIPS: CPS: Don't include MT code in non-MT kernels.
    MIPS: CPS: Stop dangling delay slot from has_mt.
    MIPS: dma-default: Fix 32-bit fall back to GFP_DMA
    MIPS: Wire up userfaultfd and membarrier syscalls.

    Linus Torvalds
     
  • Pull irq fixes from Thomas Gleixner:
    "This update contains:

    - Fix for a long standing race affecting /proc/irq/NNN

    - One line fix for ARM GICV3-ITS counting the wrong data

    - Warning silencing in ARM GICV3-ITS. Another GCC trying to be
    overly clever issue"

    * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    irqchip/gic-v3-its: Count additional LPIs for the aliased devices
    irqchip/gic-v3-its: Silence warning when its_lpi_alloc_chunks gets inlined
    genirq: Fix race in register_irq_proc()

    Linus Torvalds
     
  • The MIPS syscall handler code used to return -ENOSYS on invalid
    syscalls. Whilst this is expected, it caused problems for seccomp
    filters because the said filters never had the change to run since
    the code returned -ENOSYS before triggering them. This caused
    problems on the chromium testsuite for filters looking for invalid
    syscalls. This has now changed and the seccomp filters are always
    run even if the syscall is invalid. We return -ENOSYS once we
    return from the seccomp filters. Moreover, similar codepaths have
    been merged in the process which simplifies somewhat the overall
    syscall code.

    Signed-off-by: Markos Chandras
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/11236/
    Signed-off-by: Ralf Baechle

    Markos Chandras
     
  • Update modinfo cifs.ko version number to 2.08

    Signed-off-by: Steve French

    Steve French
     

03 Oct, 2015

3 commits

  • Pull x86 fixes from Ingo Molnar:
    "Fixes all around the map: W+X kernel mapping fix, WCHAN fixes, two
    build failure fixes for corner case configs, x32 header fix and a
    speling fix"

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/headers/uapi: Fix __BITS_PER_LONG value for x32 builds
    x86/mm: Set NX on gap between __ex_table and rodata
    x86/kexec: Fix kexec crash in syscall kexec_file_load()
    x86/process: Unify 32bit and 64bit implementations of get_wchan()
    x86/process: Add proper bound checks in 64bit get_wchan()
    x86, efi, kasan: Fix build failure on !KASAN && KMEMCHECK=y kernels
    x86/hyperv: Fix the build in the !CONFIG_KEXEC_CORE case
    x86/cpufeatures: Correct spelling of the HWP_NOTIFY flag

    Linus Torvalds
     
  • Pull timer fixes from Ingo Molnar:
    "An abs64() fix in the watchdog driver, and two clocksource driver
    NO_IRQ assumption fixes"

    * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    clocksource: Fix abs() usage w/ 64bit values
    clocksource/drivers/keystone: Fix bad NO_IRQ usage
    clocksource/drivers/rockchip: Fix bad NO_IRQ usage

    Linus Torvalds
     
  • Pull EFI fixes from Ingo Molnar:
    "Two EFI fixes: one for x86, one for ARM, fixing a boot crash bug that
    can trigger under newer EFI firmware"

    * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    arm64/efi: Fix boot crash by not padding between EFI_MEMORY_RUNTIME regions
    x86/efi: Fix boot crash by mapping EFI memmap entries bottom-up at runtime, instead of top-down

    Linus Torvalds