15 Jan, 2019

2 commits

  • Because we may call blk_mq_get_driver_tag() directly from
    blk_mq_dispatch_rq_list() without holding any lock, then HARDIRQ may
    come and the above DEADLOCK is triggered.

    Commit ab53dcfb3e7b ("sbitmap: Protect swap_lock from hardirq") tries to
    fix this issue by using 'spin_lock_bh', which isn't enough because we
    complete request from hardirq context direclty in case of multiqueue.

    Cc: Clark Williams
    Fixes: ab53dcfb3e7b ("sbitmap: Protect swap_lock from hardirq")
    Cc: Jens Axboe
    Cc: Ming Lei
    Cc: Guenter Roeck
    Cc: Steven Rostedt (VMware)
    Signed-off-by: Ming Lei
    Signed-off-by: Linus Torvalds

    Ming Lei
     
  • The swap_lock used by sbitmap has a chain with locks taken from softirq,
    but the swap_lock is not protected from being preempted by softirqs.

    A chain exists of:

    sbq->ws[i].wait -> dispatch_wait_lock -> swap_lock

    Where the sbq->ws[i].wait lock can be taken from softirq context, which
    means all locks below it in the chain must also be protected from
    softirqs.

    Reported-by: Clark Williams
    Fixes: 58ab5e32e6fd ("sbitmap: silence bogus lockdep IRQ warning")
    Fixes: ea86ea2cdced ("sbitmap: amortize cost of clearing bits")
    Cc: Jens Axboe
    Cc: Ming Lei
    Cc: Guenter Roeck
    Signed-off-by: Steven Rostedt (VMware)
    Signed-off-by: Linus Torvalds

    Steven Rostedt (VMware)
     

07 Jan, 2019

1 commit

  • Pull more Kbuild updates from Masahiro Yamada:

    - improve boolinit.cocci and use_after_iter.cocci semantic patches

    - fix alignment for kallsyms

    - move 'asm goto' compiler test to Kconfig and clean up jump_label
    CONFIG option

    - generate asm-generic wrappers automatically if arch does not
    implement mandatory UAPI headers

    - remove redundant generic-y defines

    - misc cleanups

    * tag 'kbuild-v4.21-3' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
    kconfig: rename generated .*conf-cfg to *conf-cfg
    kbuild: remove unnecessary stubs for archheader and archscripts
    kbuild: use assignment instead of define ... endef for filechk_* rules
    arch: remove redundant UAPI generic-y defines
    kbuild: generate asm-generic wrappers if mandatory headers are missing
    arch: remove stale comments "UAPI Header export list"
    riscv: remove redundant kernel-space generic-y
    kbuild: change filechk to surround the given command with { }
    kbuild: remove redundant target cleaning on failure
    kbuild: clean up rule_dtc_dt_yaml
    kbuild: remove UIMAGE_IN and UIMAGE_OUT
    jump_label: move 'asm goto' support test to Kconfig
    kallsyms: lower alignment on ARM
    scripts: coccinelle: boolinit: drop warnings on named constants
    scripts: coccinelle: check for redeclaration
    kconfig: remove unused "file" field of yylval union
    nds32: remove redundant kernel-space generic-y
    nios2: remove unneeded HAS_DMA define

    Linus Torvalds
     

06 Jan, 2019

6 commits

  • Pull block updates and fixes from Jens Axboe:

    - Pulled in MD changes that Shaohua had queued up for 4.21.

    Unfortunately we lost Shaohua late 2018, I'm sending these in on his
    behalf.

    - In conjunction with the above, I added a CREDITS entry for Shaoua.

    - sunvdc queue restart fix (Ming)

    * tag 'for-linus-20190104' of git://git.kernel.dk/linux-block:
    Add CREDITS entry for Shaohua Li
    block: sunvdc: don't run hw queue synchronously from irq context
    md: fix raid10 hang issue caused by barrier
    raid10: refactor common wait code from regular read/write request
    md: remvoe redundant condition check
    lib/raid6: add option to skip algo benchmarking
    lib/raid6: sort algos in rough performance order
    lib/raid6: check for assembler SSSE3 support
    lib/raid6: avoid __attribute_const__ redefinition
    lib/raid6: add missing include for raid6test
    md: remove set but not used variable 'bi_rdev'

    Linus Torvalds
     
  • Since commit 9c2af1c7377a ("kbuild: add .DELETE_ON_ERROR special
    target"), the target file is automatically deleted on failure.

    The boilerplate code

    ... || { rm -f $@; false; }

    is unneeded.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Currently, CONFIG_JUMP_LABEL just means "I _want_ to use jump label".

    The jump label is controlled by HAVE_JUMP_LABEL, which is defined
    like this:

    #if defined(CC_HAVE_ASM_GOTO) && defined(CONFIG_JUMP_LABEL)
    # define HAVE_JUMP_LABEL
    #endif

    We can improve this by testing 'asm goto' support in Kconfig, then
    make JUMP_LABEL depend on CC_HAS_ASM_GOTO.

    Ugly #ifdef HAVE_JUMP_LABEL will go away, and CONFIG_JUMP_LABEL will
    match to the real kernel capability.

    Signed-off-by: Masahiro Yamada
    Acked-by: Michael Ellerman (powerpc)
    Tested-by: Sedat Dilek

    Masahiro Yamada
     
  • Fixes build break on most ARM/ARM64 defconfigs:

    lib/genalloc.c: In function 'gen_pool_add_virt':
    lib/genalloc.c:190:10: error: implicit declaration of function 'vzalloc_node'; did you mean 'kzalloc_node'?
    lib/genalloc.c:190:8: warning: assignment to 'struct gen_pool_chunk *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
    lib/genalloc.c: In function 'gen_pool_destroy':
    lib/genalloc.c:254:3: error: implicit declaration of function 'vfree'; did you mean 'kfree'?

    Fixes: 6862d2fc8185 ('lib/genalloc.c: use vzalloc_node() to allocate the bitmap')
    Cc: Huang Shijie
    Cc: Andrew Morton
    Cc: Alexey Skidanov
    Signed-off-by: Olof Johansson
    Signed-off-by: Linus Torvalds

    Olof Johansson
     
  • Pull trivial vfs updates from Al Viro:
    "A few cleanups + Neil's namespace_unlock() optimization"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    exec: make prepare_bprm_creds static
    genheaders: %-s had been there since v6; %-*s - since v7
    VFS: use synchronize_rcu_expedited() in namespace_unlock()
    iov_iter: reduce code duplication

    Linus Torvalds
     
  • Merge more updates from Andrew Morton:

    - procfs updates

    - various misc bits

    - lib/ updates

    - epoll updates

    - autofs

    - fatfs

    - a few more MM bits

    * emailed patches from Andrew Morton : (58 commits)
    mm/page_io.c: fix polled swap page in
    checkpatch: add Co-developed-by to signature tags
    docs: fix Co-Developed-by docs
    drivers/base/platform.c: kmemleak ignore a known leak
    fs: don't open code lru_to_page()
    fs/: remove caller signal_pending branch predictions
    mm/: remove caller signal_pending branch predictions
    arch/arc/mm/fault.c: remove caller signal_pending_branch predictions
    kernel/sched/: remove caller signal_pending branch predictions
    kernel/locking/mutex.c: remove caller signal_pending branch predictions
    mm: select HAVE_MOVE_PMD on x86 for faster mremap
    mm: speed up mremap by 20x on large regions
    mm: treewide: remove unused address argument from pte_alloc functions
    initramfs: cleanup incomplete rootfs
    scripts/gdb: fix lx-version string output
    kernel/kcov.c: mark write_comp_data() as notrace
    kernel/sysctl: add panic_print into sysctl
    panic: add options to print system info when panic happens
    bfs: extra sanity checking and static inode bitmap
    exec: separate MM_ANONPAGES and RLIMIT_STACK accounting
    ...

    Linus Torvalds
     

05 Jan, 2019

4 commits

  • Some devices may have big memory on chip, such as over 1G. In some
    cases, the nbytes maybe bigger then 4M which is the bounday of the
    memory buddy system (4K default).

    So use vzalloc_node() to allocate the bitmap. Also use vfree to free
    it.

    Link: http://lkml.kernel.org/r/20181225015701.6289-1-sjhuang@iluvatar.ai
    Signed-off-by: Huang Shijie
    Reviewed-by: Andrew Morton
    Cc: Alexey Skidanov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Huang Shijie
     
  • Contrary to other tests, test_find_next_and_bit() test uses tab
    formatting in output and get_cycles() instead of ktime_get().
    get_cycles() is not supported by some arches, so ktime_get() fits better
    in generic code.

    Fix it and minor style issues, so the output looks like this:

    Start testing find_bit() with random-filled bitmap
    find_next_bit: 7142816 ns, 163282 iterations
    find_next_zero_bit: 8545712 ns, 164399 iterations
    find_last_bit: 6332032 ns, 163282 iterations
    find_first_bit: 20509424 ns, 16606 iterations
    find_next_and_bit: 4060016 ns, 73424 iterations

    Start testing find_bit() with sparse bitmap
    find_next_bit: 55984 ns, 656 iterations
    find_next_zero_bit: 19197536 ns, 327025 iterations
    find_last_bit: 65088 ns, 656 iterations
    find_first_bit: 5923712 ns, 656 iterations
    find_next_and_bit: 29088 ns, 1 iterations

    Link: http://lkml.kernel.org/r/20181123174803.10916-1-ynorov@caviumnetworks.com
    Signed-off-by: Yury Norov
    Reviewed-by: Andrew Morton
    Cc: "Norov, Yuri"
    Cc: Clement Courbet
    Cc: Geert Uytterhoeven
    Cc: Alexey Dobriyan
    Cc: Matthew Wilcox
    Cc: Rasmus Villemoes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yury Norov
     
  • gen_pool_alloc_algo() uses different allocation functions implementing
    different allocation algorithms. With gen_pool_first_fit_align()
    allocation function, the returned address should be aligned on the
    requested boundary.

    If chunk start address isn't aligned on the requested boundary, the
    returned address isn't aligned too. The only way to get properly
    aligned address is to initialize the pool with chunks aligned on the
    requested boundary. If want to have an ability to allocate buffers
    aligned on different boundaries (for example, 4K, 1MB, ...), the chunk
    start address should be aligned on the max possible alignment.

    This happens because gen_pool_first_fit_align() looks for properly
    aligned memory block without taking into account the chunk start address
    alignment.

    To fix this, we provide chunk start address to
    gen_pool_first_fit_align() and change its implementation such that it
    starts looking for properly aligned block with appropriate offset
    (exactly as is done in CMA).

    Link: https://lkml.kernel.org/lkml/a170cf65-6884-3592-1de9-4c235888cc8a@intel.com
    Link: http://lkml.kernel.org/r/1541690953-4623-1-git-send-email-alexey.skidanov@intel.com
    Signed-off-by: Alexey Skidanov
    Reviewed-by: Andrew Morton
    Cc: Logan Gunthorpe
    Cc: Daniel Mentz
    Cc: Mathieu Desnoyers
    Cc: Laura Abbott
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Skidanov
     
  • Originally, the rule used to be that you'd have to do access_ok()
    separately, and then user_access_begin() before actually doing the
    direct (optimized) user access.

    But experience has shown that people then decide not to do access_ok()
    at all, and instead rely on it being implied by other operations or
    similar. Which makes it very hard to verify that the access has
    actually been range-checked.

    If you use the unsafe direct user accesses, hardware features (either
    SMAP - Supervisor Mode Access Protection - on x86, or PAN - Privileged
    Access Never - on ARM) do force you to use user_access_begin(). But
    nothing really forces the range check.

    By putting the range check into user_access_begin(), we actually force
    people to do the right thing (tm), and the range check vill be visible
    near the actual accesses. We have way too long a history of people
    trying to avoid them.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

04 Jan, 2019

1 commit

  • Nobody has actually used the type (VERIFY_READ vs VERIFY_WRITE) argument
    of the user address range verification function since we got rid of the
    old racy i386-only code to walk page tables by hand.

    It existed because the original 80386 would not honor the write protect
    bit when in kernel mode, so you had to do COW by hand before doing any
    user access. But we haven't supported that in a long time, and these
    days the 'type' argument is a purely historical artifact.

    A discussion about extending 'user_access_begin()' to do the range
    checking resulted this patch, because there is no way we're going to
    move the old VERIFY_xyz interface to that model. And it's best done at
    the end of the merge window when I've done most of my merges, so let's
    just get this done once and for all.

    This patch was mostly done with a sed-script, with manual fix-ups for
    the cases that weren't of the trivial 'access_ok(VERIFY_xyz' form.

    There were a couple of notable cases:

    - csky still had the old "verify_area()" name as an alias.

    - the iter_iov code had magical hardcoded knowledge of the actual
    values of VERIFY_{READ,WRITE} (not that they mattered, since nothing
    really used it)

    - microblaze used the type argument for a debug printout

    but other than those oddities this should be a total no-op patch.

    I tried to fix up all architectures, did fairly extensive grepping for
    access_ok() uses, and the changes are trivial, but I may have missed
    something. Any missed conversion should be trivially fixable, though.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

03 Jan, 2019

2 commits

  • Pull the pending 4.21 changes for md from Shaohua.

    * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md:
    md: fix raid10 hang issue caused by barrier
    raid10: refactor common wait code from regular read/write request
    md: remvoe redundant condition check
    lib/raid6: add option to skip algo benchmarking
    lib/raid6: sort algos in rough performance order
    lib/raid6: check for assembler SSSE3 support
    lib/raid6: avoid __attribute_const__ redefinition
    lib/raid6: add missing include for raid6test
    md: remove set but not used variable 'bi_rdev'

    Jens Axboe
     
  • Pull s390 updates from Martin Schwidefsky:

    - A larger update for the zcrypt / AP bus code:
    + Update two inline assemblies in the zcrypt driver to make gcc happy
    + Add a missing reply code for invalid special commands for zcrypt
    + Allow AP device reset to be triggered from user space
    + Split the AP scan function into smaller, more readable functions

    - Updates for vfio-ccw and vfio-ap
    + Add maintainers and reviewer for vfio-ccw
    + Include facility.h in vfio_ap_drv.c to avoid fragile include chain
    + Simplicy vfio-ccw state machine

    - Use the common code version of bust_spinlocks

    - Make use of the DEFINE_SHOW_ATTRIBUTE

    - Fix three incorrect file permissions in the DASD driver

    - Remove bit spin-lock from the PCI interrupt handler

    - Fix GFP_ATOMIC vs GFP_KERNEL in the PCI code

    * tag 's390-4.21-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
    s390/zcrypt: rework ap scan bus code
    s390/zcrypt: make sysfs reset attribute trigger queue reset
    s390/pci: fix sleeping in atomic during hotplug
    s390/pci: remove bit_lock usage in interrupt handler
    s390/drivers: fix proc/debugfs file permissions
    s390: convert to DEFINE_SHOW_ATTRIBUTE
    MAINTAINERS/vfio-ccw: add Farhan and Eric, make Halil Reviewer
    vfio: ccw: Merge BUSY and BOXED states
    s390: use common bust_spinlocks()
    s390/zcrypt: improve special ap message cmd handling
    s390/ap: rework assembler functions to use unions for in/out register variables
    s390: vfio-ap: include for test_facility()

    Linus Torvalds
     

02 Jan, 2019

1 commit

  • Pull RTC updates from Alexandre Belloni:
    "Subsystem:
    - new %ptR printk format
    - rename core files
    - allow registration of multiple nvmem devices

    New driver:
    - i.MX system controller RTC

    Driver updates:
    - abx80x: handle voltage ioctls, correct binding doc
    - m41t80: correct month in alarm reads
    - pcf85363: add pcf85263 support
    - pcf8523: properly handle battery low flag
    - s3c: limit alarm to one year in the future as ALMYEAR is broken
    - sun6i: rework clock output binding"

    * tag 'rtc-4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux: (54 commits)
    rtc: rename core files
    rtc: nvmem: fix possible use after free
    rtc: add i.MX system controller RTC support
    dt-bindings: fsl: scu: add rtc binding
    rtc: pcf2123: Add Microcrystal rv2123
    rtc: class: reimplement devm_rtc_device_register
    rtc: enforce rtc_timer_init private_data type
    rtc: abx80x: Implement RTC_VL_READ,CLR ioctls
    rtc: pcf85363: Add support for NXP pcf85263 rtc
    dt-bindings: rtc: pcf85363: Document pcf85263 real-time clock
    rtc: pcf8523: don't return invalid date when battery is low
    dt-bindings: rtc: use a generic node name for ds1307
    PM: Switch to use %ptR
    m68k/mac: Switch to use %ptR
    Input: hp_sdc_rtc - Switch to use %ptR
    rtc: tegra: Switch to use %ptR
    rtc: s5m: Switch to use %ptR
    rtc: s3c: Switch to use %ptR
    rtc: rx8025: Switch to use %ptR
    rtc: rx6110: Switch to use %ptR
    ...

    Linus Torvalds
     

01 Jan, 2019

1 commit

  • Pull tracing updates from Steven Rostedt:

    - Rework of the kprobe/uprobe and synthetic events to consolidate all
    the dynamic event code. This will make changes in the future easier.

    - Partial rewrite of the function graph tracing infrastructure. This
    will allow for multiple users of hooking onto functions to get the
    callback (return) of the function. This is the ground work for having
    kprobes and function graph tracer using one code base.

    - Clean up of the histogram code that will facilitate adding more
    features to the histograms in the future.

    - Addition of str_has_prefix() and a few use cases. There currently is
    a similar function strstart() that is used in a few places, but only
    returns a bool and not a length. These instances will be removed in
    the future to use str_has_prefix() instead.

    - A few other various clean ups as well.

    * tag 'trace-v4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (57 commits)
    tracing: Use the return of str_has_prefix() to remove open coded numbers
    tracing: Have the historgram use the result of str_has_prefix() for len of prefix
    tracing: Use str_has_prefix() instead of using fixed sizes
    tracing: Use str_has_prefix() helper for histogram code
    string.h: Add str_has_prefix() helper function
    tracing: Make function ‘ftrace_exports’ static
    tracing: Simplify printf'ing in seq_print_sym
    tracing: Avoid -Wformat-nonliteral warning
    tracing: Merge seq_print_sym_short() and seq_print_sym_offset()
    tracing: Add hist trigger comments for variable-related fields
    tracing: Remove hist trigger synth_var_refs
    tracing: Use hist trigger's var_ref array to destroy var_refs
    tracing: Remove open-coding of hist trigger var_ref management
    tracing: Use var_refs[] for hist trigger reference checking
    tracing: Change strlen to sizeof for hist trigger static strings
    tracing: Remove unnecessary hist trigger struct field
    tracing: Fix ftrace_graph_get_ret_stack() to use task and not current
    seq_buf: Use size_t for len in seq_buf_puts()
    seq_buf: Make seq_buf_puts() null-terminate the buffer
    arm64: Use ftrace_graph_get_ret_stack() instead of curr_ret_stack
    ...

    Linus Torvalds
     

30 Dec, 2018

2 commits

  • Pull Kconfig updates from Masahiro Yamada:

    - support -y option for merge_config.sh to avoid downgrading =y to =m

    - remove S_OTHER symbol type, and touch include/config/*.h files correctly

    - fix file name and line number in lexer warnings

    - fix memory leak when EOF is encountered in quotation

    - resolve all shift/reduce conflicts of the parser

    - warn no new line at end of file

    - make 'source' statement more strict to take only string literal

    - rewrite the lexer and remove the keyword lookup table

    - convert to SPDX License Identifier

    - compile C files independently instead of including them from zconf.y

    - fix various warnings of gconfig

    - misc cleanups

    * tag 'kconfig-v4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (39 commits)
    kconfig: surround dbg_sym_flags with #ifdef DEBUG to fix gconf warning
    kconfig: split images.c out of qconf.cc/gconf.c to fix gconf warnings
    kconfig: add static qualifiers to fix gconf warnings
    kconfig: split the lexer out of zconf.y
    kconfig: split some C files out of zconf.y
    kconfig: convert to SPDX License Identifier
    kconfig: remove keyword lookup table entirely
    kconfig: update current_pos in the second lexer
    kconfig: switch to ASSIGN_VAL state in the second lexer
    kconfig: stop associating kconf_id with yylval
    kconfig: refactor end token rules
    kconfig: stop supporting '.' and '/' in unquoted words
    treewide: surround Kconfig file paths with double quotes
    microblaze: surround string default in Kconfig with double quotes
    kconfig: use T_WORD instead of T_VARIABLE for variables
    kconfig: use specific tokens instead of T_ASSIGN for assignments
    kconfig: refactor scanning and parsing "option" properties
    kconfig: use distinct tokens for type and default properties
    kconfig: remove redundant token defines
    kconfig: rename depends_list to comment_option_list
    ...

    Linus Torvalds
     
  • gen_crc64table requires linux include files to be installed in
    /usr/include/linux. This is a new requrement so hosts that could
    previously build the kernel, now cannot.

    gen_crc64table makes this requirement by including , but
    nothing from that header is actaully used.

    So remove the #include, so that the linux headers no longer need to be
    installed.

    Fixes: feba04fd2cf8 ("lib: add crc64 calculation routines")
    Signed-off-by: NeilBrown
    Acked-by: Coly Li
    Signed-off-by: Linus Torvalds

    NeilBrown
     

29 Dec, 2018

13 commits

  • Pull driver core updates from Greg KH:
    "Here is the "big" set of driver core patches for 4.21-rc1.

    It's not really big, just a number of small changes for some reported
    issues, some documentation updates to hopefully make it harder for
    people to abuse the driver model, and some other minor cleanups.

    All of these have been in linux-next for a while with no reported
    issues"

    * tag 'driver-core-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
    mm, memory_hotplug: update a comment in unregister_memory()
    component: convert to DEFINE_SHOW_ATTRIBUTE
    sysfs: Disable lockdep for driver bind/unbind files
    driver core: Add missing dev->bus->need_parent_lock checks
    kobject: return error code if writing /sys/.../uevent fails
    driver core: Move async_synchronize_full call
    driver core: platform: Respect return code of platform_device_register_full()
    kref/kobject: Improve documentation
    drivers/base/memory.c: Use DEVICE_ATTR_RO and friends
    driver core: Replace simple_strto{l,ul} by kstrtou{l,ul}
    kernfs: Improve kernfs_notify() poll notification latency
    kobject: Fix warnings in lib/kobject_uevent.c
    kobject: drop unnecessary cast "%llu" for u64
    driver core: fix comments for device_block_probing()
    driver core: Replace simple_strtol by kstrtoint

    Linus Torvalds
     
  • Pull tty/serial driver updates from Greg KH:
    "Here is the large TTY/Serial driver set of patches for 4.21-rc1.

    A number of small serial driver changes along with some good tty core
    fixes for long-reported issues with locking. There is also a new
    console font added to the tree, for high-res screens, so that should
    be helpful for many.

    The last patch in the series is a revert of an older one in the tree,
    it came late but it resolves a reported issue that linux-next was
    having for some people.

    Full details are in the shortlog, and all of these, with the exception
    of the revert, have been in linux-next for a while with no reported
    issues"

    * tag 'tty-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (85 commits)
    Revert "serial: 8250: Default SERIAL_OF_PLATFORM to SERIAL_8250"
    serial: sccnxp: Allow to use non-standard baud rates
    serial: sccnxp: Adds a delay between sequential read/write cycles
    tty: serial: qcom_geni_serial: Fix UART hang
    tty: serial: qcom_geni_serial: Fix wrap around of TX buffer
    serial: max310x: Fix tx_empty() callback
    dt-bindings: serial: sh-sci: Document r8a774c0 bindings
    dt-bindings: serial: sh-sci: Document r8a774a1 bindings
    Fonts: New Terminus large console font
    dt-bindings: serial: lpuart: add imx8qxp compatible string
    serial: uartps: Fix interrupt mask issue to handle the RX interrupts properly
    serial: uartps: Fix error path when alloc failed
    serial: uartps: Check if the device is a console
    serial: uartps: Add the device_init_wakeup
    tty: serial: samsung: Increase maximum baudrate
    tty: serial: samsung: Properly set flags in autoCTS mode
    tty: Use of_node_name_{eq,prefix} for node name comparisons
    tty/serial: do not free trasnmit buffer page under port lock
    serial: 8250: Rate limit serial port rx interrupts during input overruns
    dt-bindings: serial: 8250: Add rate limit for serial port input overruns
    ...

    Linus Torvalds
     
  • Merge misc updates from Andrew Morton:

    - large KASAN update to use arm's "software tag-based mode"

    - a few misc things

    - sh updates

    - ocfs2 updates

    - just about all of MM

    * emailed patches from Andrew Morton : (167 commits)
    kernel/fork.c: mark 'stack_vm_area' with __maybe_unused
    memcg, oom: notify on oom killer invocation from the charge path
    mm, swap: fix swapoff with KSM pages
    include/linux/gfp.h: fix typo
    mm/hmm: fix memremap.h, move dev_page_fault_t callback to hmm
    hugetlbfs: Use i_mmap_rwsem to fix page fault/truncate race
    hugetlbfs: use i_mmap_rwsem for more pmd sharing synchronization
    memory_hotplug: add missing newlines to debugging output
    mm: remove __hugepage_set_anon_rmap()
    include/linux/vmstat.h: remove unused page state adjustment macro
    mm/page_alloc.c: allow error injection
    mm: migrate: drop unused argument of migrate_page_move_mapping()
    blkdev: avoid migration stalls for blkdev pages
    mm: migrate: provide buffer_migrate_page_norefs()
    mm: migrate: move migrate_page_lock_buffers()
    mm: migrate: lock buffers before migrate_page_move_mapping()
    mm: migration: factor out code to compute expected number of page references
    mm, page_alloc: enable pcpu_drain with zone capability
    kmemleak: add config to select auto scan
    mm/page_alloc.c: don't call kasan_free_pages() at deferred mem init
    ...

    Linus Torvalds
     
  • Pull DMA mapping updates from Christoph Hellwig:
    "A huge update this time, but a lot of that is just consolidating or
    removing code:

    - provide a common DMA_MAPPING_ERROR definition and avoid indirect
    calls for dma_map_* error checking

    - use direct calls for the DMA direct mapping case, avoiding huge
    retpoline overhead for high performance workloads

    - merge the swiotlb dma_map_ops into dma-direct

    - provide a generic remapping DMA consistent allocator for
    architectures that have devices that perform DMA that is not cache
    coherent. Based on the existing arm64 implementation and also used
    for csky now.

    - improve the dma-debug infrastructure, including dynamic allocation
    of entries (Robin Murphy)

    - default to providing chaining scatterlist everywhere, with opt-outs
    for the few architectures (alpha, parisc, most arm32 variants) that
    can't cope with it

    - misc sparc32 dma-related cleanups

    - remove the dma_mark_clean arch hook used by swiotlb on ia64 and
    replace it with the generic noncoherent infrastructure

    - fix the return type of dma_set_max_seg_size (Niklas Söderlund)

    - move the dummy dma ops for not DMA capable devices from arm64 to
    common code (Robin Murphy)

    - ensure dma_alloc_coherent returns zeroed memory to avoid kernel
    data leaks through userspace. We already did this for most common
    architectures, but this ensures we do it everywhere.
    dma_zalloc_coherent has been deprecated and can hopefully be
    removed after -rc1 with a coccinelle script"

    * tag 'dma-mapping-4.21' of git://git.infradead.org/users/hch/dma-mapping: (73 commits)
    dma-mapping: fix inverted logic in dma_supported
    dma-mapping: deprecate dma_zalloc_coherent
    dma-mapping: zero memory returned from dma_alloc_*
    sparc/iommu: fix ->map_sg return value
    sparc/io-unit: fix ->map_sg return value
    arm64: default to the direct mapping in get_arch_dma_ops
    PCI: Remove unused attr variable in pci_dma_configure
    ia64: only select ARCH_HAS_DMA_COHERENT_TO_PFN if swiotlb is enabled
    dma-mapping: bypass indirect calls for dma-direct
    vmd: use the proper dma_* APIs instead of direct methods calls
    dma-direct: merge swiotlb_dma_ops into the dma_direct code
    dma-direct: use dma_direct_map_page to implement dma_direct_map_sg
    dma-direct: improve addressability error reporting
    swiotlb: remove dma_mark_clean
    swiotlb: remove SWIOTLB_MAP_ERROR
    ACPI / scan: Refactor _CCA enforcement
    dma-mapping: factor out dummy DMA ops
    dma-mapping: always build the direct mapping code
    dma-mapping: move dma_cache_sync out of line
    dma-mapping: move various slow path functions out of line
    ...

    Linus Torvalds
     
  • Pull block updates from Jens Axboe:
    "This is the main pull request for block/storage for 4.21.

    Larger than usual, it was a busy round with lots of goodies queued up.
    Most notable is the removal of the old IO stack, which has been a long
    time coming. No new features for a while, everything coming in this
    week has all been fixes for things that were previously merged.

    This contains:

    - Use atomic counters instead of semaphores for mtip32xx (Arnd)

    - Cleanup of the mtip32xx request setup (Christoph)

    - Fix for circular locking dependency in loop (Jan, Tetsuo)

    - bcache (Coly, Guoju, Shenghui)
    * Optimizations for writeback caching
    * Various fixes and improvements

    - nvme (Chaitanya, Christoph, Sagi, Jay, me, Keith)
    * host and target support for NVMe over TCP
    * Error log page support
    * Support for separate read/write/poll queues
    * Much improved polling
    * discard OOM fallback
    * Tracepoint improvements

    - lightnvm (Hans, Hua, Igor, Matias, Javier)
    * Igor added packed metadata to pblk. Now drives without metadata
    per LBA can be used as well.
    * Fix from Geert on uninitialized value on chunk metadata reads.
    * Fixes from Hans and Javier to pblk recovery and write path.
    * Fix from Hua Su to fix a race condition in the pblk recovery
    code.
    * Scan optimization added to pblk recovery from Zhoujie.
    * Small geometry cleanup from me.

    - Conversion of the last few drivers that used the legacy path to
    blk-mq (me)

    - Removal of legacy IO path in SCSI (me, Christoph)

    - Removal of legacy IO stack and schedulers (me)

    - Support for much better polling, now without interrupts at all.
    blk-mq adds support for multiple queue maps, which enables us to
    have a map per type. This in turn enables nvme to have separate
    completion queues for polling, which can then be interrupt-less.
    Also means we're ready for async polled IO, which is hopefully
    coming in the next release.

    - Killing of (now) unused block exports (Christoph)

    - Unification of the blk-rq-qos and blk-wbt wait handling (Josef)

    - Support for zoned testing with null_blk (Masato)

    - sx8 conversion to per-host tag sets (Christoph)

    - IO priority improvements (Damien)

    - mq-deadline zoned fix (Damien)

    - Ref count blkcg series (Dennis)

    - Lots of blk-mq improvements and speedups (me)

    - sbitmap scalability improvements (me)

    - Make core inflight IO accounting per-cpu (Mikulas)

    - Export timeout setting in sysfs (Weiping)

    - Cleanup the direct issue path (Jianchao)

    - Export blk-wbt internals in block debugfs for easier debugging
    (Ming)

    - Lots of other fixes and improvements"

    * tag 'for-4.21/block-20181221' of git://git.kernel.dk/linux-block: (364 commits)
    kyber: use sbitmap add_wait_queue/list_del wait helpers
    sbitmap: add helpers for add/del wait queue handling
    block: save irq state in blkg_lookup_create()
    dm: don't reuse bio for flushes
    nvme-pci: trace SQ status on completions
    nvme-rdma: implement polling queue map
    nvme-fabrics: allow user to pass in nr_poll_queues
    nvme-fabrics: allow nvmf_connect_io_queue to poll
    nvme-core: optionally poll sync commands
    block: make request_to_qc_t public
    nvme-tcp: fix spelling mistake "attepmpt" -> "attempt"
    nvme-tcp: fix endianess annotations
    nvmet-tcp: fix endianess annotations
    nvme-pci: refactor nvme_poll_irqdisable to make sparse happy
    nvme-pci: only set nr_maps to 2 if poll queues are supported
    nvmet: use a macro for default error location
    nvmet: fix comparison of a u16 with -1
    blk-mq: enable IO poll if .nr_queues of type poll > 0
    blk-mq: change blk_mq_queue_busy() to blk_mq_queue_inflight()
    blk-mq: skip zero-queue maps in blk_mq_map_swqueue
    ...

    Linus Torvalds
     
  • Kmemleak scan can be cpu intensive and can stall user tasks at times. To
    prevent this, add config DEBUG_KMEMLEAK_AUTO_SCAN to enable/disable auto
    scan on boot up. Also protect first_run with DEBUG_KMEMLEAK_AUTO_SCAN as
    this is meant for only first automatic scan.

    Link: http://lkml.kernel.org/r/1540231723-7087-1-git-send-email-prpatel@nvidia.com
    Signed-off-by: Sri Krishna chowdary
    Signed-off-by: Sachin Nikam
    Signed-off-by: Prateek
    Reviewed-by: Catalin Marinas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sri Krishna chowdary
     
  • Whilst no architectures actually enable support for huge p4d mappings in
    the vmap area, the code that is implemented should be using
    break-before-make, as we do for pud and pmd huge entries.

    Link: http://lkml.kernel.org/r/1544120495-17438-6-git-send-email-will.deacon@arm.com
    Signed-off-by: Will Deacon
    Reviewed-by: Toshi Kani
    Cc: Chintan Pandya
    Cc: Toshi Kani
    Cc: Thomas Gleixner
    Cc: Michal Hocko
    Cc: "H. Peter Anvin"
    Cc: Ingo Molnar
    Cc: Sean Christopherson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Will Deacon
     
  • The current ioremap() code uses a phys_addr variable at each level of page
    table, which is confusingly offset by subtracting the base virtual address
    being mapped so that adding the current virtual address back on when
    iterating through the page table entries gives back the corresponding
    physical address.

    This is fairly confusing and results in all users of phys_addr having to
    add the current virtual address back on. Instead, this patch just updates
    phys_addr when iterating over the page table entries, ensuring that it's
    always up-to-date and doesn't require explicit offsetting.

    Link: http://lkml.kernel.org/r/1544120495-17438-5-git-send-email-will.deacon@arm.com
    Signed-off-by: Will Deacon
    Tested-by: Sean Christopherson
    Reviewed-by: Sean Christopherson
    Cc: Chintan Pandya
    Cc: Toshi Kani
    Cc: Thomas Gleixner
    Cc: Michal Hocko
    Cc: Sean Christopherson
    Cc: "H. Peter Anvin"
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Will Deacon
     
  • The recently merged API for ensuring break-before-make on page-table
    entries when installing huge mappings in the vmalloc/ioremap region is
    fairly counter-intuitive, resulting in the arch freeing functions (e.g.
    pmd_free_pte_page()) being called even on entries that aren't present.
    This resulted in a minor bug in the arm64 implementation, giving rise to
    spurious VM_WARN messages.

    This patch moves the pXd_present() checks out into the core code,
    refactoring the callsites at the same time so that we avoid the complex
    conjunctions when determining whether or not we can put down a huge
    mapping.

    Link: http://lkml.kernel.org/r/1544120495-17438-2-git-send-email-will.deacon@arm.com
    Signed-off-by: Will Deacon
    Reviewed-by: Toshi Kani
    Suggested-by: Linus Torvalds
    Cc: Chintan Pandya
    Cc: Toshi Kani
    Cc: Thomas Gleixner
    Cc: Michal Hocko
    Cc: "H. Peter Anvin"
    Cc: Ingo Molnar
    Cc: Sean Christopherson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Will Deacon
     
  • Function show_mem() is used to print system memory status when user
    requires or fail to allocate memory. Generally, this is a best effort
    information so any races with memory hotplug (or very theoretically an
    early initialization) should be tolerable and the worst that could happen
    is to print an imprecise node state.

    Drop the resize lock because this is the only place which might hold the
    lock from the interrupt context and so all other callers might use a
    simple spinlock. Even though this doesn't solve any real issue it makes
    the code easier to follow and tiny more effective.

    Link: http://lkml.kernel.org/r/20181129235532.9328-1-richard.weiyang@gmail.com
    Signed-off-by: Wei Yang
    Acked-by: Michal Hocko
    Reviewed-by: Oscar Salvador
    Cc: Johannes Weiner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Wei Yang
     
  • totalram_pages, zone->managed_pages and totalhigh_pages updates are
    protected by managed_page_count_lock, but readers never care about it.
    Convert these variables to atomic to avoid readers potentially seeing a
    store tear.

    This patch converts zone->managed_pages. Subsequent patches will convert
    totalram_panges, totalhigh_pages and eventually managed_page_count_lock
    will be removed.

    Main motivation was that managed_page_count_lock handling was complicating
    things. It was discussed in length here,
    https://lore.kernel.org/patchwork/patch/995739/#1181785 So it seemes
    better to remove the lock and convert variables to atomic, with preventing
    poteintial store-to-read tearing as a bonus.

    Link: http://lkml.kernel.org/r/1542090790-21750-3-git-send-email-arunks@codeaurora.org
    Signed-off-by: Arun KS
    Suggested-by: Michal Hocko
    Suggested-by: Vlastimil Babka
    Reviewed-by: Konstantin Khlebnikov
    Reviewed-by: David Hildenbrand
    Acked-by: Michal Hocko
    Acked-by: Vlastimil Babka
    Reviewed-by: Pavel Tatashin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arun KS
     
  • The current value of the early boot static pool size, 1024 is not big
    enough for systems with large number of CPUs with timer or/and workqueue
    objects selected. As the results, systems have 60+ CPUs with both timer
    and workqueue objects enabled could trigger "ODEBUG: Out of memory.
    ODEBUG disabled".

    Some debug objects are allocated during the early boot. Enabling some
    options like timers or workqueue objects may increase the size required
    significantly with large number of CPUs. For example,

    CONFIG_DEBUG_OBJECTS_TIMERS:
    No. CPUs x 2 (worker pool) objects:
    start_kernel
    workqueue_init_early
    init_worker_pool
    init_timer_key
    debug_object_init

    plus No. CPUs objects (CONFIG_HIGH_RES_TIMERS):
    sched_init
    hrtick_rq_init
    hrtimer_init

    CONFIG_DEBUG_OBJECTS_WORK:
    No. CPUs objects:
    vmalloc_init
    __init_work

    plus No. CPUs x 6 (workqueue) objects:
    workqueue_init_early
    alloc_workqueue
    __alloc_workqueue_key
    alloc_and_link_pwqs
    init_pwq

    Also, plus No. CPUs objects:
    perf_event_init
    __init_srcu_struct
    init_srcu_struct_fields
    init_srcu_struct_nodes
    __init_work

    However, none of the things are actually used or required before
    debug_objects_mem_init() is invoked, so just move the call right before
    vmalloc_init().

    According to tglx, "the reason why the call is at this place in
    start_kernel() is historical. It's because back in the days when
    debugobjects were added the memory allocator was enabled way later than
    today."

    Link: http://lkml.kernel.org/r/20181126102407.1836-1-cai@gmx.us
    Signed-off-by: Qian Cai
    Suggested-by: Thomas Gleixner
    Cc: Waiman Long
    Cc: Yang Shi
    Cc: Arnd Bergmann
    Cc: Catalin Marinas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Qian Cai
     
  • This commit splits the current CONFIG_KASAN config option into two:
    1. CONFIG_KASAN_GENERIC, that enables the generic KASAN mode (the one
    that exists now);
    2. CONFIG_KASAN_SW_TAGS, that enables the software tag-based KASAN mode.

    The name CONFIG_KASAN_SW_TAGS is chosen as in the future we will have
    another hardware tag-based KASAN mode, that will rely on hardware memory
    tagging support in arm64.

    With CONFIG_KASAN_SW_TAGS enabled, compiler options are changed to
    instrument kernel files with -fsantize=kernel-hwaddress (except the ones
    for which KASAN_SANITIZE := n is set).

    Both CONFIG_KASAN_GENERIC and CONFIG_KASAN_SW_TAGS support both
    CONFIG_KASAN_INLINE and CONFIG_KASAN_OUTLINE instrumentation modes.

    This commit also adds empty placeholder (for now) implementation of
    tag-based KASAN specific hooks inserted by the compiler and adjusts
    common hooks implementation.

    While this commit adds the CONFIG_KASAN_SW_TAGS config option, this option
    is not selectable, as it depends on HAVE_ARCH_KASAN_SW_TAGS, which we will
    enable once all the infrastracture code has been added.

    Link: http://lkml.kernel.org/r/b2550106eb8a68b10fefbabce820910b115aa853.1544099024.git.andreyknvl@google.com
    Signed-off-by: Andrey Konovalov
    Reviewed-by: Andrey Ryabinin
    Reviewed-by: Dmitry Vyukov
    Cc: Christoph Lameter
    Cc: Mark Rutland
    Cc: Will Deacon
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrey Konovalov
     

28 Dec, 2018

3 commits

  • Pull crypto updates from Herbert Xu:
    "API:
    - Add 1472-byte test to tcrypt for IPsec
    - Reintroduced crypto stats interface with numerous changes
    - Support incremental algorithm dumps

    Algorithms:
    - Add xchacha12/20
    - Add nhpoly1305
    - Add adiantum
    - Add streebog hash
    - Mark cts(cbc(aes)) as FIPS allowed

    Drivers:
    - Improve performance of arm64/chacha20
    - Improve performance of x86/chacha20
    - Add NEON-accelerated nhpoly1305
    - Add SSE2 accelerated nhpoly1305
    - Add AVX2 accelerated nhpoly1305
    - Add support for 192/256-bit keys in gcmaes AVX
    - Add SG support in gcmaes AVX
    - ESN for inline IPsec tx in chcr
    - Add support for CryptoCell 703 in ccree
    - Add support for CryptoCell 713 in ccree
    - Add SM4 support in ccree
    - Add SM3 support in ccree
    - Add support for chacha20 in caam/qi2
    - Add support for chacha20 + poly1305 in caam/jr
    - Add support for chacha20 + poly1305 in caam/qi2
    - Add AEAD cipher support in cavium/nitrox"

    * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (130 commits)
    crypto: skcipher - remove remnants of internal IV generators
    crypto: cavium/nitrox - Fix build with !CONFIG_DEBUG_FS
    crypto: salsa20-generic - don't unnecessarily use atomic walk
    crypto: skcipher - add might_sleep() to skcipher_walk_virt()
    crypto: x86/chacha - avoid sleeping under kernel_fpu_begin()
    crypto: cavium/nitrox - Added AEAD cipher support
    crypto: mxc-scc - fix build warnings on ARM64
    crypto: api - document missing stats member
    crypto: user - remove unused dump functions
    crypto: chelsio - Fix wrong error counter increments
    crypto: chelsio - Reset counters on cxgb4 Detach
    crypto: chelsio - Handle PCI shutdown event
    crypto: chelsio - cleanup:send addr as value in function argument
    crypto: chelsio - Use same value for both channel in single WR
    crypto: chelsio - Swap location of AAD and IV sent in WR
    crypto: chelsio - remove set but not used variable 'kctx_len'
    crypto: ux500 - Use proper enum in hash_set_dma_transfer
    crypto: ux500 - Use proper enum in cryp_set_dma_transfer
    crypto: aesni - Add scatter/gather avx stubs, and use them in C
    crypto: aesni - Introduce partial block macro
    ..

    Linus Torvalds
     
  • Pull networking updates from David Miller:

    1) New ipset extensions for matching on destination MAC addresses, from
    Stefano Brivio.

    2) Add ipv4 ttl and tos, plus ipv6 flow label and hop limit offloads to
    nfp driver. From Stefano Brivio.

    3) Implement GRO for plain UDP sockets, from Paolo Abeni.

    4) Lots of work from Michał Mirosław to eliminate the VLAN_TAG_PRESENT
    bit so that we could support the entire vlan_tci value.

    5) Rework the IPSEC policy lookups to better optimize more usecases,
    from Florian Westphal.

    6) Infrastructure changes eliminating direct manipulation of SKB lists
    wherever possible, and to always use the appropriate SKB list
    helpers. This work is still ongoing...

    7) Lots of PHY driver and state machine improvements and
    simplifications, from Heiner Kallweit.

    8) Various TSO deferral refinements, from Eric Dumazet.

    9) Add ntuple filter support to aquantia driver, from Dmitry Bogdanov.

    10) Batch dropping of XDP packets in tuntap, from Jason Wang.

    11) Lots of cleanups and improvements to the r8169 driver from Heiner
    Kallweit, including support for ->xmit_more. This driver has been
    getting some much needed love since he started working on it.

    12) Lots of new forwarding selftests from Petr Machata.

    13) Enable VXLAN learning in mlxsw driver, from Ido Schimmel.

    14) Packed ring support for virtio, from Tiwei Bie.

    15) Add new Aquantia AQtion USB driver, from Dmitry Bezrukov.

    16) Add XDP support to dpaa2-eth driver, from Ioana Ciocoi Radulescu.

    17) Implement coalescing on TCP backlog queue, from Eric Dumazet.

    18) Implement carrier change in tun driver, from Nicolas Dichtel.

    19) Support msg_zerocopy in UDP, from Willem de Bruijn.

    20) Significantly improve garbage collection of neighbor objects when
    the table has many PERMANENT entries, from David Ahern.

    21) Remove egdev usage from nfp and mlx5, and remove the facility
    completely from the tree as it no longer has any users. From Oz
    Shlomo and others.

    22) Add a NETDEV_PRE_CHANGEADDR so that drivers can veto the change and
    therefore abort the operation before the commit phase (which is the
    NETDEV_CHANGEADDR event). From Petr Machata.

    23) Add indirect call wrappers to avoid retpoline overhead, and use them
    in the GRO code paths. From Paolo Abeni.

    24) Add support for netlink FDB get operations, from Roopa Prabhu.

    25) Support bloom filter in mlxsw driver, from Nir Dotan.

    26) Add SKB extension infrastructure. This consolidates the handling of
    the auxiliary SKB data used by IPSEC and bridge netfilter, and is
    designed to support the needs to MPTCP which could be integrated in
    the future.

    27) Lots of XDP TX optimizations in mlx5 from Tariq Toukan.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1845 commits)
    net: dccp: fix kernel crash on module load
    drivers/net: appletalk/cops: remove redundant if statement and mask
    bnx2x: Fix NULL pointer dereference in bnx2x_del_all_vlans() on some hw
    net/net_namespace: Check the return value of register_pernet_subsys()
    net/netlink_compat: Fix a missing check of nla_parse_nested
    ieee802154: lowpan_header_create check must check daddr
    net/mlx4_core: drop useless LIST_HEAD
    mlxsw: spectrum: drop useless LIST_HEAD
    net/mlx5e: drop useless LIST_HEAD
    iptunnel: Set tun_flags in the iptunnel_metadata_reply from src
    net/mlx5e: fix semicolon.cocci warnings
    staging: octeon: fix build failure with XFRM enabled
    net: Revert recent Spectre-v1 patches.
    can: af_can: Fix Spectre v1 vulnerability
    packet: validate address length if non-zero
    nfc: af_nfc: Fix Spectre v1 vulnerability
    phonet: af_phonet: Fix Spectre v1 vulnerability
    net: core: Fix Spectre v1 vulnerability
    net: minor cleanup in skb_ext_add()
    net: drop the unused helper skb_ext_get()
    ...

    Linus Torvalds
     
  • Pull powerpc updates from Michael Ellerman:
    "Notable changes:

    - Mitigations for Spectre v2 on some Freescale (NXP) CPUs.

    - A large series adding support for pass-through of Nvidia V100 GPUs
    to guests on Power9.

    - Another large series to enable hardware assistance for TLB table
    walk on MPC8xx CPUs.

    - Some preparatory changes to our DMA code, to make way for further
    cleanups from Christoph.

    - Several fixes for our Transactional Memory handling discovered by
    fuzzing the signal return path.

    - Support for generating our system call table(s) from a text file
    like other architectures.

    - A fix to our page fault handler so that instead of generating a
    WARN_ON_ONCE, user accesses of kernel addresses instead print a
    ratelimited and appropriately scary warning.

    - A cosmetic change to make our unhandled page fault messages more
    similar to other arches and also more compact and informative.

    - Freescale updates from Scott:
    "Highlights include elimination of legacy clock bindings use from
    dts files, an 83xx watchdog handler, fixes to old dts interrupt
    errors, and some minor cleanup."

    And many clean-ups, reworks and minor fixes etc.

    Thanks to: Alexandre Belloni, Alexey Kardashevskiy, Andrew Donnellan,
    Aneesh Kumar K.V, Arnd Bergmann, Benjamin Herrenschmidt, Breno Leitao,
    Christian Lamparter, Christophe Leroy, Christoph Hellwig, Daniel
    Axtens, Darren Stevens, David Gibson, Diana Craciun, Dmitry V. Levin,
    Firoz Khan, Geert Uytterhoeven, Greg Kurz, Gustavo Romero, Hari
    Bathini, Joel Stanley, Kees Cook, Madhavan Srinivasan, Mahesh
    Salgaonkar, Markus Elfring, Mathieu Malaterre, Michal Suchánek, Naveen
    N. Rao, Nick Desaulniers, Oliver O'Halloran, Paul Mackerras, Ram Pai,
    Ravi Bangoria, Rob Herring, Russell Currey, Sabyasachi Gupta, Sam
    Bobroff, Satheesh Rajendran, Scott Wood, Segher Boessenkool, Stephen
    Rothwell, Tang Yuantian, Thiago Jung Bauermann, Yangtao Li, Yuantian
    Tang, Yue Haibing"

    * tag 'powerpc-4.21-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (201 commits)
    Revert "powerpc/fsl_pci: simplify fsl_pci_dma_set_mask"
    powerpc/zImage: Also check for stdout-path
    powerpc: Fix HMIs on big-endian with CONFIG_RELOCATABLE=y
    macintosh: Use of_node_name_{eq, prefix} for node name comparisons
    ide: Use of_node_name_eq for node name comparisons
    powerpc: Use of_node_name_eq for node name comparisons
    powerpc/pseries/pmem: Convert to %pOFn instead of device_node.name
    powerpc/mm: Remove very old comment in hash-4k.h
    powerpc/pseries: Fix node leak in update_lmb_associativity_index()
    powerpc/configs/85xx: Enable CONFIG_DEBUG_KERNEL
    powerpc/dts/fsl: Fix dtc-flagged interrupt errors
    clk: qoriq: add more compatibles strings
    powerpc/fsl: Use new clockgen binding
    powerpc/83xx: handle machine check caused by watchdog timer
    powerpc/fsl-rio: fix spelling mistake "reserverd" -> "reserved"
    powerpc/fsl_pci: simplify fsl_pci_dma_set_mask
    arch/powerpc/fsl_rmu: Use dma_zalloc_coherent
    vfio_pci: Add NVIDIA GV100GL [Tesla V100 SXM2] subdriver
    vfio_pci: Allow regions to add own capabilities
    vfio_pci: Allow mapping extra regions
    ...

    Linus Torvalds
     

27 Dec, 2018

2 commits

  • Pull RCU updates from Ingo Molnar:
    "The biggest RCU changes in this cycle were:

    - Convert RCU's BUG_ON() and similar calls to WARN_ON() and similar.

    - Replace calls of RCU-bh and RCU-sched update-side functions to
    their vanilla RCU counterparts. This series is a step towards
    complete removal of the RCU-bh and RCU-sched update-side functions.

    ( Note that some of these conversions are going upstream via their
    respective maintainers. )

    - Documentation updates, including a number of flavor-consolidation
    updates from Joel Fernandes.

    - Miscellaneous fixes.

    - Automate generation of the initrd filesystem used for rcutorture
    testing.

    - Convert spin_is_locked() assertions to instead use lockdep.

    ( Note that some of these conversions are going upstream via their
    respective maintainers. )

    - SRCU updates, especially including a fix from Dennis Krein for a
    bag-on-head-class bug.

    - RCU torture-test updates"

    * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (112 commits)
    rcutorture: Don't do busted forward-progress testing
    rcutorture: Use 100ms buckets for forward-progress callback histograms
    rcutorture: Recover from OOM during forward-progress tests
    rcutorture: Print forward-progress test age upon failure
    rcutorture: Print time since GP end upon forward-progress failure
    rcutorture: Print histogram of CB invocation at OOM time
    rcutorture: Print GP age upon forward-progress failure
    rcu: Print per-CPU callback counts for forward-progress failures
    rcu: Account for nocb-CPU callback counts in RCU CPU stall warnings
    rcutorture: Dump grace-period diagnostics upon forward-progress OOM
    rcutorture: Prepare for asynchronous access to rcu_fwd_startat
    torture: Remove unnecessary "ret" variables
    rcutorture: Affinity forward-progress test to avoid housekeeping CPUs
    rcutorture: Break up too-long rcu_torture_fwd_prog() function
    rcutorture: Remove cbflood facility
    torture: Bring any extra CPUs online during kernel startup
    rcutorture: Add call_rcu() flooding forward-progress tests
    rcutorture/formal: Replace synchronize_sched() with synchronize_rcu()
    tools/kernel.h: Replace synchronize_sched() with synchronize_rcu()
    net/decnet: Replace rcu_barrier_bh() with rcu_barrier()
    ...

    Linus Torvalds
     
  • Pull MIPS updates from Paul Burton:
    "Here's the main MIPS pull for Linux 4.21. Core architecture changes
    include:

    - Syscall tables & definitions for unistd.h are now generated by
    scripts, providing greater consistency with other architectures &
    making it easier to add new syscalls.

    - Support for building kernels with no floating point support, upon
    which any userland attempting to use floating point instructions
    will receive a SIGILL. Mostly useful to shrink the kernel & as
    preparation for nanoMIPS support which does not yet include FP.

    - MIPS SIMD Architecture (MSA) vector register context is now exposed
    by ptrace via a new NT_MIPS_MSA regset.

    - ASIDs are now stored as 64b values even for MIPS32 kernels,
    expanding the ASID version field sufficiently that we don't need to
    worry about overflow & avoiding rare issues with reused ASIDs that
    have been observed in the wild.

    - The branch delay slot "emulation" page is now mapped without write
    permission for the user, preventing its use as a nice location for
    attacks to execute malicious code from.

    - Support for ioremap_prot(), primarily to allow gdb or other ptrace
    users the ability to view their tracee's memory using the same
    cache coherency attribute.

    - Optimizations to more cpu_has_* macros, allowing more to be
    compile-time constant where possible.

    - Enable building the whole kernel with UBSAN instrumentation.

    - Enable building the kernel with link-time dead code & data
    elimination.

    Platform specific changes include:

    - The Boston board gains a workaround for DMA prefetching issues with
    the EG20T Platform Controller Hub that it uses.

    - Cleanups to Cavium Octeon code removing about 20k lines of
    redundant code, mostly unused or duplicate register definitions in
    headers.

    - defconfig updates for the DECstation machines, including new
    defconfigs for r4k & 64b machines.

    - Further work on Loongson 3 support.

    - DMA fixes for SiByte machines"

    * tag 'mips_4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux: (95 commits)
    MIPS: math-emu: Write-protect delay slot emulation pages
    MIPS: Remove struct mm_context_t fp_mode_switching field
    mips: generate uapi header and system call table files
    mips: add system call table generation support
    mips: remove syscall table entries
    mips: add +1 to __NR_syscalls in uapi header
    mips: rename scall64-64.S to scall64-n64.S
    mips: remove unused macros
    mips: add __NR_syscalls along with __NR_Linux_syscalls
    MIPS: Expand MIPS32 ASIDs to 64 bits
    MIPS: OCTEON: delete redundant register definitions
    MIPS: OCTEON: cvmx_gmxx_inf_mode: use oldest forward compatible definition
    MIPS: OCTEON: cvmx_mio_fus_dat3: use oldest forward compatible definition
    MIPS: OCTEON: cvmx_pko_mem_debug8: use oldest forward compatible definition
    MIPS: OCTEON: octeon-usb: use common gpio_bit definition
    MIPS: OCTEON: enable all OCTEON drivers in defconfig
    mips: annotate implicit fall throughs
    MIPS: Hardcode cpu_has_mips* where target ISA allows
    MIPS: MT: Remove norps command line parameter
    MIPS: Only include mmzone.h when CONFIG_NEED_MULTIPLE_NODES=y
    ...

    Linus Torvalds
     

22 Dec, 2018

2 commits

  • Jann Horn points out that we're using unsigned int for len in
    seq_buf_puts(), which could potentially overflow if we're passed a
    UINT_MAX sized string.

    The rest of the code already uses size_t, so we should also use that
    in seq_buf_puts() to avoid any issues.

    Link: http://lkml.kernel.org/r/20181019042109.8064-2-mpe@ellerman.id.au

    Suggested-by: Jann Horn
    Signed-off-by: Michael Ellerman
    Signed-off-by: Steven Rostedt (VMware)

    Michael Ellerman
     
  • Currently seq_buf_puts() will happily create a non null-terminated
    string for you in the buffer. This is particularly dangerous if the
    buffer is on the stack.

    For example:

    char buf[8];
    char secret = "secret";
    struct seq_buf s;

    seq_buf_init(&s, buf, sizeof(buf));
    seq_buf_puts(&s, "foo");
    printk("Message is %s\n", buf);

    Can result in:

    Message is fooªªªªªsecret

    We could require all users to memset() their buffer to zero before
    use. But that seems likely to be forgotten and lead to bugs.

    Instead we can change seq_buf_puts() to always leave the buffer in a
    null-terminated state.

    The only downside is that this makes the buffer 1 character smaller
    for seq_buf_puts(), but that seems like a good trade off.

    Link: http://lkml.kernel.org/r/20181019042109.8064-1-mpe@ellerman.id.au

    Acked-by: Kees Cook
    Signed-off-by: Michael Ellerman
    Signed-off-by: Steven Rostedt (VMware)

    Michael Ellerman