07 Feb, 2018

13 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
     
  • Similarly to type mismatch checks, new GCC 8.x and Clang also changed for
    ABI for returns_nonnull checks. While we can update our code to conform
    the new ABI it's more reasonable to just remove it. Because it's just
    dead code, we don't have any single user of returns_nonnull attribute in
    the whole kernel.

    And AFAIU the advantage that this attribute could bring would be mitigated
    by -fno-delete-null-pointer-checks cflag that we use to build the kernel.
    So it's unlikely we will have a lot of returns_nonnull attribute in
    future.

    So let's just remove the code, it has no use.

    [aryabinin@virtuozzo.com: fix warning]
    Link: http://lkml.kernel.org/r/20180122165711.11510-1-aryabinin@virtuozzo.com
    Link: http://lkml.kernel.org/r/20180119152853.16806-2-aryabinin@virtuozzo.com
    Signed-off-by: Andrey Ryabinin
    Cc: Sodagudi Prasad
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrey Ryabinin
     
  • Some structure definitions that use macros trip the OPEN_BRACE test.

    e.g. +struct bpf_map_def SEC("maps") control_map = {

    Improve the test by using $balanced_parens instead of a .*

    Miscellanea:

    o Use $sline so any comments are ignored
    o Correct the message output from declaration to definition
    o Remove unnecessary parentheses

    Link: http://lkml.kernel.org/r/db9b772999d1d2fbda3b9ee24bbca81a87837e13.1517543491.git.joe@perches.com
    Signed-off-by: Joe Perches
    Reported-by: Song Liu
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Using an open bracket after what seems to be a declaration can also be a
    function definition and declaration argument line continuation so remove
    the open bracket from the possible declaration/definition matching.

    e.g.:
    int foobar(int a;
    int *b[]);

    Link: http://lkml.kernel.org/r/1515704479.9619.171.camel@perches.com
    Signed-off-by: Joe Perches
    Reported-by: Sven Eckelmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Greg KH doesn't like this test so exclude the staging directory from the
    implied --strict only test unless --strict is actually used on the
    command-line.

    Link: http://lkml.kernel.org/r/1515704034.9619.165.camel@perches.com
    Signed-off-by: Joe Perches
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Declarations should start on a tabstop too.

    Link: http://lkml.kernel.org/r/1b5f97673f36595956ad43329f77bf1a5546d2ff.1513976662.git.joe@perches.com
    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • DEVICE_ATTR is a declaration macro that has a few alternate and
    preferred forms like DEVICE_ATTR_RW, DEVICE_ATTR_RO, and DEVICE_ATTR.

    As well, many uses of DEVICE_ATTR could use the preferred forms when the
    show or store functions are also named in a regular form.

    Suggest the preferred forms when appropriate.

    Also emit a permissions warning if the the permissions are not the
    typical 0644, 0444, or 0200.

    Link: http://lkml.kernel.org/r/725864f363d91d1e1e6894a39fb57662eabd6d65.1513803306.git.joe@perches.com
    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Given this patch context,

    +#define EFI_ST_DISK_IMG { \
    + 0x00000240, "\xbe\x5b\x7c\xac\x22\xc0\x74\x0b" /* .[|.".t. */ \
    + }

    the current code misreports a quoted string line continuation defect as
    there is a single quote in comment.

    The 'raw' line should not be tested for quote count, the comment
    substituted line should be instead.

    Link: http://lkml.kernel.org/r/13f2735df10c33ca846e26f42f5cce6618157200.1513698599.git.joe@perches.com
    Signed-off-by: Joe Perches
    Reported-by: Heinrich Schuchardt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • module_param and create_proc uses with a permissions use of a single 0 are
    "special" and should not emit any warning.

    module_param uses with permission 0 are not visible in sysfs

    create_proc uses with permission 0 use a default permission

    Link: http://lkml.kernel.org/r/b6583611bb529ea6f6d43786827fddbabbab0a71.1513190059.git.joe@perches.com
    Signed-off-by: Bartosz Golaszewski
    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Allow lines with URL to exceed the 80 char limit for improved interaction
    in adaption to ongoing but undocumented practice.

    $ git grep -E '://\S{77}.*' -- '*.[ch]'

    As per RFC3986 [1], the URL format allows for alphanum, +, - and .
    characters in the scheme before the separator :// as long as it starts
    with a letter (e.g. https, git, f.-+).

    Recognition of URIs without more context information is prone to false
    positives and thus currently left out of the heuristics.

    $rawline is used in the check as comments are removed from $line.

    [1] https://tools.ietf.org/html/rfc3986#section-3.1

    Link: http://lkml.kernel.org/r/1511355432.12667.15.camel@elementarea.net
    Signed-off-by: Andreas Brauchli
    Acked-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andreas Brauchli
     
  • clang's AddressSanitizer implementation adds redzones on either side of
    alloca()ed buffers. These redzones are 32-byte aligned and at least 32
    bytes long.

    __asan_alloca_poison() is passed the size and address of the allocated
    buffer, *excluding* the redzones on either side. The left redzone will
    always be to the immediate left of this buffer; but AddressSanitizer may
    need to add padding between the end of the buffer and the right redzone.
    If there are any 8-byte chunks inside this padding, we should poison
    those too.

    __asan_allocas_unpoison() is just passed the top and bottom of the dynamic
    stack area, so unpoisoning is simpler.

    Link: http://lkml.kernel.org/r/20171204191735.132544-4-paullawrence@google.com
    Signed-off-by: Greg Hackmann
    Signed-off-by: Paul Lawrence
    Acked-by: Andrey Ryabinin
    Cc: Alexander Potapenko
    Cc: Dmitry Vyukov
    Cc: Masahiro Yamada
    Cc: Matthias Kaehlcke
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul Lawrence
     
  • LLVM doesn't understand GCC-style paramters ("--param asan-foo=bar"), thus
    we currently we don't use inline/globals/stack instrumentation when
    building the kernel with clang.

    Add support for LLVM-style parameters ("-mllvm -asan-foo=bar") to enable
    all KASAN features.

    Link: http://lkml.kernel.org/r/20171204191735.132544-3-paullawrence@google.com
    Signed-off-by: Andrey Ryabinin
    Signed-off-by: Paul Lawrence
    Reviewed-by: Alexander Potapenko
    Cc: Dmitry Vyukov
    Cc: Greg Hackmann
    Cc: Masahiro Yamada
    Cc: Matthias Kaehlcke
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrey Ryabinin
     
  • With KASAN enabled the kernel has two different memset() functions, one
    with KASAN checks (memset) and one without (__memset). KASAN uses some
    macro tricks to use the proper version where required. For example
    memset() calls in mm/slub.c are without KASAN checks, since they operate
    on poisoned slab object metadata.

    The issue is that clang emits memset() calls even when there is no
    memset() in the source code. They get linked with improper memset()
    implementation and the kernel fails to boot due to a huge amount of KASAN
    reports during early boot stages.

    The solution is to add -fno-builtin flag for files with KASAN_SANITIZE :=
    n marker.

    Link: http://lkml.kernel.org/r/8ffecfffe04088c52c42b92739c2bd8a0bcb3f5e.1516384594.git.andreyknvl@google.com
    Signed-off-by: Andrey Konovalov
    Acked-by: Nick Desaulniers
    Cc: Masahiro Yamada
    Cc: Michal Marek
    Cc: Andrey Ryabinin
    Cc: Alexander Potapenko
    Cc: Dmitry Vyukov
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrey Konovalov
     

02 Feb, 2018

5 commits

  • Pull printk updates from Petr Mladek:

    - Add a console_msg_format command line option:

    The value "default" keeps the old "[time stamp] text\n" format. The
    value "syslog" allows to see the syslog-like "[timestamp] text" format.

    This feature was requested by people doing regression tests, for
    example, 0day robot. They want to have both filtered and full logs
    at hands.

    - Reduce the risk of softlockup:

    Pass the console owner in a busy loop.

    This is a new approach to the old problem. It was first proposed by
    Steven Rostedt on Kernel Summit 2017. It marks a context in which
    the console_lock owner calls console drivers and could not sleep.
    On the other side, printk() callers could detect this state and use
    a busy wait instead of a simple console_trylock(). Finally, the
    console_lock owner checks if there is a busy waiter at the end of
    the special context and eventually passes the console_lock to the
    waiter.

    The hand-off works surprisingly well and helps in many situations.
    Well, there is still a possibility of the softlockup, for example,
    when the flood of messages stops and the last owner still has too
    much to flush.

    There is increasing number of people having problems with
    printk-related softlockups. We might eventually need to get better
    solution. Anyway, this looks like a good start and promising
    direction.

    - Do not allow to schedule in console_unlock() called from printk():

    This reverts an older controversial commit. The reschedule helped
    to avoid softlockups. But it also slowed down the console output.
    This patch is obsoleted by the new console waiter logic described
    above. In fact, the reschedule made the hand-off less effective.

    - Deprecate "%pf" and "%pF" format specifier:

    It was needed on ia64, ppc64 and parisc64 to dereference function
    descriptors and show the real function address. It is done
    transparently by "%ps" and "pS" format specifier now.

    Sergey Senozhatsky found that all the function descriptors were in
    a special elf section and could be easily detected.

    - Remove printk_symbol() API:

    It has been obsoleted by "%pS" format specifier, and this change
    helped to remove few continuous lines and a less intuitive old API.

    - Remove redundant memsets:

    Sergey removed unnecessary memset when processing printk.devkmsg
    command line option.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/pmladek/printk: (27 commits)
    printk: drop redundant devkmsg_log_str memsets
    printk: Never set console_may_schedule in console_trylock()
    printk: Hide console waiter logic into helpers
    printk: Add console owner and waiter logic to load balance console writes
    kallsyms: remove print_symbol() function
    checkpatch: add pF/pf deprecation warning
    symbol lookup: introduce dereference_symbol_descriptor()
    parisc64: Add .opd based function descriptor dereference
    powerpc64: Add .opd based function descriptor dereference
    ia64: Add .opd based function descriptor dereference
    sections: split dereference_function_descriptor()
    openrisc: Fix conflicting types for _exext and _stext
    lib: do not use print_symbol()
    irq debug: do not use print_symbol()
    sysfs: do not use print_symbol()
    drivers: do not use print_symbol()
    x86: do not use print_symbol()
    unicore32: do not use print_symbol()
    sh: do not use print_symbol()
    mn10300: do not use print_symbol()
    ...

    Linus Torvalds
     
  • Pull Kconfig updates from Masahiro Yamada:
    "A pretty big batch of Kconfig updates.

    I have to mention the lexer and parser of Kconfig are now built from
    real .l and .y sources. So, flex and bison are the requirement for
    building the kernel. Both of them (unlike gperf) have been stable for
    a long time. This change has been tested several weeks in linux-next,
    and I did not receive any problem report about this.

    Summary:

    - add checks for mistakes, like the choice default is not in choice,
    help is doubled

    - document data structure and complex code

    - fix various memory leaks

    - change Makefile to build lexer and parser instead of using
    pre-generated C files

    - drop 'boolean' keyword, which is equivalent to 'bool'

    - use default 'yy' prefix and remove unneeded Make variables

    - fix gettext() check for xconfig

    - announce that oldnoconfig will be finally removed

    - make 'Selected by:' and 'Implied by' readable in help and search
    result

    - hide silentoldconfig from 'make help' to stop confusing people

    - fix misc things and cleanups"

    * tag 'kconfig-v4.16' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (37 commits)
    kconfig: Remove silentoldconfig from help and docs; fix kconfig/conf's help
    kconfig: make "Selected by:" and "Implied by:" readable
    kconfig: announce removal of oldnoconfig if used
    kconfig: fix make xconfig when gettext is missing
    kconfig: Clarify menu and 'if' dependency propagation
    kconfig: Document 'if' flattening logic
    kconfig: Clarify choice dependency propagation
    kconfig: Document SYMBOL_OPTIONAL logic
    kbuild: remove unnecessary LEX_PREFIX and YACC_PREFIX
    kconfig: use default 'yy' prefix for lexer and parser
    kconfig: make conf_unsaved a local variable of conf_read()
    kconfig: make xfgets() really static
    kconfig: make input_mode static
    kconfig: Warn if there is more than one help text
    kconfig: drop 'boolean' keyword
    kconfig: use bool instead of boolean for type definition attributes, again
    kconfig: Remove menu_end_entry()
    kconfig: Document important expression functions
    kconfig: Document automatic submenu creation code
    kconfig: Fix choice symbol expression leak
    ...

    Linus Torvalds
     
  • …asahiroy/linux-kbuild

    Pull Kbuild misc updates from Masahiro Yamada:

    - add snap-pkg target to create Linux kernel snap package

    - make out-of-tree creation of source packages fail correctly

    - improve and fix several semantic patches

    * tag 'kbuild-misc-v4.16' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
    Coccinelle: coccicheck: fix typo
    Coccinelle: memdup: drop spurious line
    Coccinelle: kzalloc-simple: Rename kzalloc-simple to zalloc-simple
    Coccinelle: ifnullfree: Trim the warning reported in report mode
    Coccinelle: alloc_cast: Add more memory allocating functions to the list
    Coccinelle: array_size: report even if include is missing
    Coccinelle: kzalloc-simple: Add all zero allocating functions
    kbuild: pkg: make out-of-tree rpm/deb-pkg build immediately fail
    scripts/package: snap-pkg target

    Linus Torvalds
     
  • Pull Kbuild updates from Masahiro Yamada:

    - terminate the build correctly in case of fixdep errors

    - clean up fixdep

    - suppress packed-not-aligned warnings from GCC-8

    - fix W= handling for extra DTC warnings

    * tag 'kbuild-v4.16' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
    kbuild: fix W= option checks for extra DTC warnings
    Kbuild: suppress packed-not-aligned warning for default setting only
    fixdep: use existing helper to check modular CONFIG options
    fixdep: refactor parse_dep_file()
    fixdep: move global variables to local variables of main()
    fixdep: remove unneeded memcpy() in parse_dep_file()
    fixdep: factor out common code for reading files
    fixdep: use malloc() and read() to load dep_file to buffer
    fixdep: remove unnecessary inclusion
    fixdep: exit with error code in error branches of do_config_file()

    Linus Torvalds
     
  • Pull char/misc driver updates from Greg KH:
    "Here is the big pull request for char/misc drivers for 4.16-rc1.

    There's a lot of stuff in here. Three new driver subsystems were added
    for various types of hardware busses:

    - siox
    - slimbus
    - soundwire

    as well as a new vboxguest subsystem for the VirtualBox hypervisor
    drivers.

    There's also big updates from the FPGA subsystem, lots of Android
    binder fixes, the usual handful of hyper-v updates, and lots of other
    smaller driver updates.

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

    * tag 'char-misc-4.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (155 commits)
    char: lp: use true or false for boolean values
    android: binder: use VM_ALLOC to get vm area
    android: binder: Use true and false for boolean values
    lkdtm: fix handle_irq_event symbol for INT_HW_IRQ_EN
    EISA: Delete error message for a failed memory allocation in eisa_probe()
    EISA: Whitespace cleanup
    misc: remove AVR32 dependencies
    virt: vbox: Add error mapping for VERR_INVALID_NAME and VERR_NO_MORE_FILES
    soundwire: Fix a signedness bug
    uio_hv_generic: fix new type mismatch warnings
    uio_hv_generic: fix type mismatch warnings
    auxdisplay: img-ascii-lcd: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE
    uio_hv_generic: add rescind support
    uio_hv_generic: check that host supports monitor page
    uio_hv_generic: create send and receive buffers
    uio: document uio_hv_generic regions
    doc: fix documentation about uio_hv_generic
    vmbus: add monitor_id and subchannel_id to sysfs per channel
    vmbus: fix ABI documentation
    uio_hv_generic: use ISR callback method
    ...

    Linus Torvalds
     

01 Feb, 2018

4 commits

  • Correct spelling of "coccinelle".

    Signed-off-by: Julia Lawall
    Signed-off-by: Masahiro Yamada

    Julia Lawall
     
  • Pull documentation updates from Jonathan Corbet:
    "Documentation updates for 4.16.

    New stuff includes refcount_t documentation, errseq documentation,
    kernel-doc support for nested structure definitions, the removal of
    lots of crufty kernel-doc support for unused formats, SPDX tag
    documentation, the beginnings of a manual for subsystem maintainers,
    and lots of fixes and updates.

    As usual, some of the changesets reach outside of Documentation/ to
    effect kerneldoc comment fixes. It also adds the new LICENSES
    directory, of which Thomas promises I do not need to be the
    maintainer"

    * tag 'docs-4.16' of git://git.lwn.net/linux: (65 commits)
    linux-next: docs-rst: Fix typos in kfigure.py
    linux-next: DOC: HWPOISON: Fix path to debugfs in hwpoison.txt
    Documentation: Fix misconversion of #if
    docs: add index entry for networking/msg_zerocopy
    Documentation: security/credentials.rst: explain need to sort group_list
    LICENSES: Add MPL-1.1 license
    LICENSES: Add the GPL 1.0 license
    LICENSES: Add Linux syscall note exception
    LICENSES: Add the MIT license
    LICENSES: Add the BSD-3-clause "Clear" license
    LICENSES: Add the BSD 3-clause "New" or "Revised" License
    LICENSES: Add the BSD 2-clause "Simplified" license
    LICENSES: Add the LGPL-2.1 license
    LICENSES: Add the LGPL 2.0 license
    LICENSES: Add the GPL 2.0 license
    Documentation: Add license-rules.rst to describe how to properly identify file licenses
    scripts: kernel_doc: better handle show warnings logic
    fs/*/Kconfig: drop links to 404-compliant http://acl.bestbits.at
    doc: md: Fix a file name to md-fault.c in fault-injection.txt
    errseq: Add to documentation tree
    ...

    Linus Torvalds
     
  • The current find done in find_other_sources() excludes directories in
    the kernel tree that are named 'include', eg.:

    ./security/apparmor/include
    ./security/selinux/include
    ./drivers/net/wireless/broadcom/brcm80211/include
    ./drivers/gpu/drm/amd/acp/include
    ./drivers/gpu/drm/amd/display/include
    ./drivers/gpu/drm/amd/include
    ./drivers/gpu/drm/nouveau/include

    This changes the find command in find_other_sources() to include those
    using the -path option.

    Link: http://lkml.kernel.org/r/1513335768-7852-1-git-send-email-arend.vanspriel@broadcom.com
    Signed-off-by: Arend van Spriel
    Cc: Robert Jarzmik
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arend van Spriel
     
  • In case of running scripts/decodecode without any parameters in order to
    give a copy'n'pasted Code line from, for example, email it would parse
    only first line of it, while in emails it's split to few.

    ie, when you have a file out of oops the Code line looks like

    Code: hh hh ... ... hh\n

    When copy'n'paste from, for example, email where sender or some middle
    MTA split it, the line looks like:

    Code: hh hh ... hh\n
    hh ... ... hh\n
    hh hh ... hh\n

    The Code line followed by another oops line usually contains characters
    out of hex digit + space + < + > set.

    So add logic to join this split back if and only if the following lines
    have hex digits, or spaces, or '' characters. It will be quite
    unlikely to have a broken input in well formed Oops or dmesg, thus a
    simple regex is being used.

    Link: http://lkml.kernel.org/r/20171212100323.33201-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Andy Shevchenko
    Cc: Will Deacon
    Cc: Dave Martin
    Cc: Philippe Ombredanne
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     

31 Jan, 2018

1 commit

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

    - Updates to use cond_resched() instead of cond_resched_rcu_qs()
    where feasible (currently everywhere except in kernel/rcu and in
    kernel/torture.c). Also a couple of fixes to avoid sending IPIs to
    offline CPUs.

    - Updates to simplify RCU's dyntick-idle handling.

    - Updates to remove almost all uses of smp_read_barrier_depends() and
    read_barrier_depends().

    - Torture-test updates.

    - Miscellaneous fixes"

    * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (72 commits)
    torture: Save a line in stutter_wait(): while -> for
    torture: Eliminate torture_runnable and perf_runnable
    torture: Make stutter less vulnerable to compilers and races
    locking/locktorture: Fix num reader/writer corner cases
    locking/locktorture: Fix rwsem reader_delay
    torture: Place all torture-test modules in one MAINTAINERS group
    rcutorture/kvm-build.sh: Skip build directory check
    rcutorture: Simplify functions.sh include path
    rcutorture: Simplify logging
    rcutorture/kvm-recheck-*: Improve result directory readability check
    rcutorture/kvm.sh: Support execution from any directory
    rcutorture/kvm.sh: Use consistent help text for --qemu-args
    rcutorture/kvm.sh: Remove unused variable, `alldone`
    rcutorture: Remove unused script, config2frag.sh
    rcutorture/configinit: Fix build directory error message
    rcutorture: Preempt RCU-preempt readers more vigorously
    torture: Reduce #ifdefs for preempt_schedule()
    rcu: Remove have_rcu_nocb_mask from tree_plugin.h
    rcu: Add comment giving debug strategy for double call_rcu()
    tracing, rcu: Hide trace event rcu_nocb_wake when not used
    ...

    Linus Torvalds
     

30 Jan, 2018

1 commit

  • Pull x86/pti updates from Thomas Gleixner:
    "Another set of melted spectrum related changes:

    - Code simplifications and cleanups for RSB and retpolines.

    - Make the indirect calls in KVM speculation safe.

    - Whitelist CPUs which are known not to speculate from Meltdown and
    prepare for the new CPUID flag which tells the kernel that a CPU is
    not affected.

    - A less rigorous variant of the module retpoline check which merily
    warns when a non-retpoline protected module is loaded and reflects
    that fact in the sysfs file.

    - Prepare for Indirect Branch Prediction Barrier support.

    - Prepare for exposure of the Speculation Control MSRs to guests, so
    guest OSes which depend on those "features" can use them. Includes
    a blacklist of the broken microcodes. The actual exposure of the
    MSRs through KVM is still being worked on"

    * 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/speculation: Simplify indirect_branch_prediction_barrier()
    x86/retpoline: Simplify vmexit_fill_RSB()
    x86/cpufeatures: Clean up Spectre v2 related CPUID flags
    x86/cpu/bugs: Make retpoline module warning conditional
    x86/bugs: Drop one "mitigation" from dmesg
    x86/nospec: Fix header guards names
    x86/alternative: Print unadorned pointers
    x86/speculation: Add basic IBPB (Indirect Branch Prediction Barrier) support
    x86/cpufeature: Blacklist SPEC_CTRL/PRED_CMD on early Spectre v2 microcodes
    x86/pti: Do not enable PTI on CPUs which are not vulnerable to Meltdown
    x86/msr: Add definitions for new speculation control MSRs
    x86/cpufeatures: Add AMD feature bits for Speculation Control
    x86/cpufeatures: Add Intel feature bits for Speculation Control
    x86/cpufeatures: Add CPUID_7_EDX CPUID leaf
    module/retpoline: Warn about missing retpoline in module
    KVM: VMX: Make indirect call speculation safe
    KVM: x86: Make indirect calls in emulator speculation safe

    Linus Torvalds
     

29 Jan, 2018

1 commit


28 Jan, 2018

1 commit

  • As explained by Michal Marek at https://lkml.org/lkml/2011/8/31/189
    silentoldconfig has become a misnomer. It has become an internal interface
    so remove it from "make help" and Documentation/ to stop confusing people
    using it as seen for instance at
    https://chromium-review.googlesource.com/835632 Don't remove it from
    kconfig/Makefile yet not to break any (other) tool using it.

    On the other hand, correct and expand its description in the help of
    the (internal) scripts/kconfig/conf.c

    Signed-off-by: Marc Herbert
    Signed-off-by: Masahiro Yamada

    Marc Herbert
     

26 Jan, 2018

1 commit

  • There's a risk that a kernel which has full retpoline mitigations becomes
    vulnerable when a module gets loaded that hasn't been compiled with the
    right compiler or the right option.

    To enable detection of that mismatch at module load time, add a module info
    string "retpoline" at build time when the module was compiled with
    retpoline support. This only covers compiled C source, but assembler source
    or prebuilt object files are not checked.

    If a retpoline enabled kernel detects a non retpoline protected module at
    load time, print a warning and report it in the sysfs vulnerability file.

    [ tglx: Massaged changelog ]

    Signed-off-by: Andi Kleen
    Signed-off-by: Thomas Gleixner
    Cc: David Woodhouse
    Cc: gregkh@linuxfoundation.org
    Cc: torvalds@linux-foundation.org
    Cc: jeyu@kernel.org
    Cc: arjan@linux.intel.com
    Link: https://lkml.kernel.org/r/20180125235028.31211-1-andi@firstfloor.org

    Andi Kleen
     

25 Jan, 2018

3 commits

  • Kbuild supports 3 levels of extra warnings, and multiple levels can
    be combined, like W=12, W=123. It was added by commit a6de553da01c
    ("kbuild: Allow to combine multiple W= levels").

    From the log of commit 8654cb8d0371 ("dtc: update warning settings
    for new bus and node/property name checks"), I assume:

    - unit_address_vs_reg, simple_bus_reg, etc. belong to level 1
    - node_name_chars_strict, property_name_chars_strict belong to level 2

    However, the level 1 warnings are displayed by any argument to W=.
    On the other hand, the level 2 warnings are displayed by W=2, but
    not by W=12, or W=123.

    Use $(findstring ...) like scripts/Makefile.extrawarn.

    Signed-off-by: Masahiro Yamada
    Acked-by: Arnd Bergmann

    Masahiro Yamada
     
  • Reverse dependency expressions can get rather unwieldy, especially if
    a symbol is selected by more than a handful of other symbols. I.e. it's
    possible to have near endless expressions like:
    A && B && !C || D || F && (G || H) || [...]

    Chop these expressions into actually readable chunks:
    - A && B && !C
    - D
    - F && (G || H)
    - [...]

    I.e. transform the top level OR tokens into newlines and prepend each
    line with a minus. This makes the "Selected by:" and "Implied by:" blurb
    much easier to read. This is done only if there is more than one top
    level OR. "Depends on:" and "Range :" were deliberately left as they are.

    Based on idea from Paul Bolle.

    Suggested-by: Paul Bolle
    Signed-off-by: Petr Vorel
    Signed-off-by: Masahiro Yamada

    Petr Vorel
     
  • The 'oldnoconfig' is really confusing due to its counter-intuitive name.
    It was renamed by commit fb16d8912db5 ("kconfig: replace 'oldnoconfig'
    with 'olddefconfig', and keep the old name as an alias").

    The 'oldnoconfig' has been kept as an alias for enough period of time,
    and finally I am planning to remove it. I will give people a little
    more time for migration. Meanwhile, the following message will be
    displayed if oldnoconfig is used.

    WARNING: "oldnoconfig" target will be removed after Linux 4.19
    Please use "olddefconfig" instead, which is an alias.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Ulf Magnusson

    Masahiro Yamada
     

22 Jan, 2018

3 commits

  • The C-based config programs are properly guarded from a missing (or,
    currently, external) libintl.h by the HOST_EXTRACFLAGS check, but
    this does not help the C++-based qconf.

    Signed-off-by: Yaakov Selkowitz
    Signed-off-by: Masahiro Yamada

    Yaakov Selkowitz
     
  • It is not obvious that the last two cases refer to menus and ifs,
    respectively, in the conditional that sets 'parentdep'.

    Automatic submenu creation is done later, so the parent can't be a
    symbol here.

    No functional changes. Only comments added.

    Signed-off-by: Ulf Magnusson
    Signed-off-by: Masahiro Yamada

    Ulf Magnusson
     
  • It is not obvious that this might refer to an 'if', making the code
    pretty cryptic:

    if (menu->list && (!menu->prompt || !menu->prompt->text)) {

    Kconfig keeps the 'if' menu nodes even after flattening. Reflect that in
    the example to be accurate.

    No functional changes. Only comments added.

    Signed-off-by: Ulf Magnusson
    Signed-off-by: Masahiro Yamada

    Ulf Magnusson
     

21 Jan, 2018

7 commits