Skip to content
Permalink
Chris-Down/pri…
Switch branches/tags

Commits on Jun 17, 2021

  1. printk: index: Add indexing support to dev_printk

    While for most kinds of issues we have counters, tracepoints, or metrics
    with a stable interface which can reliably be used to indicate issues,
    in order to react to production issues quickly we sometimes need to work
    with the interface which most kernel developers naturally use when
    developing: printk, and printk-esques like dev_printk.
    
    dev_printk is by far the most likely custom subsystem printk to benefit
    from the printk indexing infrastructure, since niche device issues
    brought about by production changes, firmware upgrades, and the like are
    one of the most common things that we need printk infrastructure's
    assistance to monitor.
    
    Often these errors were never expected to practically manifest in
    reality, and exhibit in code without extensive (or any) metrics present.
    As such, there are typically very few options for issue detection
    available to those with large fleets at the time the incident happens,
    and we thus benefit strongly from monitoring netconsole in these
    instances.
    
    As such, add the infrastructure for dev_printk to be indexed in the
    printk index. Even on a minimal kernel config, the coverage of the base
    kernel's printk index is significantly improved:
    
    Before:
    
        [root@ktst ~]# wc -l /sys/kernel/debug/printk/index/vmlinux
        4497 /sys/kernel/debug/printk/index/vmlinux
    
    After:
    
        [root@ktst ~]# wc -l /sys/kernel/debug/printk/index/vmlinux
        5573 /sys/kernel/debug/printk/index/vmlinux
    
    In terms of implementation, in order to trivially disambiguate them,
    dev_printk is now a macro which wraps _dev_printk.
    
    Signed-off-by: Chris Down <chris@chrisdown.name>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    cdown authored and intel-lab-lkp committed Jun 17, 2021
  2. printk: Userspace format indexing support

    We have a number of systems industry-wide that have a subset of their
    functionality that works as follows:
    
    1. Receive a message from local kmsg, serial console, or netconsole;
    2. Apply a set of rules to classify the message;
    3. Do something based on this classification (like scheduling a
       remediation for the machine), rinse, and repeat.
    
    As a couple of examples of places we have this implemented just inside
    Facebook, although this isn't a Facebook-specific problem, we have this
    inside our netconsole processing (for alarm classification), and as part
    of our machine health checking. We use these messages to determine
    fairly important metrics around production health, and it's important
    that we get them right.
    
    While for some kinds of issues we have counters, tracepoints, or metrics
    with a stable interface which can reliably indicate the issue, in order
    to react to production issues quickly we need to work with the interface
    which most kernel developers naturally use when developing: printk.
    
    Most production issues come from unexpected phenomena, and as such
    usually the code in question doesn't have easily usable tracepoints or
    other counters available for the specific problem being mitigated. We
    have a number of lines of monitoring defence against problems in
    production (host metrics, process metrics, service metrics, etc), and
    where it's not feasible to reliably monitor at another level, this kind
    of pragmatic netconsole monitoring is essential.
    
    As one would expect, monitoring using printk is rather brittle for a
    number of reasons -- most notably that the message might disappear
    entirely in a new version of the kernel, or that the message may change
    in some way that the regex or other classification methods start to
    silently fail.
    
    One factor that makes this even harder is that, under normal operation,
    many of these messages are never expected to be hit. For example, there
    may be a rare hardware bug which one wants to detect if it was to ever
    happen again, but its recurrence is not likely or anticipated. This
    precludes using something like checking whether the printk in question
    was printed somewhere fleetwide recently to determine whether the
    message in question is still present or not, since we don't anticipate
    that it should be printed anywhere, but still need to monitor for its
    future presence in the long-term.
    
    This class of issue has happened on a number of occasions, causing
    unhealthy machines with hardware issues to remain in production for
    longer than ideal. As a recent example, some monitoring around
    blk_update_request fell out of date and caused semi-broken machines to
    remain in production for longer than would be desirable.
    
    Searching through the codebase to find the message is also extremely
    fragile, because many of the messages are further constructed beyond
    their callsite (eg. btrfs_printk and other module-specific wrappers,
    each with their own functionality). Even if they aren't, guessing the
    format and formulation of the underlying message based on the aesthetics
    of the message emitted is not a recipe for success at scale, and our
    previous issues with fleetwide machine health checking demonstrate as
    much.
    
    This provides a solution to the issue of silently changed or deleted
    printks: we record pointers to all printk format strings known at
    compile time into a new .printk_index section, both in vmlinux and
    modules. At runtime, this can then be iterated by looking at
    <debugfs>/printk/index/<module>, which emits the following format, both
    readable by humans and able to be parsed by machines:
    
        $ head -1 vmlinux; shuf -n 5 vmlinux
        # <level[,flags]> filename:line function "format"
        <5> block/blk-settings.c:661 disk_stack_limits "%s: Warning: Device %s is misaligned\n"
        <4> kernel/trace/trace.c:8296 trace_create_file "Could not create tracefs '%s' entry\n"
        <6> arch/x86/kernel/hpet.c:144 _hpet_print_config "hpet: %s(%d):\n"
        <6> init/do_mounts.c:605 prepare_namespace "Waiting for root device %s...\n"
        <6> drivers/acpi/osl.c:1410 acpi_no_auto_serialize_setup "ACPI: auto-serialization disabled\n"
    
    This mitigates the majority of cases where we have a highly-specific
    printk which we want to match on, as we can now enumerate and check
    whether the format changed or the printk callsite disappeared entirely
    in userspace. This allows us to catch changes to printks we monitor
    earlier and decide what to do about it before it becomes problematic.
    
    There is no additional runtime cost for printk callers or printk itself,
    and the assembly generated is exactly the same.
    
    Signed-off-by: Chris Down <chris@chrisdown.name>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Jessica Yu <jeyu@kernel.org>
    Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Cc: John Ogness <john.ogness@linutronix.de>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Kees Cook <keescook@chromium.org>
    cdown authored and intel-lab-lkp committed Jun 17, 2021
  3. printk: Rework parse_prefix into printk_parse_prefix

    parse_prefix is needed externally by later patches, so move it into a
    context where it can be used as such. Also give it the printk_ prefix to
    reduce the chance of collisions.
    
    Signed-off-by: Chris Down <chris@chrisdown.name>
    Cc: Petr Mladek <pmladek@suse.com>
    cdown authored and intel-lab-lkp committed Jun 17, 2021
  4. printk: Straighten out log_flags into printk_info_flags

    In the past, `enum log_flags` was part of `struct log`, hence the name.
    `struct log` has since been reworked and now this struct is stored
    inside `struct printk_info`. However, the name was never updated, which
    is somewhat confusing -- especially since these flags operate at the
    record level rather than at the level of an abstract log.
    
    printk_info_flags also joins its other metadata struct friends in
    printk_ringbuffer.h.
    
    Signed-off-by: Chris Down <chris@chrisdown.name>
    Reviewed-by: Petr Mladek <pmladek@suse.com>
    cdown authored and intel-lab-lkp committed Jun 17, 2021
  5. string_helpers: Escape double quotes in escape_special

    From an abstract point of view, escape_special's counterpart,
    unescape_special, already handles the unescaping of blackslashed double
    quote sequences.
    
    As a more practical example, printk indexing is an example case where
    this is already practically useful. Compare an example with
    `ESCAPE_SPECIAL | ESCAPE_SPACE`, with quotes not escaped:
    
        [root@ktst ~]# grep drivers/pci/pci-stub.c:69 /sys/kernel/debug/printk/index/vmlinux
        <4> drivers/pci/pci-stub.c:69 pci_stub_init "pci-stub: invalid ID string "%s"\n"
    
    ...and the same after this patch:
    
        [root@ktst ~]# grep drivers/pci/pci-stub.c:69 /sys/kernel/debug/printk/index/vmlinux
        <4> drivers/pci/pci-stub.c:69 pci_stub_init "pci-stub: invalid ID string \"%s\"\n"
    
    One can of course, alternatively, use ESCAPE_APPEND with a quote in
    @only, but without this patch quotes are coerced into hex or octal which
    can hurt readability quite significantly.
    
    I've checked uses of ESCAPE_SPECIAL and %pE across the codebase, and I'm
    pretty confident that this shouldn't affect any stable interfaces.
    
    Signed-off-by: Chris Down <chris@chrisdown.name>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: Petr Mladek <pmladek@suse.com>
    Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    cdown authored and intel-lab-lkp committed Jun 17, 2021

Commits on May 26, 2021

  1. module: correctly exit module_kallsyms_on_each_symbol when fn() != 0

    Commit 013c166 ("kallsyms: refactor
    {,module_}kallsyms_on_each_symbol") replaced the return inside the
    nested loop with a break, changing the semantics of the function: the
    break only exits the innermost loop, so the code continues iterating the
    symbols of the next module instead of exiting.
    
    Fixes: 013c166 ("kallsyms: refactor {,module_}kallsyms_on_each_symbol")
    Reviewed-by: Petr Mladek <pmladek@suse.com>
    Reviewed-by: Miroslav Benes <mbenes@suse.cz>
    Signed-off-by: Jon Mediero <jmdr@disroot.org>
    Signed-off-by: Jessica Yu <jeyu@kernel.org>
    Jon Mediero authored and flaming-toast committed May 26, 2021

Commits on May 14, 2021

  1. kernel/module: Use BUG_ON instead of if condition followed by BUG

    Fix the following coccinelle report:
    
    kernel/module.c:1018:2-5:
    WARNING: Use BUG_ON instead of if condition followed by BUG.
    
    BUG_ON uses unlikely in if(). Through disassembly, we can see that
    brk #0x800 is compiled to the end of the function.
    As you can see below:
        ......
        ffffff8008660bec:   d65f03c0    ret
        ffffff8008660bf0:   d4210000    brk #0x800
    
    Usually, the condition in if () is not satisfied. For the
    multi-stage pipeline, we do not need to perform fetch decode
    and excute operation on brk instruction.
    
    In my opinion, this can improve the efficiency of the
    multi-stage pipeline.
    
    Signed-off-by: zhouchuangao <zhouchuangao@vivo.com>
    Signed-off-by: Jessica Yu <jeyu@kernel.org>
    zhouchuangao authored and flaming-toast committed May 14, 2021

Commits on May 9, 2021

  1. Linux 5.13-rc1

    torvalds committed May 9, 2021
  2. fbmem: fix horribly incorrect placement of __maybe_unused

    Commit b9d79e4 ("fbmem: Mark proc_fb_seq_ops as __maybe_unused")
    places the '__maybe_unused' in an entirely incorrect location between
    the "struct" keyword and the structure name.
    
    It's a wonder that gcc accepts that silently, but clang quite reasonably
    warns about it:
    
        drivers/video/fbdev/core/fbmem.c:736:21: warning: attribute declaration must precede definition [-Wignored-attributes]
        static const struct __maybe_unused seq_operations proc_fb_seq_ops = {
                            ^
    
    Fix it.
    
    Cc: Guenter Roeck <linux@roeck-us.net>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    torvalds committed May 9, 2021
  3. Merge tag 'drm-next-2021-05-10' of git://anongit.freedesktop.org/drm/drm

    Pull drm fixes from Dave Airlie:
     "Bit later than usual, I queued them all up on Friday then promptly
      forgot to write the pull request email. This is mainly amdgpu fixes,
      with some radeon/msm/fbdev and one i915 gvt fix thrown in.
    
      amdgpu:
       - MPO hang workaround
       - Fix for concurrent VM flushes on vega/navi
       - dcefclk is not adjustable on navi1x and newer
       - MST HPD debugfs fix
       - Suspend/resumes fixes
       - Register VGA clients late in case driver fails to load
       - Fix GEM leak in user framebuffer create
       - Add support for polaris12 with 32 bit memory interface
       - Fix duplicate cursor issue when using overlay
       - Fix corruption with tiled surfaces on VCN3
       - Add BO size and stride check to fix BO size verification
    
      radeon:
       - Fix off-by-one in power state parsing
       - Fix possible memory leak in power state parsing
    
      msm:
       - NULL ptr dereference fix
    
      fbdev:
       - procfs disabled warning fix
    
      i915:
       - gvt: Fix a possible division by zero in vgpu display rate
         calculation"
    
    * tag 'drm-next-2021-05-10' of git://anongit.freedesktop.org/drm/drm:
      drm/amdgpu: Use device specific BO size & stride check.
      drm/amdgpu: Init GFX10_ADDR_CONFIG for VCN v3 in DPG mode.
      drm/amd/pm: initialize variable
      drm/radeon: Avoid power table parsing memory leaks
      drm/radeon: Fix off-by-one power_state index heap overwrite
      drm/amd/display: Fix two cursor duplication when using overlay
      drm/amdgpu: add new MC firmware for Polaris12 32bit ASIC
      fbmem: Mark proc_fb_seq_ops as __maybe_unused
      drm/msm/dpu: Delete bonkers code
      drm/i915/gvt: Prevent divided by zero when calculating refresh rate
      amdgpu: fix GEM obj leak in amdgpu_display_user_framebuffer_create
      drm/amdgpu: Register VGA clients after init can no longer fail
      drm/amdgpu: Handling of amdgpu_device_resume return value for graceful teardown
      drm/amdgpu: fix r initial values
      drm/amd/display: fix wrong statement in mst hpd debugfs
      amdgpu/pm: set pp_dpm_dcefclk to readonly on NAVI10 and newer gpus
      amdgpu/pm: Prevent force of DCEFCLK on NAVI10 and SIENNA_CICHLID
      drm/amdgpu: fix concurrent VM flushes on Vega/Navi v2
      drm/amd/display: Reject non-zero src_y and src_x for video planes
    torvalds committed May 9, 2021
  4. Merge tag 'block-5.13-2021-05-09' of git://git.kernel.dk/linux-block

    Pull block fix from Jens Axboe:
     "Turns out the bio max size change still has issues, so let's get it
      reverted for 5.13-rc1. We'll shake out the issues there and defer it
      to 5.14 instead"
    
    * tag 'block-5.13-2021-05-09' of git://git.kernel.dk/linux-block:
      Revert "bio: limit bio max size"
    torvalds committed May 9, 2021
  5. Merge tag '5.13-rc-smb3-part3' of git://git.samba.org/sfrench/cifs-2.6

    Pull cifs fixes from Steve French:
     "Three small SMB3 chmultichannel related changesets (also for stable)
      from the SMB3 test event this week.
    
      The other fixes are still in review/testing"
    
    * tag '5.13-rc-smb3-part3' of git://git.samba.org/sfrench/cifs-2.6:
      smb3: if max_channels set to more than one channel request multichannel
      smb3: do not attempt multichannel to server which does not support it
      smb3: when mounting with multichannel include it in requested capabilities
    torvalds committed May 9, 2021
  6. Merge tag 'sched-urgent-2021-05-09' of git://git.kernel.org/pub/scm/l…

    …inux/kernel/git/tip/tip
    
    Pull scheduler fixes from Thomas Gleixner:
     "A set of scheduler updates:
    
       - Prevent PSI state corruption when schedule() races with cgroup
         move.
    
         A recent commit combined two PSI callbacks to reduce the number of
         cgroup tree updates, but missed that schedule() can drop rq::lock
         for load balancing, which opens the race window for
         cgroup_move_task() which then observes half updated state.
    
         The fix is to solely use task::ps_flags instead of looking at the
         potentially mismatching scheduler state
    
       - Prevent an out-of-bounds access in uclamp caused bu a rounding
         division which can lead to an off-by-one error exceeding the
         buckets array size.
    
       - Prevent unfairness caused by missing load decay when a task is
         attached to a cfs runqueue.
    
         The old load of the task was attached to the runqueue and never
         removed. Fix it by enforcing the load update through the hierarchy
         for unthrottled run queue instances.
    
       - A documentation fix fot the 'sched_verbose' command line option"
    
    * tag 'sched-urgent-2021-05-09' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
      sched/fair: Fix unfairness caused by missing load decay
      sched: Fix out-of-bound access in uclamp
      psi: Fix psi state corruption when schedule() races with cgroup move
      sched,doc: sched_debug_verbose cmdline should be sched_verbose
    torvalds committed May 9, 2021
  7. Merge tag 'locking-urgent-2021-05-09' of git://git.kernel.org/pub/scm…

    …/linux/kernel/git/tip/tip
    
    Pull locking fixes from Thomas Gleixner:
     "A set of locking related fixes and updates:
    
       - Two fixes for the futex syscall related to the timeout handling.
    
         FUTEX_LOCK_PI does not support the FUTEX_CLOCK_REALTIME bit and
         because it's not set the time namespace adjustment for clock
         MONOTONIC is applied wrongly.
    
         FUTEX_WAIT cannot support the FUTEX_CLOCK_REALTIME bit because its
         always a relative timeout.
    
       - Cleanups in the futex syscall entry points which became obvious
         when the two timeout handling bugs were fixed.
    
       - Cleanup of queued_write_lock_slowpath() as suggested by Linus
    
       - Fixup of the smp_call_function_single_async() prototype"
    
    * tag 'locking-urgent-2021-05-09' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
      futex: Make syscall entry points less convoluted
      futex: Get rid of the val2 conditional dance
      futex: Do not apply time namespace adjustment on FUTEX_LOCK_PI
      Revert 337f130 ("futex: Allow FUTEX_CLOCK_REALTIME with FUTEX_WAIT op")
      locking/qrwlock: Cleanup queued_write_lock_slowpath()
      smp: Fix smp_call_function_single_async prototype
    torvalds committed May 9, 2021
  8. Merge tag 'perf_urgent_for_v5.13_rc1' of git://git.kernel.org/pub/scm…

    …/linux/kernel/git/tip/tip
    
    Pull x86 perf fix from Borislav Petkov:
     "Handle power-gating of AMD IOMMU perf counters properly when they are
      used"
    
    * tag 'perf_urgent_for_v5.13_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
      x86/events/amd/iommu: Fix invalid Perf result due to IOMMU PMC power-gating
    torvalds committed May 9, 2021
  9. Merge tag 'x86_urgent_for_v5.13_rc1' of git://git.kernel.org/pub/scm/…

    …linux/kernel/git/tip/tip
    
    Pull x86 fixes from Borislav Petkov:
     "A bunch of things accumulated for x86 in the last two weeks:
    
       - Fix guest vtime accounting so that ticks happening while the guest
         is running can also be accounted to it. Along with a consolidation
         to the guest-specific context tracking helpers.
    
       - Provide for the host NMI handler running after a VMX VMEXIT to be
         able to run on the kernel stack correctly.
    
       - Initialize MSR_TSC_AUX when RDPID is supported and not RDTSCP (virt
         relevant - real hw supports both)
    
       - A code generation improvement to TASK_SIZE_MAX through the use of
         alternatives
    
       - The usual misc and related cleanups and improvements"
    
    * tag 'x86_urgent_for_v5.13_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
      KVM: x86: Consolidate guest enter/exit logic to common helpers
      context_tracking: KVM: Move guest enter/exit wrappers to KVM's domain
      context_tracking: Consolidate guest enter/exit wrappers
      sched/vtime: Move guest enter/exit vtime accounting to vtime.h
      sched/vtime: Move vtime accounting external declarations above inlines
      KVM: x86: Defer vtime accounting 'til after IRQ handling
      context_tracking: Move guest exit vtime accounting to separate helpers
      context_tracking: Move guest exit context tracking to separate helpers
      KVM/VMX: Invoke NMI non-IST entry instead of IST entry
      x86/cpu: Remove write_tsc() and write_rdtscp_aux() wrappers
      x86/cpu: Initialize MSR_TSC_AUX if RDTSCP *or* RDPID is supported
      x86/resctrl: Fix init const confusion
      x86: Delete UD0, UD1 traces
      x86/smpboot: Remove duplicate includes
      x86/cpu: Use alternative to generate the TASK_SIZE_MAX constant
    torvalds committed May 9, 2021
  10. Revert "bio: limit bio max size"

    This reverts commit cd2c754.
    
    Alex reports that the commit causes corruption with LUKS on ext4. Revert
    it for now so that this can be investigated properly.
    
    Link: https://lore.kernel.org/linux-block/1620493841.bxdq8r5haw.none@localhost/
    Reported-by: Alex Xu (Hello71) <alex_y_xu@yahoo.ca>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    axboe committed May 9, 2021

Commits on May 8, 2021

  1. Merge tag 'riscv-for-linus-5.13-mw1' of git://git.kernel.org/pub/scm/…

    …linux/kernel/git/riscv/linux
    
    Pull RISC-V fixes from Palmer Dabbelt:
    
     - A fix to avoid over-allocating the kernel's mapping on !MMU systems,
       which could lead to up to 2MiB of lost memory
    
     - The SiFive address extension errata only manifest on rv64, they are
       now disabled on rv32 where they are unnecessary
    
     - A pair of late-landing cleanups
    
    * tag 'riscv-for-linus-5.13-mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
      riscv: remove unused handle_exception symbol
      riscv: Consistify protect_kernel_linear_mapping_text_rodata() use
      riscv: enable SiFive errata CIP-453 and CIP-1200 Kconfig only if CONFIG_64BIT=y
      riscv: Only extend kernel reservation if mapped read-only
    torvalds committed May 8, 2021
  2. drm/i915/display: fix compiler warning about array overrun

    intel_dp_check_mst_status() uses a 14-byte array to read the DPRX Event
    Status Indicator data, but then passes that buffer at offset 10 off as
    an argument to drm_dp_channel_eq_ok().
    
    End result: there are only 4 bytes remaining of the buffer, yet
    drm_dp_channel_eq_ok() wants a 6-byte buffer.  gcc-11 correctly warns
    about this case:
    
      drivers/gpu/drm/i915/display/intel_dp.c: In function ‘intel_dp_check_mst_status’:
      drivers/gpu/drm/i915/display/intel_dp.c:3491:22: warning: ‘drm_dp_channel_eq_ok’ reading 6 bytes from a region of size 4 [-Wstringop-overread]
       3491 |                     !drm_dp_channel_eq_ok(&esi[10], intel_dp->lane_count)) {
            |                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      drivers/gpu/drm/i915/display/intel_dp.c:3491:22: note: referencing argument 1 of type ‘const u8 *’ {aka ‘const unsigned char *’}
      In file included from drivers/gpu/drm/i915/display/intel_dp.c:38:
      include/drm/drm_dp_helper.h:1466:6: note: in a call to function ‘drm_dp_channel_eq_ok’
       1466 | bool drm_dp_channel_eq_ok(const u8 link_status[DP_LINK_STATUS_SIZE],
            |      ^~~~~~~~~~~~~~~~~~~~
           6:14 elapsed
    
    This commit just extends the original array by 2 zero-initialized bytes,
    avoiding the warning.
    
    There may be some underlying bug in here that caused this confusion, but
    this is at least no worse than the existing situation that could use
    random data off the stack.
    
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    torvalds committed May 8, 2021
  3. Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/gi…

    …t/jejb/scsi
    
    Pull more SCSI updates from James Bottomley:
     "This is a set of minor fixes in various drivers (qla2xxx, ufs,
      scsi_debug, lpfc) one doc fix and a fairly large update to the fnic
      driver to remove the open coded iteration functions in favour of the
      scsi provided ones"
    
    * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
      scsi: fnic: Use scsi_host_busy_iter() to traverse commands
      scsi: fnic: Kill 'exclude_id' argument to fnic_cleanup_io()
      scsi: scsi_debug: Fix cmd_per_lun, set to max_queue
      scsi: ufs: core: Narrow down fast path in system suspend path
      scsi: ufs: core: Cancel rpm_dev_flush_recheck_work during system suspend
      scsi: ufs: core: Do not put UFS power into LPM if link is broken
      scsi: qla2xxx: Prevent PRLI in target mode
      scsi: qla2xxx: Add marginal path handling support
      scsi: target: tcmu: Return from tcmu_handle_completions() if cmd_id not found
      scsi: ufs: core: Fix a typo in ufs-sysfs.c
      scsi: lpfc: Fix bad memory access during VPD DUMP mailbox command
      scsi: lpfc: Fix DMA virtual address ptr assignment in bsg
      scsi: lpfc: Fix illegal memory access on Abort IOCBs
      scsi: blk-mq: Fix build warning when making htmldocs
    torvalds committed May 8, 2021
  4. Merge tag 'kbuild-v5.13-2' of git://git.kernel.org/pub/scm/linux/kern…

    …el/git/masahiroy/linux-kbuild
    
    Pull more Kbuild updates from Masahiro Yamada:
    
     - Convert sh and sparc to use generic shell scripts to generate the
       syscall headers
    
     - refactor .gitignore files
    
     - Update kernel/config_data.gz only when the content of the .config
       is really changed, which avoids the unneeded re-link of vmlinux
    
     - move "remove stale files" workarounds to scripts/remove-stale-files
    
     - suppress unused-but-set-variable warnings by default for Clang
       as well
    
     - fix locale setting LANG=C to LC_ALL=C
    
     - improve 'make distclean'
    
     - always keep intermediate objects from scripts/link-vmlinux.sh
    
     - move IF_ENABLED out of <linux/kconfig.h> to make it self-contained
    
     - misc cleanups
    
    * tag 'kbuild-v5.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (25 commits)
      linux/kconfig.h: replace IF_ENABLED() with PTR_IF() in <linux/kernel.h>
      kbuild: Don't remove link-vmlinux temporary files on exit/signal
      kbuild: remove the unneeded comments for external module builds
      kbuild: make distclean remove tag files in sub-directories
      kbuild: make distclean work against $(objtree) instead of $(srctree)
      kbuild: refactor modname-multi by using suffix-search
      kbuild: refactor fdtoverlay rule
      kbuild: parameterize the .o part of suffix-search
      arch: use cross_compiling to check whether it is a cross build or not
      kbuild: remove ARCH=sh64 support from top Makefile
      .gitignore: prefix local generated files with a slash
      kbuild: replace LANG=C with LC_ALL=C
      Makefile: Move -Wno-unused-but-set-variable out of GCC only block
      kbuild: add a script to remove stale generated files
      kbuild: update config_data.gz only when the content of .config is changed
      .gitignore: ignore only top-level modules.builtin
      .gitignore: move tags and TAGS close to other tag files
      kernel/.gitgnore: remove stale timeconst.h and hz.bc
      usr/include: refactor .gitignore
      genksyms: fix stale comment
      ...
    torvalds committed May 8, 2021
  5. smb3: if max_channels set to more than one channel request multichannel

    Mounting with "multichannel" is obviously implied if user requested
    more than one channel on mount (ie mount parm max_channels>1).
    Currently both have to be specified. Fix that so that if max_channels
    is greater than 1 on mount, enable multichannel rather than silently
    falling back to non-multichannel.
    
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Reviewed-By: Tom Talpey <tom@talpey.com>
    Cc: <stable@vger.kernel.org> # v5.11+
    Reviewed-by: Shyam Prasad N <sprasad@microsoft.com>
    Steve French committed May 8, 2021
  6. smb3: do not attempt multichannel to server which does not support it

    We were ignoring CAP_MULTI_CHANNEL in the server response - if the
    server doesn't support multichannel we should not be attempting it.
    
    See MS-SMB2 section 3.2.5.2
    
    Reviewed-by: Shyam Prasad N <sprasad@microsoft.com>
    Reviewed-By: Tom Talpey <tom@talpey.com>
    Cc: <stable@vger.kernel.org> # v5.8+
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Steve French committed May 8, 2021
  7. Merge tag 'powerpc-5.13-2' of git://git.kernel.org/pub/scm/linux/kern…

    …el/git/powerpc/linux
    
    Pull powerpc updates and fixes from Michael Ellerman:
     "A bit of a mixture of things, tying up some loose ends.
    
      There's the removal of the nvlink code, which dependend on a commit in
      the vfio tree. Then the enablement of huge vmalloc which was in next
      for a few weeks but got dropped due to conflicts. And there's also a
      few fixes.
    
      Summary:
    
       - Remove the nvlink support now that it's only user has been removed.
    
       - Enable huge vmalloc mappings for Radix MMU (P9).
    
       - Fix KVM conversion to gfn-based MMU notifier callbacks.
    
       - Fix a kexec/kdump crash with hot plugged CPUs.
    
       - Fix boot failure on 32-bit with CONFIG_STACKPROTECTOR.
    
       - Restore alphabetic order of the selects under CONFIG_PPC.
    
      Thanks to: Christophe Leroy, Christoph Hellwig, Nicholas Piggin,
      Sandipan Das, and Sourabh Jain"
    
    * tag 'powerpc-5.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
      KVM: PPC: Book3S HV: Fix conversion to gfn-based MMU notifier callbacks
      powerpc/kconfig: Restore alphabetic order of the selects under CONFIG_PPC
      powerpc/32: Fix boot failure with CONFIG_STACKPROTECTOR
      powerpc/powernv/memtrace: Fix dcache flushing
      powerpc/kexec_file: Use current CPU info while setting up FDT
      powerpc/64s/radix: Enable huge vmalloc mappings
      powerpc/powernv: remove the nvlink support
    torvalds committed May 8, 2021
  8. smb3: when mounting with multichannel include it in requested capabil…

    …ities
    
    In the SMB3/SMB3.1.1 negotiate protocol request, we are supposed to
    advertise CAP_MULTICHANNEL capability when establishing multiple
    channels has been requested by the user doing the mount. See MS-SMB2
    sections 2.2.3 and 3.2.5.2
    
    Without setting it there is some risk that multichannel could fail
    if the server interpreted the field strictly.
    
    Reviewed-By: Tom Talpey <tom@talpey.com>
    Reviewed-by: Shyam Prasad N <sprasad@microsoft.com>
    Cc: <stable@vger.kernel.org> # v5.8+
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Steve French committed May 8, 2021
  9. Merge tag 'net-5.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel…

    …/git/netdev/net
    
    Pull networking fixes from Jakub Kicinski:
     "Networking fixes for 5.13-rc1, including fixes from bpf, can and
      netfilter trees. Self-contained fixes, nothing risky.
    
      Current release - new code bugs:
    
       - dsa: ksz: fix a few bugs found by static-checker in the new driver
    
       - stmmac: fix frame preemption handshake not triggering after
         interface restart
    
      Previous releases - regressions:
    
       - make nla_strcmp handle more then one trailing null character
    
       - fix stack OOB reads while fragmenting IPv4 packets in openvswitch
         and net/sched
    
       - sctp: do asoc update earlier in sctp_sf_do_dupcook_a
    
       - sctp: delay auto_asconf init until binding the first addr
    
       - stmmac: clear receive all(RA) bit when promiscuous mode is off
    
       - can: mcp251x: fix resume from sleep before interface was brought up
    
      Previous releases - always broken:
    
       - bpf: fix leakage of uninitialized bpf stack under speculation
    
       - bpf: fix masking negation logic upon negative dst register
    
       - netfilter: don't assume that skb_header_pointer() will never fail
    
       - only allow init netns to set default tcp cong to a restricted algo
    
       - xsk: fix xp_aligned_validate_desc() when len == chunk_size to avoid
         false positive errors
    
       - ethtool: fix missing NLM_F_MULTI flag when dumping
    
       - can: m_can: m_can_tx_work_queue(): fix tx_skb race condition
    
       - sctp: fix a SCTP_MIB_CURRESTAB leak in sctp_sf_do_dupcook_b
    
       - bridge: fix NULL-deref caused by a races between assigning
         rx_handler_data and setting the IFF_BRIDGE_PORT bit
    
      Latecomer:
    
       - seg6: add counters support for SRv6 Behaviors"
    
    * tag 'net-5.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (73 commits)
      atm: firestream: Use fallthrough pseudo-keyword
      net: stmmac: Do not enable RX FIFO overflow interrupts
      mptcp: fix splat when closing unaccepted socket
      i40e: Remove LLDP frame filters
      i40e: Fix PHY type identifiers for 2.5G and 5G adapters
      i40e: fix the restart auto-negotiation after FEC modified
      i40e: Fix use-after-free in i40e_client_subtask()
      i40e: fix broken XDP support
      netfilter: nftables: avoid potential overflows on 32bit arches
      netfilter: nftables: avoid overflows in nft_hash_buckets()
      tcp: Specify cmsgbuf is user pointer for receive zerocopy.
      mlxsw: spectrum_mr: Update egress RIF list before route's action
      net: ipa: fix inter-EE IRQ register definitions
      can: m_can: m_can_tx_work_queue(): fix tx_skb race condition
      can: mcp251x: fix resume from sleep before interface was brought up
      can: mcp251xfd: mcp251xfd_probe(): add missing can_rx_offload_del() in error path
      can: mcp251xfd: mcp251xfd_probe(): fix an error pointer dereference in probe
      netfilter: nftables: Fix a memleak from userdata error path in new objects
      netfilter: remove BUG_ON() after skb_header_pointer()
      netfilter: nfnetlink_osf: Fix a missing skb_header_pointer() NULL check
      ...
    torvalds committed May 8, 2021
  10. linux/kconfig.h: replace IF_ENABLED() with PTR_IF() in <linux/kernel.h>

    <linux/kconfig.h> is included from all the kernel-space source files,
    including C, assembly, linker scripts. It is intended to contain a
    minimal set of macros to evaluate CONFIG options.
    
    IF_ENABLED() is an intruder here because (x ? y : z) is C code, which
    should not be included from assembly files or linker scripts.
    
    Also, <linux/kconfig.h> is no longer self-contained because NULL is
    defined in <linux/stddef.h>.
    
    Move IF_ENABLED() out to <linux/kernel.h> as PTR_IF(). PTF_IF()
    takes the general boolean expression instead of a CONFIG option
    so that it fits better in <linux/kernel.h>.
    
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    masahir0y committed May 8, 2021
  11. Merge branch 'master' into next

    Merge master back into next, this allows us to resolve some conflicts in
    arch/powerpc/Kconfig, and also re-sort the symbols under config PPC so
    that they are in alphabetical order again.
    mpe committed May 8, 2021

Commits on May 7, 2021

  1. Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf

    Pablo Neira Ayuso says:
    
    ====================
    Netfilter fixes for net
    
    1) Add SECMARK revision 1 to fix incorrect layout that prevents
       from remove rule with this target, from Phil Sutter.
    
    2) Fix pernet exit path spat in arptables, from Florian Westphal.
    
    3) Missing rcu_read_unlock() for unknown nfnetlink callbacks,
       reported by syzbot, from Eric Dumazet.
    
    4) Missing check for skb_header_pointer() NULL pointer in
       nfnetlink_osf.
    
    5) Remove BUG_ON() after skb_header_pointer() from packet path
       in several conntrack helper and the TCP tracker.
    
    6) Fix memleak in the new object error path of userdata.
    
    7) Avoid overflows in nft_hash_buckets(), reported by syzbot,
       also from Eric.
    
    8) Avoid overflows in 32bit arches, from Eric.
    
    * git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf:
      netfilter: nftables: avoid potential overflows on 32bit arches
      netfilter: nftables: avoid overflows in nft_hash_buckets()
      netfilter: nftables: Fix a memleak from userdata error path in new objects
      netfilter: remove BUG_ON() after skb_header_pointer()
      netfilter: nfnetlink_osf: Fix a missing skb_header_pointer() NULL check
      netfilter: nfnetlink: add a missing rcu_read_unlock()
      netfilter: arptables: use pernet ops struct during unregister
      netfilter: xt_SECMARK: add new revision to fix structure layout
    ====================
    
    Link: https://lore.kernel.org/r/20210507174739.1850-1-pablo@netfilter.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Jakub Kicinski committed May 7, 2021
  2. Merge branch '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git…

    …/tnguy/net-queue
    
    Nguyen, Anthony L says:
    
    ====================
    Intel Wired LAN Driver Updates 2021-05-07
    
    This series contains updates to i40e driver only.
    
    Magnus fixes XDP by adding and correcting checks that were caused by a
    previous commit which introduced a new variable but did not account for
    it in all paths.
    
    Yunjian Wang adds a return in an error path to prevent reading a freed
    pointer.
    
    Jaroslaw forces link reset when changing FEC so that changes take
    affect.
    
    Mateusz fixes PHY types for 2.5G and 5G as there is a differentiation on
    PHY identifiers based on operation.
    
    Arkadiusz removes filtering of LLDP frames for software DCB as this is
    preventing them from being properly transmitted.
    
    * '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue:
      i40e: Remove LLDP frame filters
      i40e: Fix PHY type identifiers for 2.5G and 5G adapters
      i40e: fix the restart auto-negotiation after FEC modified
      i40e: Fix use-after-free in i40e_client_subtask()
      i40e: fix broken XDP support
    ====================
    
    Link: https://lore.kernel.org/r/20210507164151.2878147-1-anthony.l.nguyen@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Jakub Kicinski committed May 7, 2021
  3. atm: firestream: Use fallthrough pseudo-keyword

    Add pseudo-keyword macro fallthrough[1]
    
    [1] https://www.kernel.org/doc/html/latest/process/deprecated.html?highlight=fallthrough#implicit-switch-case-fall-through
    
    Signed-off-by: Wei Ming Chen <jj251510319013@gmail.com>
    Link: https://lore.kernel.org/r/20210507123843.10602-1-jj251510319013@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    AristoChen authored and Jakub Kicinski committed May 7, 2021
  4. net: stmmac: Do not enable RX FIFO overflow interrupts

    The RX FIFO overflows when the system is not able to process all received
    packets and they start accumulating (first in the DMA queue in memory,
    then in the FIFO). An interrupt is then raised for each overflowing packet
    and handled in stmmac_interrupt(). This is counter-productive, since it
    brings the system (or more likely, one CPU core) to its knees to process
    the FIFO overflow interrupts.
    
    stmmac_interrupt() handles overflow interrupts by writing the rx tail ptr
    into the corresponding hardware register (according to the MAC spec, this
    has the effect of restarting the MAC DMA). However, without freeing any rx
    descriptors, the DMA stops right away, and another overflow interrupt is
    raised as the FIFO overflows again. Since the DMA is already restarted at
    the end of stmmac_rx_refill() after freeing descriptors, disabling FIFO
    overflow interrupts and the corresponding handling code has no side effect,
    and eliminates the interrupt storm when the RX FIFO overflows.
    
    Signed-off-by: Yannick Vignon <yannick.vignon@nxp.com>
    Link: https://lore.kernel.org/r/20210506143312.20784-1-yannick.vignon@oss.nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Yackou authored and Jakub Kicinski committed May 7, 2021
  5. mptcp: fix splat when closing unaccepted socket

    If userspace exits before calling accept() on a listener that had at least
    one new connection ready, we get:
    
       Attempt to release TCP socket in state 8
    
    This happens because the mptcp socket gets cloned when the TCP connection
    is ready, but the socket is never exposed to userspace.
    
    The client additionally sends a DATA_FIN, which brings connection into
    CLOSE_WAIT state.  This in turn prevents the orphan+state reset fixup
    in mptcp_sock_destruct() from doing its job.
    
    Fixes: 3721b9b ("mptcp: Track received DATA_FIN sequence number and add related helpers")
    Closes: multipath-tcp/mptcp_net-next#185
    Tested-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
    Link: https://lore.kernel.org/r/20210507001638.225468-1-mathew.j.martineau@linux.intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Paolo Abeni authored and Jakub Kicinski committed May 7, 2021
  6. Merge tag 'tag-chrome-platform-for-v5.13' of git://git.kernel.org/pub…

    …/scm/linux/kernel/git/chrome-platform/linux
    
    Pull chrome platform updates from Benson Leung:
     "cros_ec_typec:
    
       - Changes around DP mode check, hard reset, tracking port change.
    
      cros_ec misc:
    
       - wilco_ec: Convert stream-like files from nonseekable to stream open
    
       - cros_usbpd_notify: Listen to EC_HSOT_EVENT_USB_MUX host event
    
       - fix format warning in cros_ec_typec"
    
    * tag 'tag-chrome-platform-for-v5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/chrome-platform/linux:
      platform/chrome: cros_ec_lpc: Use DEFINE_MUTEX() for mutex lock
      platform/chrome: cros_usbpd_notify: Listen to EC_HOST_EVENT_USB_MUX host event
      platform/chrome: cros_ec_typec: Add DP mode check
      platform/chrome: cros_ec_typec: Handle hard reset
      platform/chrome: cros_ec: Add Type C hard reset
      platform/chrome: cros_ec_typec: Track port role
      platform/chrome: cros_ec_typec: fix clang -Wformat warning
      platform/chrome: cros_ec_typec: Check for device within remove function
      platform/chrome: wilco_ec: convert stream-like files from nonseekable_open -> stream_open
    torvalds committed May 7, 2021
  7. Merge tag 'i3c/for-5.13' of git://git.kernel.org/pub/scm/linux/kernel…

    …/git/i3c/linux
    
    Pull i3cupdates from Alexandre Belloni:
     "Fix i3c_master_register error path"
    
    * tag 'i3c/for-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux:
      Revert "i3c master: fix missing destroy_workqueue() on error in i3c_master_register"
      dt-bindings: i3c: Fix silvaco,i3c-master-v1 compatible string
      i3c: master: svc: remove redundant assignment to cmd->read_len
    torvalds committed May 7, 2021
Older