04 Apr, 2018

1 commit

  • Pull Kbuild updates from Masahiro Yamada:

    - add a shell script to get Clang version

    - improve portability of build scripts

    - drop always-enabled CONFIG_THIN_ARCHIVE and remove unused code

    - rename built-in.o which is now thin archive to built-in.a

    - process clean/build targets one by one to get along with -j option

    - simplify ld-option

    - improve building with CONFIG_TRIM_UNUSED_KSYMS

    - define KBUILD_MODNAME even for objects shared among multiple modules

    - avoid linking multiple instances of same objects from composite
    objects

    - move to c_flags to include it only for C
    files

    - clean-up various Makefiles

    * tag 'kbuild-v4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (29 commits)
    kbuild: get out of
    kbuild: clean up link rule of composite modules
    kbuild: clean up archive rule of built-in.a
    kbuild: remove partial section mismatch detection for built-in.a
    net: liquidio: clean up Makefile for simpler composite object handling
    lib: zstd: clean up Makefile for simpler composite object handling
    kbuild: link $(real-obj-y) instead of $(obj-y) into built-in.a
    kbuild: rename real-objs-y/m to real-obj-y/m
    kbuild: move modname and modname-multi close to modname_flags
    kbuild: simplify modname calculation
    kbuild: fix modname for composite modules
    kbuild: define KBUILD_MODNAME even if multiple modules share objects
    kbuild: remove unnecessary $(subst $(obj)/, , ...) in modname-multi
    kbuild: Use ls(1) instead of stat(1) to obtain file size
    kbuild: link vmlinux only once for CONFIG_TRIM_UNUSED_KSYMS
    kbuild: move include/config/ksym/* to include/ksym/*
    kbuild: move CONFIG_TRIM_UNUSED_KSYMS code unneeded for external module
    kbuild: restore autoksyms.h touch to the top Makefile
    kbuild: move 'scripts' target below
    kbuild: remove wrong 'touch' in adjust_autoksyms.sh
    ...

    Linus Torvalds
     

03 Apr, 2018

1 commit

  • Pul removal of obsolete architecture ports from Arnd Bergmann:
    "This removes the entire architecture code for blackfin, cris, frv,
    m32r, metag, mn10300, score, and tile, including the associated device
    drivers.

    I have been working with the (former) maintainers for each one to
    ensure that my interpretation was right and the code is definitely
    unused in mainline kernels. Many had fond memories of working on the
    respective ports to start with and getting them included in upstream,
    but also saw no point in keeping the port alive without any users.

    In the end, it seems that while the eight architectures are extremely
    different, they all suffered the same fate: There was one company in
    charge of an SoC line, a CPU microarchitecture and a software
    ecosystem, which was more costly than licensing newer off-the-shelf
    CPU cores from a third party (typically ARM, MIPS, or RISC-V). It
    seems that all the SoC product lines are still around, but have not
    used the custom CPU architectures for several years at this point. In
    contrast, CPU instruction sets that remain popular and have actively
    maintained kernel ports tend to all be used across multiple licensees.

    [ See the new nds32 port merged in the previous commit for the next
    generation of "one company in charge of an SoC line, a CPU
    microarchitecture and a software ecosystem" - Linus ]

    The removal came out of a discussion that is now documented at
    https://lwn.net/Articles/748074/. Unlike the original plans, I'm not
    marking any ports as deprecated but remove them all at once after I
    made sure that they are all unused. Some architectures (notably tile,
    mn10300, and blackfin) are still being shipped in products with old
    kernels, but those products will never be updated to newer kernel
    releases.

    After this series, we still have a few architectures without mainline
    gcc support:

    - unicore32 and hexagon both have very outdated gcc releases, but the
    maintainers promised to work on providing something newer. At least
    in case of hexagon, this will only be llvm, not gcc.

    - openrisc, risc-v and nds32 are still in the process of finishing
    their support or getting it added to mainline gcc in the first
    place. They all have patched gcc-7.3 ports that work to some
    degree, but complete upstream support won't happen before gcc-8.1.
    Csky posted their first kernel patch set last week, their situation
    will be similar

    [ Palmer Dabbelt points out that RISC-V support is in mainline gcc
    since gcc-7, although gcc-7.3.0 is the recommended minimum - Linus ]"

    This really says it all:

    2498 files changed, 95 insertions(+), 467668 deletions(-)

    * tag 'arch-removal' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic: (74 commits)
    MAINTAINERS: UNICORE32: Change email account
    staging: iio: remove iio-trig-bfin-timer driver
    tty: hvc: remove tile driver
    tty: remove bfin_jtag_comm and hvc_bfin_jtag drivers
    serial: remove tile uart driver
    serial: remove m32r_sio driver
    serial: remove blackfin drivers
    serial: remove cris/etrax uart drivers
    usb: Remove Blackfin references in USB support
    usb: isp1362: remove blackfin arch glue
    usb: musb: remove blackfin port
    usb: host: remove tilegx platform glue
    pwm: remove pwm-bfin driver
    i2c: remove bfin-twi driver
    spi: remove blackfin related host drivers
    watchdog: remove bfin_wdt driver
    can: remove bfin_can driver
    mmc: remove bfin_sdh driver
    input: misc: remove blackfin rotary driver
    input: keyboard: remove bf54x driver
    ...

    Linus Torvalds
     

31 Mar, 2018

3 commits

  • Two config options in the lock debugging menu that are probably the most
    frequently used, as far as I am concerned, is the PROVE_LOCKING and
    LOCK_STAT. From a UI perspective, they should be front and center. So
    these two options are now moved to the top of the lock debugging menu.

    The DEBUG_WW_MUTEX_SLOWPATH option is also added to the PROVE_LOCKING
    umbrella.

    Signed-off-by: Waiman Long
    Acked-by: Davidlohr Bueso
    Cc: Andrew Morton
    Cc: Linus Torvalds
    Cc: Paul E. McKenney
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/1522445280-7767-4-git-send-email-longman@redhat.com
    Signed-off-by: Ingo Molnar

    Waiman Long
     
  • There are a couples of lock debugging Kconfig options that depends on
    the following support options:

    - TRACE_IRQFLAGS_SUPPORT
    - STACKTRACE_SUPPORT
    - LOCKDEP_SUPPORT

    That makes those lock debugging options harder to read and understand.
    So a new LOCK_DEBUGGING_SUPPORT option is added that is equivalent to
    the above three options together. That makes the Kconfig.debug file
    more readable.

    Signed-off-by: Waiman Long
    Acked-by: Davidlohr Bueso
    Cc: Andrew Morton
    Cc: Linus Torvalds
    Cc: Paul E. McKenney
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/1522445280-7767-3-git-send-email-longman@redhat.com
    Signed-off-by: Ingo Molnar

    Waiman Long
     
  • For a rwsem, locking can either be exclusive or shared. The corresponding
    exclusive or shared unlock must be used. Otherwise, the protected data
    structures may get corrupted or the lock may be in an inconsistent state.

    In order to detect such anomaly, a new configuration option DEBUG_RWSEMS
    is added which can be enabled to look for such mismatches and print
    warnings that that happens.

    Signed-off-by: Waiman Long
    Acked-by: Davidlohr Bueso
    Cc: Andrew Morton
    Cc: Linus Torvalds
    Cc: Paul E. McKenney
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/1522445280-7767-2-git-send-email-longman@redhat.com
    Signed-off-by: Ingo Molnar

    Waiman Long
     

26 Mar, 2018

2 commits

  • A lot of Kconfig symbols have architecture specific dependencies.
    In those cases that depend on architectures we have already removed,
    they can be omitted.

    Acked-by: Kalle Valo
    Acked-by: Alexandre Belloni
    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • Incremental linking is gone, so rename built-in.o to built-in.a, which
    is the usual extension for archive files.

    This patch does two things, first is a simple search/replace:

    git grep -l 'built-in\.o' | xargs sed -i 's/built-in\.o/built-in\.a/g'

    The second is to invert nesting of nested text manipulations to avoid
    filtering built-in.a out from libs-y2:

    -libs-y2 := $(filter-out %.a, $(patsubst %/, %/built-in.a, $(libs-y)))
    +libs-y2 := $(patsubst %/, %/built-in.a, $(filter-out %.a, $(libs-y)))

    Signed-off-by: Nicholas Piggin
    Signed-off-by: Masahiro Yamada

    Nicholas Piggin
     

10 Mar, 2018

1 commit


08 Mar, 2018

1 commit

  • …/jhogan/metag into asm-generic

    Remove metag architecture

    These patches remove the metag architecture and tightly dependent
    drivers from the kernel. With the 4.16 kernel the ancient gcc 4.2.4
    based metag toolchain we have been using is hitting compiler bugs, so
    now seems a good time to drop it altogether.

    * tag 'metag_remove_2' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jhogan/metag:
    i2c: img-scb: Drop METAG dependency
    media: img-ir: Drop METAG dependency
    watchdog: imgpdc: Drop METAG dependency
    MAINTAINERS/CREDITS: Drop METAG ARCHITECTURE
    tty: Remove metag DA TTY and console driver
    clocksource: Remove metag generic timer driver
    irqchip: Remove metag irqchip drivers
    Drop a bunch of metag references
    docs: Remove remaining references to metag
    docs: Remove metag docs
    metag: Remove arch/metag/

    Signed-off-by: Arnd Bergmann <arnd@arndb.de>

    Arnd Bergmann
     

23 Feb, 2018

1 commit

  • Now that arch/metag/ has been removed, drop a bunch of metag references
    in various codes across the whole tree:
    - VM_GROWSUP and __VM_ARCH_SPECIFIC_1.
    - MT_METAG_* ELF note types.
    - METAG Kconfig dependencies (FRAME_POINTER) and ranges
    (MAX_STACK_SIZE_MB).
    - metag cases in tools (checkstack.pl, recordmcount.c, perf).

    Signed-off-by: James Hogan
    Acked-by: Steven Rostedt (VMware)
    Acked-by: Peter Zijlstra (Intel)
    Reviewed-by: Guenter Roeck
    Cc: Ingo Molnar
    Cc: Arnaldo Carvalho de Melo
    Cc: Alexander Shishkin
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: linux-mm@kvack.org
    Cc: linux-metag@vger.kernel.org

    James Hogan
     

22 Feb, 2018

1 commit

  • Commit d3deafaa8b5c ("lib/: make RUNTIME_TESTS a menuconfig to ease
    disabling it all") causes a regression when using runtime tests due to
    it defaults RUNTIME_TESTING_MENU to not set.

    Link: http://lkml.kernel.org/r/20180214133015.10090-1-anders.roxell@linaro.org
    Fixes: d3deafaa8b5c ("lib/: make RUNTIME_TESTS a menuconfig to easedisabling it all")
    Signed-off-by: Anders Roxell
    Cc: Vincent Legoll
    Cc: Ingo Molnar
    Cc: Byungchul Park
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Anders Roxell
     

10 Feb, 2018

1 commit

  • Pull more Kbuild updates from Masahiro Yamada:
    "Makefile changes:
    - enable unused-variable warning that was wrongly disabled for clang

    Kconfig changes:
    - warn about blank 'help' and fix existing instances
    - fix 'choice' behavior to not write out invisible symbols
    - fix misc weirdness

    Coccinell changes:
    - fix false positive of free after managed memory alloc detection
    - improve performance of NULL dereference detection"

    * tag 'kbuild-v4.16-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (21 commits)
    kconfig: remove const qualifier from sym_expand_string_value()
    kconfig: add xrealloc() helper
    kconfig: send error messages to stderr
    kconfig: echo stdin to stdout if either is redirected
    kconfig: remove check_stdin()
    kconfig: remove 'config*' pattern from .gitignnore
    kconfig: show '?' prompt even if no help text is available
    kconfig: do not write choice values when their dependency becomes n
    coccinelle: deref_null: avoid useless computation
    coccinelle: devm_free: reduce false positives
    kbuild: clang: disable unused variable warnings only when constant
    kconfig: Warn if help text is blank
    nios2: kconfig: Remove blank help text
    arm: vt8500: kconfig: Remove blank help text
    MIPS: kconfig: Remove blank help text
    MIPS: BCM63XX: kconfig: Remove blank help text
    lib/Kconfig.debug: Remove blank help text
    Staging: rtl8192e: kconfig: Remove blank help text
    Staging: rtl8192u: kconfig: Remove blank help text
    mmc: kconfig: Remove blank help text
    ...

    Linus Torvalds
     

07 Feb, 2018

3 commits

  • We get a lot of very large stack frames using gcc-7.0.1 with the default
    -fsanitize-address-use-after-scope --param asan-stack=1 options, which can
    easily cause an overflow of the kernel stack, e.g.

    drivers/gpu/drm/i915/gvt/handlers.c:2434:1: warning: the frame size of 46176 bytes is larger than 3072 bytes
    drivers/net/wireless/ralink/rt2x00/rt2800lib.c:5650:1: warning: the frame size of 23632 bytes is larger than 3072 bytes
    lib/atomic64_test.c:250:1: warning: the frame size of 11200 bytes is larger than 3072 bytes
    drivers/gpu/drm/i915/gvt/handlers.c:2621:1: warning: the frame size of 9208 bytes is larger than 3072 bytes
    drivers/media/dvb-frontends/stv090x.c:3431:1: warning: the frame size of 6816 bytes is larger than 3072 bytes
    fs/fscache/stats.c:287:1: warning: the frame size of 6536 bytes is larger than 3072 bytes

    To reduce this risk, -fsanitize-address-use-after-scope is now split out
    into a separate CONFIG_KASAN_EXTRA Kconfig option, leading to stack
    frames that are smaller than 2 kilobytes most of the time on x86_64. An
    earlier version of this patch also prevented combining KASAN_EXTRA with
    KASAN_INLINE, but that is no longer necessary with gcc-7.0.1.

    All patches to get the frame size below 2048 bytes with CONFIG_KASAN=y
    and CONFIG_KASAN_EXTRA=n have been merged by maintainers now, so we can
    bring back that default now. KASAN_EXTRA=y still causes lots of
    warnings but now defaults to !COMPILE_TEST to disable it in
    allmodconfig, and it remains disabled in all other defconfigs since it
    is a new option. I arbitrarily raise the warning limit for KASAN_EXTRA
    to 3072 to reduce the noise, but an allmodconfig kernel still has around
    50 warnings on gcc-7.

    I experimented a bit more with smaller stack frames and have another
    follow-up series that reduces the warning limit for 64-bit architectures
    to 1280 bytes (without CONFIG_KASAN).

    With earlier versions of this patch series, I also had patches to address
    the warnings we get with KASAN and/or KASAN_EXTRA, using a
    "noinline_if_stackbloat" annotation.

    That annotation now got replaced with a gcc-8 bugfix (see
    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81715) and a workaround for
    older compilers, which means that KASAN_EXTRA is now just as bad as
    before and will lead to an instant stack overflow in a few extreme
    cases.

    This reverts parts of commit 3f181b4d8652 ("lib/Kconfig.debug: disable
    -Wframe-larger-than warnings with KASAN=y"). Two patches in linux-next
    should be merged first to avoid introducing warnings in an allmodconfig
    build:
    3cd890dbe2a4 ("media: dvb-frontends: fix i2c access helpers for KASAN")
    16c3ada89cff ("media: r820t: fix r820t_write_reg for KASAN")

    Do we really need to backport this?

    I think we do: without this patch, enabling KASAN will lead to
    unavoidable kernel stack overflow in certain device drivers when built
    with gcc-7 or higher on linux-4.10+ or any version that contains a
    backport of commit c5caf21ab0cf8. Most people are probably still on
    older compilers, but it will get worse over time as they upgrade their
    distros.

    The warnings we get on kernels older than this should all be for code
    that uses dangerously large stack frames, though most of them do not
    cause an actual stack overflow by themselves.The asan-stack option was
    added in linux-4.0, and commit 3f181b4d8652 ("lib/Kconfig.debug:
    disable -Wframe-larger-than warnings with KASAN=y") effectively turned
    off the warning for allmodconfig kernels, so I would like to see this
    fix backported to any kernels later than 4.0.

    I have done dozens of fixes for individual functions with stack frames
    larger than 2048 bytes with asan-stack, and I plan to make sure that
    all those fixes make it into the stable kernels as well (most are
    already there).

    Part of the complication here is that asan-stack (from 4.0) was
    originally assumed to always require much larger stacks, but that
    turned out to be a combination of multiple gcc bugs that we have now
    worked around and fixed, but sanitize-address-use-after-scope (from
    v4.10) has a much higher inherent stack usage and also suffers from at
    least three other problems that we have analyzed but not yet fixed
    upstream, each of them makes the stack usage more severe than it should
    be.

    Link: http://lkml.kernel.org/r/20171221134744.2295529-1-arnd@arndb.de
    Signed-off-by: Arnd Bergmann
    Acked-by: Andrey Ryabinin
    Cc: Mauro Carvalho Chehab
    Cc: Andrey Ryabinin
    Cc: Alexander Potapenko
    Cc: Dmitry Vyukov
    Cc: Andrey Konovalov
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arnd Bergmann
     
  • No need to get into the submenu to disable all related config entries.

    This makes it easier to disable all RUNTIME_TESTS config options without
    entering the submenu. It will also enable one to see that en/dis-abled
    state from the outside menu.

    This is only intended to change menuconfig UI, not change the config
    dependencies.

    Link: http://lkml.kernel.org/r/20171209162742.7363-1-vincent.legoll@gmail.com
    Signed-off-by: Vincent Legoll
    Cc: Ingo Molnar
    Cc: Byungchul Park
    Cc: Peter Zijlstra
    Cc: "Paul E. McKenney"
    Cc: Josh Poimboeuf
    Cc: Geert Uytterhoeven
    Cc: Randy Dunlap
    Cc: "Luis R. Rodriguez"
    Cc: Nicholas Piggin
    Cc: Thomas Gleixner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vincent Legoll
     
  • As suggested in review comments, rename test_find_bit.c to
    find_bit_benchmark.c.

    Link: http://lkml.kernel.org/r/20171124143040.a44jvhmnaiyedg2i@yury-thinkpad
    Signed-off-by: Yury Norov
    Tested-by: Geert Uytterhoeven
    Cc: Alexey Dobriyan
    Cc: Clement Courbet
    Cc: Matthew Wilcox
    Cc: Rasmus Villemoes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yury Norov
     

02 Feb, 2018

1 commit

  • Blank help texts are probably either a typo, a Kconfig misunderstanding,
    or some kind of half-committing to adding a help text (in which case a
    TODO comment would be clearer, if the help text really can't be added
    right away).

    Best to remove them, IMO.

    Signed-off-by: Ulf Magnusson
    Acked-by: Randy Dunlap
    Signed-off-by: Masahiro Yamada

    Ulf Magnusson
     

01 Feb, 2018

1 commit

  • Pull networking updates from David Miller:

    1) Significantly shrink the core networking routing structures. Result
    of http://vger.kernel.org/~davem/seoul2017_netdev_keynote.pdf

    2) Add netdevsim driver for testing various offloads, from Jakub
    Kicinski.

    3) Support cross-chip FDB operations in DSA, from Vivien Didelot.

    4) Add a 2nd listener hash table for TCP, similar to what was done for
    UDP. From Martin KaFai Lau.

    5) Add eBPF based queue selection to tun, from Jason Wang.

    6) Lockless qdisc support, from John Fastabend.

    7) SCTP stream interleave support, from Xin Long.

    8) Smoother TCP receive autotuning, from Eric Dumazet.

    9) Lots of erspan tunneling enhancements, from William Tu.

    10) Add true function call support to BPF, from Alexei Starovoitov.

    11) Add explicit support for GRO HW offloading, from Michael Chan.

    12) Support extack generation in more netlink subsystems. From Alexander
    Aring, Quentin Monnet, and Jakub Kicinski.

    13) Add 1000BaseX, flow control, and EEE support to mvneta driver. From
    Russell King.

    14) Add flow table abstraction to netfilter, from Pablo Neira Ayuso.

    15) Many improvements and simplifications to the NFP driver bpf JIT,
    from Jakub Kicinski.

    16) Support for ipv6 non-equal cost multipath routing, from Ido
    Schimmel.

    17) Add resource abstration to devlink, from Arkadi Sharshevsky.

    18) Packet scheduler classifier shared filter block support, from Jiri
    Pirko.

    19) Avoid locking in act_csum, from Davide Caratti.

    20) devinet_ioctl() simplifications from Al viro.

    21) More TCP bpf improvements from Lawrence Brakmo.

    22) Add support for onlink ipv6 route flag, similar to ipv4, from David
    Ahern.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1925 commits)
    tls: Add support for encryption using async offload accelerator
    ip6mr: fix stale iterator
    net/sched: kconfig: Remove blank help texts
    openvswitch: meter: Use 64-bit arithmetic instead of 32-bit
    tcp_nv: fix potential integer overflow in tcpnv_acked
    r8169: fix RTL8168EP take too long to complete driver initialization.
    qmi_wwan: Add support for Quectel EP06
    rtnetlink: enable IFLA_IF_NETNSID for RTM_NEWLINK
    ipmr: Fix ptrdiff_t print formatting
    ibmvnic: Wait for device response when changing MAC
    qlcnic: fix deadlock bug
    tcp: release sk_frag.page in tcp_disconnect
    ipv4: Get the address of interface correctly.
    net_sched: gen_estimator: fix lockdep splat
    net: macb: Handle HRESP error
    net/mlx5e: IPoIB, Fix copy-paste bug in flow steering refactoring
    ipv6: addrconf: break critical section in addrconf_verify_rtnl()
    ipv6: change route cache aging logic
    i40e/i40evf: Update DESC_NEEDED value to reflect larger value
    bnxt_en: cleanup DIM work on device shutdown
    ...

    Linus Torvalds
     

31 Jan, 2018

1 commit


13 Jan, 2018

2 commits

  • Support in-kernel fault-injection framework via debugfs.
    This allows you to inject a conditional error to specified
    function using debugfs interfaces.

    Here is the result of test script described in
    Documentation/fault-injection/fault-injection.txt

    ===========
    # ./test_fail_function.sh
    1+0 records in
    1+0 records out
    1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.0227404 s, 46.1 MB/s
    btrfs-progs v4.4
    See http://btrfs.wiki.kernel.org for more information.

    Label: (null)
    UUID: bfa96010-12e9-4360-aed0-42eec7af5798
    Node size: 16384
    Sector size: 4096
    Filesystem size: 1001.00MiB
    Block group profiles:
    Data: single 8.00MiB
    Metadata: DUP 58.00MiB
    System: DUP 12.00MiB
    SSD detected: no
    Incompat features: extref, skinny-metadata
    Number of devices: 1
    Devices:
    ID SIZE PATH
    1 1001.00MiB /dev/loop2

    mount: mount /dev/loop2 on /opt/tmpmnt failed: Cannot allocate memory
    SUCCESS!
    ===========

    Signed-off-by: Masami Hiramatsu
    Reviewed-by: Josef Bacik
    Signed-off-by: Alexei Starovoitov

    Masami Hiramatsu
     
  • Since error-injection framework is not limited to be used
    by kprobes, nor bpf. Other kernel subsystems can use it
    freely for checking safeness of error-injection, e.g.
    livepatch, ftrace etc.
    So this separate error-injection framework from kprobes.

    Some differences has been made:

    - "kprobe" word is removed from any APIs/structures.
    - BPF_ALLOW_ERROR_INJECTION() is renamed to
    ALLOW_ERROR_INJECTION() since it is not limited for BPF too.
    - CONFIG_FUNCTION_ERROR_INJECTION is the config item of this
    feature. It is automatically enabled if the arch supports
    error injection feature for kprobe or ftrace etc.

    Signed-off-by: Masami Hiramatsu
    Reviewed-by: Josef Bacik
    Signed-off-by: Alexei Starovoitov

    Masami Hiramatsu
     

12 Dec, 2017

2 commits

  • This code (CONFIG_LOCKDEP_CROSSRELEASE=y and CONFIG_LOCKDEP_COMPLETIONS=y),
    while it found a number of old bugs initially, was also causing too many
    false positives that caused people to disable lockdep - which is arguably
    a worse overall outcome.

    If we disable cross-release by default but keep the code upstream then
    in practice the most likely outcome is that we'll allow the situation
    to degrade gradually, by allowing entropy to introduce more and more
    false positives, until it overwhelms maintenance capacity.

    Another bad side effect was that people were trying to work around
    the false positives by uglifying/complicating unrelated code. There's
    a marked difference between annotating locking operations and
    uglifying good code just due to bad lock debugging code ...

    This gradual decrease in quality happened to a number of debugging
    facilities in the kernel, and lockdep is pretty complex already,
    so we cannot risk this outcome.

    Either cross-release checking can be done right with no false positives,
    or it should not be included in the upstream kernel.

    ( Note that it might make sense to maintain it out of tree and go through
    the false positives every now and then and see whether new bugs were
    introduced. )

    Cc: Byungchul Park
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • Distros have been shipping with CONFIG_STRICT_DEVMEM=y for years now. It
    is probably time to flip this default for x86 and arm64.

    Signed-off-by: Kees Cook
    Acked-by: Laura Abbott
    Cc: Andrew Morton
    Cc: Linus Torvalds
    Cc: Mark Rutland
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: Will Deacon
    Cc: kernel-hardening@lists.openwall.com
    Link: http://lkml.kernel.org/r/20171201201000.GA44539@beast
    Signed-off-by: Ingo Molnar

    Kees Cook
     

18 Nov, 2017

2 commits

  • The flag enables Clang instrumentation of comparison operations
    (currently not supported by GCC). This instrumentation is needed by the
    new KCOV device to collect comparison operands.

    Link: http://lkml.kernel.org/r/20171011095459.70721-2-glider@google.com
    Signed-off-by: Victor Chibotaru
    Signed-off-by: Alexander Potapenko
    Cc: Dmitry Vyukov
    Cc: Andrey Konovalov
    Cc: Mark Rutland
    Cc: Alexander Popov
    Cc: Andrey Ryabinin
    Cc: Kees Cook
    Cc: Vegard Nossum
    Cc: Quentin Casasnovas
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Victor Chibotaru
     
  • find_bit functions are widely used in the kernel, including hot paths.
    This module tests performance of those functions in 2 typical scenarios:
    randomly filled bitmap with relatively equal distribution of set and
    cleared bits, and sparse bitmap which has 1 set bit for 500 cleared
    bits.

    On ThunderX machine:

    Start testing find_bit() with random-filled bitmap
    find_next_bit: 240043 cycles, 164062 iterations
    find_next_zero_bit: 312848 cycles, 163619 iterations
    find_last_bit: 193748 cycles, 164062 iterations
    find_first_bit: 177720874 cycles, 164062 iterations

    Start testing find_bit() with sparse bitmap
    find_next_bit: 3633 cycles, 656 iterations
    find_next_zero_bit: 620399 cycles, 327025 iterations
    find_last_bit: 3038 cycles, 656 iterations
    find_first_bit: 691407 cycles, 656 iterations

    [arnd@arndb.de: use correct format string for find-bit tests]
    Link: http://lkml.kernel.org/r/20171113135605.3166307-1-arnd@arndb.de
    Link: http://lkml.kernel.org/r/20171109140714.13168-1-ynorov@caviumnetworks.com
    Signed-off-by: Yury Norov
    Signed-off-by: Arnd Bergmann
    Reviewed-by: Clement Courbet
    Cc: Alexey Dobriyan
    Cc: Matthew Wilcox
    Cc: Rasmus Villemoes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yury Norov
     

17 Nov, 2017

1 commit

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

    Not many here, mostly all are debugfs fixes to resolve some
    long-reported problems with files going away with references to them
    in userspace. There's also some SPDX cleanups for the debugfs code, as
    well as a few other minor driver core changes for issues reported by
    people.

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

    * tag 'driver-core-4.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
    driver core: Fix device link deferred probe
    debugfs: Remove redundant license text
    debugfs: add SPDX identifiers to all debugfs files
    debugfs: defer debugfs_fsdata allocation to first usage
    debugfs: call debugfs_real_fops() only after debugfs_file_get()
    debugfs: purge obsolete SRCU based removal protection
    IB/hfi1: convert to debugfs_file_get() and -put()
    debugfs: convert to debugfs_file_get() and -put()
    debugfs: debugfs_real_fops(): drop __must_hold sparse annotation
    debugfs: implement per-file removal protection
    debugfs: add support for more elaborate ->d_fsdata
    driver core: Move device_links_purge() after bus_remove_device()
    arch_topology: Fix section miss match warning due to free_raw_capacity()
    driver-core: pr_err() strings should end with newlines

    Linus Torvalds
     

16 Nov, 2017

1 commit

  • Fix up makefiles, remove references, and git rm kmemcheck.

    Link: http://lkml.kernel.org/r/20171007030159.22241-4-alexander.levin@verizon.com
    Signed-off-by: Sasha Levin
    Cc: Steven Rostedt
    Cc: Vegard Nossum
    Cc: Pekka Enberg
    Cc: Michal Hocko
    Cc: Eric W. Biederman
    Cc: Alexander Potapenko
    Cc: Tim Hansen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Levin, Alexander (Sasha Levin)
     

14 Nov, 2017

1 commit

  • Pull x86 core updates from Ingo Molnar:
    "Note that in this cycle most of the x86 topics interacted at a level
    that caused them to be merged into tip:x86/asm - but this should be a
    temporary phenomenon, hopefully we'll back to the usual patterns in
    the next merge window.

    The main changes in this cycle were:

    Hardware enablement:

    - Add support for the Intel UMIP (User Mode Instruction Prevention)
    CPU feature. This is a security feature that disables certain
    instructions such as SGDT, SLDT, SIDT, SMSW and STR. (Ricardo Neri)

    [ Note that this is disabled by default for now, there are some
    smaller enhancements in the pipeline that I'll follow up with in
    the next 1-2 days, which allows this to be enabled by default.]

    - Add support for the AMD SEV (Secure Encrypted Virtualization) CPU
    feature, on top of SME (Secure Memory Encryption) support that was
    added in v4.14. (Tom Lendacky, Brijesh Singh)

    - Enable new SSE/AVX/AVX512 CPU features: AVX512_VBMI2, GFNI, VAES,
    VPCLMULQDQ, AVX512_VNNI, AVX512_BITALG. (Gayatri Kammela)

    Other changes:

    - A big series of entry code simplifications and enhancements (Andy
    Lutomirski)

    - Make the ORC unwinder default on x86 and various objtool
    enhancements. (Josh Poimboeuf)

    - 5-level paging enhancements (Kirill A. Shutemov)

    - Micro-optimize the entry code a bit (Borislav Petkov)

    - Improve the handling of interdependent CPU features in the early
    FPU init code (Andi Kleen)

    - Build system enhancements (Changbin Du, Masahiro Yamada)

    - ... plus misc enhancements, fixes and cleanups"

    * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (118 commits)
    x86/build: Make the boot image generation less verbose
    selftests/x86: Add tests for the STR and SLDT instructions
    selftests/x86: Add tests for User-Mode Instruction Prevention
    x86/traps: Fix up general protection faults caused by UMIP
    x86/umip: Enable User-Mode Instruction Prevention at runtime
    x86/umip: Force a page fault when unable to copy emulated result to user
    x86/umip: Add emulation code for UMIP instructions
    x86/cpufeature: Add User-Mode Instruction Prevention definitions
    x86/insn-eval: Add support to resolve 16-bit address encodings
    x86/insn-eval: Handle 32-bit address encodings in virtual-8086 mode
    x86/insn-eval: Add wrapper function for 32 and 64-bit addresses
    x86/insn-eval: Add support to resolve 32-bit address encodings
    x86/insn-eval: Compute linear address in several utility functions
    resource: Fix resource_size.cocci warnings
    X86/KVM: Clear encryption attribute when SEV is active
    X86/KVM: Decrypt shared per-cpu variables when SEV is active
    percpu: Introduce DEFINE_PER_CPU_DECRYPTED
    x86: Add support for changing memory encryption attribute in early boot
    x86/io: Unroll string I/O when SEV is active
    x86/boot: Add early boot support when running with SEV active
    ...

    Linus Torvalds
     

08 Nov, 2017

1 commit


25 Oct, 2017

2 commits

  • Add a Kconfig knob that enables the lockdep "crossrelease_fullstack" boot parameter.

    Suggested-by: Ingo Molnar
    Signed-off-by: Byungchul Park
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: amir73il@gmail.com
    Cc: axboe@kernel.dk
    Cc: darrick.wong@oracle.com
    Cc: david@fromorbit.com
    Cc: hch@infradead.org
    Cc: idryomov@gmail.com
    Cc: johan@kernel.org
    Cc: johannes.berg@intel.com
    Cc: kernel-team@lge.com
    Cc: linux-block@vger.kernel.org
    Cc: linux-fsdevel@vger.kernel.org
    Cc: linux-mm@kvack.org
    Cc: linux-xfs@vger.kernel.org
    Cc: oleg@redhat.com
    Cc: tj@kernel.org
    Link: http://lkml.kernel.org/r/1508921765-15396-7-git-send-email-byungchul.park@lge.com
    Signed-off-by: Ingo Molnar

    Byungchul Park
     
  • …FIG_LOCKDEP_COMPLETIONS

    Now that the performance regression is fixed, re-enable
    CONFIG_LOCKDEP_CROSSRELEASE=y and CONFIG_LOCKDEP_COMPLETIONS=y.

    Signed-off-by: Byungchul Park <byungchul.park@lge.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: amir73il@gmail.com
    Cc: axboe@kernel.dk
    Cc: darrick.wong@oracle.com
    Cc: david@fromorbit.com
    Cc: hch@infradead.org
    Cc: idryomov@gmail.com
    Cc: johan@kernel.org
    Cc: johannes.berg@intel.com
    Cc: kernel-team@lge.com
    Cc: linux-block@vger.kernel.org
    Cc: linux-fsdevel@vger.kernel.org
    Cc: linux-mm@kvack.org
    Cc: linux-xfs@vger.kernel.org
    Cc: oleg@redhat.com
    Cc: tj@kernel.org
    Link: http://lkml.kernel.org/r/1508921765-15396-6-git-send-email-byungchul.park@lge.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Byungchul Park
     

23 Oct, 2017

1 commit


15 Oct, 2017

1 commit


14 Oct, 2017

3 commits

  • Johan Hovold reported a big lockdep slowdown on his system, caused by lockdep:

    > I had noticed that the BeagleBone Black boot time appeared to have
    > increased significantly with 4.14 and yesterday I finally had time to
    > investigate it.
    >
    > Boot time (from "Linux version" to login prompt) had in fact doubled
    > since 4.13 where it took 17 seconds (with my current config) compared to
    > the 35 seconds I now see with 4.14-rc4.
    >
    > I quick bisect pointed to lockdep and specifically the following commit:
    >
    > 28a903f63ec0 ("locking/lockdep: Handle non(or multi)-acquisition of a crosslock")

    Because the final v4.14 release is close, disable the cross-release lockdep
    features for now.

    Bisected-by: Johan Hovold
    Debugged-by: Johan Hovold
    Reported-by: Johan Hovold
    Cc: Arnd Bergmann
    Cc: Byungchul Park
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: Tony Lindgren
    Cc: kernel-team@lge.com
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-mm@kvack.org
    Cc: linux-omap@vger.kernel.org
    Link: http://lkml.kernel.org/r/20171014072659.f2yr6mhm5ha3eou7@gmail.com
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • Rename the unwinder config options from:

    CONFIG_ORC_UNWINDER
    CONFIG_FRAME_POINTER_UNWINDER
    CONFIG_GUESS_UNWINDER

    to:

    CONFIG_UNWINDER_ORC
    CONFIG_UNWINDER_FRAME_POINTER
    CONFIG_UNWINDER_GUESS

    ... in order to give them a more logical config namespace.

    Suggested-by: Ingo Molnar
    Signed-off-by: Josh Poimboeuf
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/73972fc7e2762e91912c6b9584582703d6f1b8cc.1507924831.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     
  • Expand the "Runtime testing" menu by including more entries inside it
    instead of after it. This is just Kconfig symbol movement.

    This causes the (arch-independent) Runtime tests to be presented
    (listed) all in one place instead of in multiple places.

    Link: http://lkml.kernel.org/r/c194e5c4-2042-bf94-a2d8-7aa13756e257@infradead.org
    Signed-off-by: Randy Dunlap
    Acked-by: Kees Cook
    Cc: Dave Hansen
    Cc: "Luis R. Rodriguez"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     

23 Sep, 2017

1 commit

  • The parisc architecture has larger stack frames than most other
    architectures on 32-bit kernels.

    Increase the maximum allowed stack frame to 1280 bytes for parisc to
    avoid warnings in the do_sys_poll() and pat_memconfig() functions.

    Signed-off-by: Helge Deller

    Helge Deller
     

09 Sep, 2017

1 commit

  • Add a test module that allows testing that CONFIG_DEBUG_VIRTUAL works
    correctly, at least that it can catch invalid calls to virt_to_phys()
    against the non-linear kernel virtual address map.

    Link: http://lkml.kernel.org/r/20170808164035.26725-1-f.fainelli@gmail.com
    Signed-off-by: Florian Fainelli
    Cc: "Luis R. Rodriguez"
    Cc: Kees Cook
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Florian Fainelli
     

05 Sep, 2017

2 commits

  • Pull locking updates from Ingo Molnar:

    - Add 'cross-release' support to lockdep, which allows APIs like
    completions, where it's not the 'owner' who releases the lock, to be
    tracked. It's all activated automatically under
    CONFIG_PROVE_LOCKING=y.

    - Clean up (restructure) the x86 atomics op implementation to be more
    readable, in preparation of KASAN annotations. (Dmitry Vyukov)

    - Fix static keys (Paolo Bonzini)

    - Add killable versions of down_read() et al (Kirill Tkhai)

    - Rework and fix jump_label locking (Marc Zyngier, Paolo Bonzini)

    - Rework (and fix) tlb_flush_pending() barriers (Peter Zijlstra)

    - Remove smp_mb__before_spinlock() and convert its usages, introduce
    smp_mb__after_spinlock() (Peter Zijlstra)

    * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (56 commits)
    locking/lockdep/selftests: Fix mixed read-write ABBA tests
    sched/completion: Avoid unnecessary stack allocation for COMPLETION_INITIALIZER_ONSTACK()
    acpi/nfit: Fix COMPLETION_INITIALIZER_ONSTACK() abuse
    locking/pvqspinlock: Relax cmpxchg's to improve performance on some architectures
    smp: Avoid using two cache lines for struct call_single_data
    locking/lockdep: Untangle xhlock history save/restore from task independence
    locking/refcounts, x86/asm: Disable CONFIG_ARCH_HAS_REFCOUNT for the time being
    futex: Remove duplicated code and fix undefined behaviour
    Documentation/locking/atomic: Finish the document...
    locking/lockdep: Fix workqueue crossrelease annotation
    workqueue/lockdep: 'Fix' flush_work() annotation
    locking/lockdep/selftests: Add mixed read-write ABBA tests
    mm, locking/barriers: Clarify tlb_flush_pending() barriers
    locking/lockdep: Make CONFIG_LOCKDEP_CROSSRELEASE and CONFIG_LOCKDEP_COMPLETIONS truly non-interactive
    locking/lockdep: Explicitly initialize wq_barrier::done::map
    locking/lockdep: Rename CONFIG_LOCKDEP_COMPLETE to CONFIG_LOCKDEP_COMPLETIONS
    locking/lockdep: Reword title of LOCKDEP_CROSSRELEASE config
    locking/lockdep: Make CONFIG_LOCKDEP_CROSSRELEASE part of CONFIG_PROVE_LOCKING
    locking/refcounts, x86/asm: Implement fast refcount overflow protection
    locking/lockdep: Fix the rollback and overwrite detection logic in crossrelease
    ...

    Linus Torvalds
     
  • Pull x86 asm updates from Ingo Molnar:

    - Introduce the ORC unwinder, which can be enabled via
    CONFIG_ORC_UNWINDER=y.

    The ORC unwinder is a lightweight, Linux kernel specific debuginfo
    implementation, which aims to be DWARF done right for unwinding.
    Objtool is used to generate the ORC unwinder tables during build, so
    the data format is flexible and kernel internal: there's no
    dependency on debuginfo created by an external toolchain.

    The ORC unwinder is almost two orders of magnitude faster than the
    (out of tree) DWARF unwinder - which is important for perf call graph
    profiling. It is also significantly simpler and is coded defensively:
    there has not been a single ORC related kernel crash so far, even
    with early versions. (knock on wood!)

    But the main advantage is that enabling the ORC unwinder allows
    CONFIG_FRAME_POINTERS to be turned off - which speeds up the kernel
    measurably:

    With frame pointers disabled, GCC does not have to add frame pointer
    instrumentation code to every function in the kernel. The kernel's
    .text size decreases by about 3.2%, resulting in better cache
    utilization and fewer instructions executed, resulting in a broad
    kernel-wide speedup. Average speedup of system calls should be
    roughly in the 1-3% range - measurements by Mel Gorman [1] have shown
    a speedup of 5-10% for some function execution intense workloads.

    The main cost of the unwinder is that the unwinder data has to be
    stored in RAM: the memory cost is 2-4MB of RAM, depending on kernel
    config - which is a modest cost on modern x86 systems.

    Given how young the ORC unwinder code is it's not enabled by default
    - but given the performance advantages the plan is to eventually make
    it the default unwinder on x86.

    See Documentation/x86/orc-unwinder.txt for more details.

    - Remove lguest support: its intended role was that of a temporary
    proof of concept for virtualization, plus its removal will enable the
    reduction (removal) of the paravirt API as well, so Rusty agreed to
    its removal. (Juergen Gross)

    - Clean up and fix FSGS related functionality (Andy Lutomirski)

    - Clean up IO access APIs (Andy Shevchenko)

    - Enhance the symbol namespace (Jiri Slaby)

    * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (47 commits)
    objtool: Handle GCC stack pointer adjustment bug
    x86/entry/64: Use ENTRY() instead of ALIGN+GLOBAL for stub32_clone()
    x86/fpu/math-emu: Add ENDPROC to functions
    x86/boot/64: Extract efi_pe_entry() from startup_64()
    x86/boot/32: Extract efi_pe_entry() from startup_32()
    x86/lguest: Remove lguest support
    x86/paravirt/xen: Remove xen_patch()
    objtool: Fix objtool fallthrough detection with function padding
    x86/xen/64: Fix the reported SS and CS in SYSCALL
    objtool: Track DRAP separately from callee-saved registers
    objtool: Fix validate_branch() return codes
    x86: Clarify/fix no-op barriers for text_poke_bp()
    x86/switch_to/64: Rewrite FS/GS switching yet again to fix AMD CPUs
    selftests/x86/fsgsbase: Test selectors 1, 2, and 3
    x86/fsgsbase/64: Report FSBASE and GSBASE correctly in core dumps
    x86/fsgsbase/64: Fully initialize FS and GS state in start_thread_common
    x86/asm: Fix UNWIND_HINT_REGS macro for older binutils
    x86/asm/32: Fix regs_get_register() on segment registers
    x86/xen/64: Rearrange the SYSCALL entries
    x86/asm/32: Remove a bunch of '& 0xffff' from pt_regs segment reads
    ...

    Linus Torvalds
     

25 Aug, 2017

1 commit