Skip to content
  1. Dec 11, 2021
    • Adrian Hunter's avatar
      perf intel-pt: Fix next 'err' value, walking trace · a32e6c5d
      Adrian Hunter authored
      Code after label 'next:' in intel_pt_walk_trace() assumes 'err' is zero,
      but it may not be, if arrived at via a 'goto'. Ensure it is zero.
      
      Fixes: 7c1b16ba
      
       ("perf intel-pt: Add support for decoding FUP/TIP only")
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: stable@vger.kernel.org # v5.15+
      Link: https://lore.kernel.org/r/20211210162303.2288710-6-adrian.hunter@intel.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      a32e6c5d
    • Adrian Hunter's avatar
      perf intel-pt: Fix state setting when receiving overflow (OVF) packet · c79ee2b2
      Adrian Hunter authored
      An overflow (OVF packet) is treated as an error because it represents a
      loss of trace data, but there is no loss of synchronization, so the packet
      state should be INTEL_PT_STATE_IN_SYNC not INTEL_PT_STATE_ERR_RESYNC.
      
      To support that, some additional variables must be reset, and the FUP
      packet that may follow OVF is treated as an FUP event.
      
      Fixes: f4aa0819
      
       ("perf tools: Add Intel PT decoder")
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: stable@vger.kernel.org # v5.15+
      Link: https://lore.kernel.org/r/20211210162303.2288710-5-adrian.hunter@intel.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      c79ee2b2
    • Adrian Hunter's avatar
      perf intel-pt: Fix intel_pt_fup_event() assumptions about setting state type · 4c761d80
      Adrian Hunter authored
      intel_pt_fup_event() assumes it can overwrite the state type if there has
      been an FUP event, but this is an unnecessary and unexpected constraint on
      callers.
      
      Fix by touching only the state type flags that are affected by an FUP
      event.
      
      Fixes: a472e65f
      
       ("perf intel-pt: Add decoder support for ptwrite and power event packets")
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: stable@vger.kernel.org # v5.15+
      Link: https://lore.kernel.org/r/20211210162303.2288710-4-adrian.hunter@intel.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      4c761d80
    • Adrian Hunter's avatar
      perf intel-pt: Fix sync state when a PSB (synchronization) packet is found · ad106a26
      Adrian Hunter authored
      When syncing, it may be that branch packet generation is not enabled at
      that point, in which case there will not immediately be a control-flow
      packet, so some packets before a control flow packet turns up, get
      ignored.  However, the decoder is in sync as soon as a PSB is found, so
      the state should be set accordingly.
      
      Fixes: f4aa0819
      
       ("perf tools: Add Intel PT decoder")
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: stable@vger.kernel.org # v5.15+
      Link: https://lore.kernel.org/r/20211210162303.2288710-3-adrian.hunter@intel.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      ad106a26
    • Adrian Hunter's avatar
      perf intel-pt: Fix some PGE (packet generation enable/control flow packets) usage · 057ae59f
      Adrian Hunter authored
      Packet generation enable (PGE) refers to whether control flow (COFI)
      packets are being produced.
      
      PGE may be false even when branch-tracing is enabled, due to being
      out-of-context, or outside a filter address range.  Fix some missing PGE
      usage.
      
      Fixes: 7c1b16ba ("perf intel-pt: Add support for decoding FUP/TIP only")
      Fixes: 83959817
      
       ("perf intel-pt: Allow decoding with branch tracing disabled")
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: stable@vger.kernel.org # v5.15+
      Link: https://lore.kernel.org/r/20211210162303.2288710-2-adrian.hunter@intel.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      057ae59f
    • German Gomez's avatar
      perf tools: Prevent out-of-bounds access to registers · c8978997
      German Gomez authored
      
      
      The size of the cache of register values is arch-dependant
      (PERF_REGS_MAX). This has the potential of causing an out-of-bounds
      access in the function "perf_reg_value" if the local architecture
      contains less registers than the one the perf.data file was recorded on.
      
      Since the maximum number of registers is bound by the bitmask "u64
      cache_mask", and the size of the cache when running under x86 systems is
      64 already, fix the size to 64 and add a range-check to the function
      "perf_reg_value" to prevent out-of-bounds access.
      
      Reported-by: default avatarAlexandre Truong <alexandre.truong@arm.com>
      Reviewed-by: default avatarKajol Jain <kjain@linux.ibm.com>
      Signed-off-by: default avatarGerman Gomez <german.gomez@arm.com>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: John Garry <john.garry@huawei.com>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Will Deacon <will@kernel.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linux-csky@vger.kernel.org
      Cc: linux-riscv@lists.infradead.org
      Link: https://lore.kernel.org/r/20211201123334.679131-2-german.gomez@arm.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      c8978997
    • Linus Torvalds's avatar
      Merge tag 'for-5.16-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux · 6f513529
      Linus Torvalds authored
      Pull btrfs fixes from David Sterba:
       "A few more regression fixes and stable patches, mostly one-liners.
      
        Regression fixes:
      
         - fix pointer/ERR_PTR mismatch returned from memdup_user
      
         - reset dedicated zoned mode relocation block group to avoid using it
           and filling it without any recourse
      
        Fixes:
      
         - handle a case to FITRIM range (also to make fstests/generic/260
           work)
      
         - fix warning when extent buffer state and pages get out of sync
           after an IO error
      
         - fix transaction abort when syncing due to missing mapping error set
           on metadata inode after inlining a compressed file
      
         - fix transaction abort due to tree-log and zoned mode interacting in
           an unexpected way
      
         - fix memory leak of additional extent data when qgroup reservation
           fails
      
         - do proper handling of slot search call when deleting root refs"
      
      * tag 'for-5.16-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
        btrfs: replace the BUG_ON in btrfs_del_root_ref with proper error handling
        btrfs: zoned: clear data relocation bg on zone finish
        btrfs: free exchange changeset on failures
        btrfs: fix re-dirty process of tree-log nodes
        btrfs: call mapping_set_error() on btree inode with a write error
        btrfs: clear extent buffer uptodate when we fail to write it
        btrfs: fail if fstrim_range->start == U64_MAX
        btrfs: fix error pointer dereference in btrfs_ioctl_rm_dev_v2()
      6f513529
    • Linus Torvalds's avatar
      Merge tag '5.16-rc4-smb3-fixes' of git://git.samba.org/sfrench/cifs-2.6 · e1b96811
      Linus Torvalds authored
      Pull cifs fixes from Steve French:
       "Two cifs/smb3 fixes - one for stable, the other fixes a recently
        reported NTLMSSP auth problem"
      
      * tag '5.16-rc4-smb3-fixes' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: fix ntlmssp auth when there is no key exchange
        cifs: Fix crash on unload of cifs_arc4.ko
      e1b96811
    • Linus Torvalds's avatar
      Merge tag 'nfsd-5.16-2' of git://linux-nfs.org/~bfields/linux · e80bdc5e
      Linus Torvalds authored
      Pull nfsd fixes from Bruce Fields:
       "Fix a race on startup and another in the delegation code.
      
        The latter has been around for years, but I suspect recent changes may
        have widened the race window a little, so I'd like to go ahead and get
        it in"
      
      * tag 'nfsd-5.16-2' of git://linux-nfs.org/~bfields/linux:
        nfsd: fix use-after-free due to delegation race
        nfsd: Fix nsfd startup race (again)
      e80bdc5e
    • Linus Torvalds's avatar
      Merge tag 'thermal-5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · b9902641
      Linus Torvalds authored
      Pull thermal control fix from Rafael Wysocki:
       "Fix the definition of one of the Tiger Lake MMIO registers in the
        int340x thermal driver (Sumeet Pawnikar)"
      
      * tag 'thermal-5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        thermal: int340x: Fix VCoRefLow MMIO bit offset for TGL
      b9902641
    • Linus Torvalds's avatar
      Merge tag 'acpi-5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 9e65da13
      Linus Torvalds authored
      Pull ACPI fix from Rafael Wysocki:
       "Create the output directory for the ACPI tools during build if it has
        not been present before and prevent the compilation from failing in
        that case (Chen Yu)"
      
      * tag 'acpi-5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPI: tools: Fix compilation when output directory is not present
      9e65da13
    • Linus Torvalds's avatar
      Merge tag 'pm-5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · d46bca63
      Linus Torvalds authored
      Pull power management fix from Rafael Wysocki:
       "Fix a kernedoc comment that doesn't match the behavior of the function
        documented by it"
      
      * tag 'pm-5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        PM: runtime: Fix pm_runtime_active() kerneldoc comment
      d46bca63
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-v5.16-rc5' of... · 1e050cd5
      Linus Torvalds authored
      Merge tag 'hwmon-for-v5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull hwmon fixes from Guenter Roeck:
      
       - In the pwm-fan driver, ensure that the internal pwm state matches the
         state assumed by the pwm code.
      
       - Avoid EREMOTEIO errors in sht4 driver
      
       - In the nct6775 driver, make it explicit that the register value
         passed to nct6775_asuswmi_read() is an 8-bit value
      
       - Avoid WARNing in dell-smm driver removal after failing to create
         /proc/i8k
      
       - Stop using a plain integer as NULL pointer in corsair-psu driver
      
      * tag 'hwmon-for-v5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (pwm-fan) Ensure the fan going on in .probe()
        hwmon: (sht4x) Fix EREMOTEIO errors
        hwmon: (nct6775) mask out bank number in nct6775_wmi_read_value()
        hwmon: (dell-smm) Fix warning on /proc/i8k creation error
        hwmon: (corsair-psu) fix plain integer used as NULL pointer
      1e050cd5
    • Linus Torvalds's avatar
      Merge tag 'trace-v5.16-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace · 257dcf29
      Linus Torvalds authored
      Pull tracing fixes from Steven Rostedt:
       "Tracing, ftrace and tracefs fixes:
      
         - Have tracefs honor the gid mount option
      
         - Have new files in tracefs inherit the parent ownership
      
         - Have direct_ops unregister when it has no more functions
      
         - Properly clean up the ops when unregistering multi direct ops
      
         - Add a sample module to test the multiple direct ops
      
         - Fix memory leak in error path of __create_synth_event()"
      
      * tag 'trace-v5.16-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
        tracing: Fix possible memory leak in __create_synth_event() error path
        ftrace/samples: Add module to test multi direct modify interface
        ftrace: Add cleanup to unregister_ftrace_direct_multi
        ftrace: Use direct_ops hash in unregister_ftrace_direct
        tracefs: Set all files to the same group ownership as the mount option
        tracefs: Have new files inherit the ownership of their parent
      257dcf29
    • Linus Torvalds's avatar
      Merge tag 'aio-poll-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux · 0d21e668
      Linus Torvalds authored
      Pull aio poll fixes from Eric Biggers:
       "Fix three bugs in aio poll, and one issue with POLLFREE more broadly:
      
         - aio poll didn't handle POLLFREE, causing a use-after-free.
      
         - aio poll could block while the file is ready.
      
         - aio poll called eventfd_signal() when it isn't allowed.
      
         - POLLFREE didn't handle multiple exclusive waiters correctly.
      
        This has been tested with the libaio test suite, as well as with test
        programs I wrote that reproduce the first two bugs. I am sending this
        pull request myself as no one seems to be maintaining this code"
      
      * tag 'aio-poll-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux:
        aio: Fix incorrect usage of eventfd_signal_allowed()
        aio: fix use-after-free due to missing POLLFREE handling
        aio: keep poll requests on waitqueue until completed
        signalfd: use wake_up_pollfree()
        binder: use wake_up_pollfree()
        wait: add wake_up_pollfree()
      0d21e668
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · b9172f9e
      Linus Torvalds authored
      Pull kvm fixes from Paolo Bonzini:
       "More x86 fixes:
      
         - Logic bugs in CR0 writes and Hyper-V hypercalls
      
         - Don't use Enlightened MSR Bitmap for L3
      
         - Remove user-triggerable WARN
      
        Plus a few selftest fixes and a regression test for the
        user-triggerable WARN"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        selftests: KVM: Add test to verify KVM doesn't explode on "bad" I/O
        KVM: x86: Don't WARN if userspace mucks with RCX during string I/O exit
        KVM: X86: Raise #GP when clearing CR0_PG in 64 bit mode
        selftests: KVM: avoid failures due to reserved HyperTransport region
        KVM: x86: Ignore sparse banks size for an "all CPUs", non-sparse IPI req
        KVM: x86: Wait for IPIs to be delivered when handling Hyper-V TLB flush hypercall
        KVM: x86: selftests: svm_int_ctl_test: fix intercept calculation
        KVM: nVMX: Don't use Enlightened MSR Bitmap for L3
      b9172f9e
    • Linus Torvalds's avatar
      Merge tag 'pci-v5.16-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci · b8a98b6b
      Linus Torvalds authored
      Pull PCI fixes from Bjorn Helgaas:
      
       - Revert emulation of Marvell Armada A3720 expansion ROM because it
         doesn't work as expected (Marek Behún)
      
       - Assert PERST# in Apple M1 driver to fix initialization when booting
         from bootloaders using PCIe, such as U-Boot (Marc Zyngier)
      
       - Describe PERST# as active low in Apple T8103 DT and update driver to
         match (Marc Zyngier)
      
      * tag 'pci-v5.16-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
        PCI: apple: Fix PERST# polarity
        arm64: dts: apple: t8103: Mark PCIe PERST# polarity active low in DT
        PCI: apple: Follow the PCIe specifications when resetting the port
        Revert "PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated bridge"
      b8a98b6b
    • Linus Torvalds's avatar
      Merge tag 'mmc-v5.16-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc · 2ca4b651
      Linus Torvalds authored
      Pull MMC host fixes from Ulf Hansson:
      
       - mtk-sd: Fix memory leak during tuning
      
       - renesas_sdhi: Initialize variable properly when tuning
      
      * tag 'mmc-v5.16-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
        mmc: mediatek: free the ext_csd when mmc_get_ext_csd success
        mmc: renesas_sdhi: initialize variable properly when tuning
      2ca4b651
    • Linus Torvalds's avatar
      Merge tag 'libata-5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata · bec8cb26
      Linus Torvalds authored
      Pull libata fixes from Damien Le Moal:
      
       - Fix a sparse warning in the ahci_ceva driver (me)
      
       - Disable the ASMedia 1092 non-functional device (Hannes)
      
      * tag 'libata-5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata:
        libata: add horkage for ASMedia 1092
        ata: ahci_ceva: Fix id array access in ceva_ahci_read_id()
      bec8cb26
    • Linus Torvalds's avatar
      Merge tag 'sound-5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 5b46fb03
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "Another collection of small fixes. It's still not quite calm yet, but
        nothing looks scary.
      
        ALSA core got a few fixes for covering the issues detected by fuzzer
        and the 32bit compat problem of control API, while the rest are all
        device-specific small fixes, including the continued fixes for Tegra"
      
      * tag 'sound-5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (23 commits)
        ALSA: hda/realtek - Add headset Mic support for Lenovo ALC897 platform
        ALSA: usb-audio: Reorder snd_djm_devices[] entries
        ALSA: hda/realtek: Fix quirk for TongFang PHxTxX1
        ALSA: ctl: Fix copy of updated id with element read/write
        ALSA: pcm: oss: Handle missing errors in snd_pcm_oss_change_params*()
        ALSA: pcm: oss: Limit the period size to 16MB
        ALSA: pcm: oss: Fix negative period/buffer sizes
        ASoC: codecs: wsa881x: fix return values from kcontrol put
        ASoC: codecs: wcd934x: return correct value from mixer put
        ASoC: codecs: wcd934x: handle channel mappping list correctly
        ASoC: qdsp6: q6routing: Fix return value from msm_routing_put_audio_mixer
        ASoC: SOF: Intel: Retry codec probing if it fails
        ASoC: amd: fix uninitialized variable in snd_acp6x_probe()
        ASoC: rockchip: i2s_tdm: Dup static DAI template
        ASoC: rt5682s: Fix crash due to out of scope stack vars
        ASoC: rt5682: Fix crash due to out of scope stack vars
        ASoC: tegra: Use normal system sleep for ADX
        ASoC: tegra: Use normal system sleep for AMX
        ASoC: tegra: Use normal system sleep for Mixer
        ASoC: tegra: Use normal system sleep for MVC
        ...
      5b46fb03
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2021-12-10' of git://anongit.freedesktop.org/drm/drm · 9b302ffe
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Regular fixes, pretty small overall, couple of core fixes, two i915
        and two amdgpu, hopefully it stays this quiet.
      
        ttm:
         - fix ttm_bo_swapout
      
        syncobj:
         - fix fence find bug with signalled fences
      
        i915:
         - fix error pointer deref in gem execbuffer
         - fix for GT init with GuC/HuC on ICL
      
        amdgpu:
         - DPIA fix
         - eDP fix"
      
      * tag 'drm-fixes-2021-12-10' of git://anongit.freedesktop.org/drm/drm:
        drm/i915/gen11: Moving WAs to icl_gt_workarounds_init()
        drm/amd/display: prevent reading unitialized links
        drm/amd/display: Fix DPIA outbox timeout after S3/S4/reset
        drm/i915: Fix error pointer dereference in i915_gem_do_execbuffer()
        drm/syncobj: Deal with signalled fences in drm_syncobj_find_fence.
        drm/ttm: fix ttm_bo_swapout
      9b302ffe
    • J. Bruce Fields's avatar
      nfsd: fix use-after-free due to delegation race · 548ec080
      J. Bruce Fields authored
      A delegation break could arrive as soon as we've called vfs_setlease.  A
      delegation break runs a callback which immediately (in
      nfsd4_cb_recall_prepare) adds the delegation to del_recall_lru.  If we
      then exit nfs4_set_delegation without hashing the delegation, it will be
      freed as soon as the callback is done with it, without ever being
      removed from del_recall_lru.
      
      Symptoms show up later as use-after-free or list corruption warnings,
      usually in the laundromat thread.
      
      I suspect aba2072f
      
       "nfsd: grant read delegations to clients holding
      writes" made this bug easier to hit, but I looked as far back as v3.0
      and it looks to me it already had the same problem.  So I'm not sure
      where the bug was introduced; it may have been there from the beginning.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      548ec080
    • Alexander Sverdlin's avatar
      nfsd: Fix nsfd startup race (again) · b10252c7
      Alexander Sverdlin authored
      Commit bd5ae928 ("nfsd: register pernet ops last, unregister first")
      has re-opened rpc_pipefs_event() race against nfsd_net_id registration
      (register_pernet_subsys()) which has been fixed by commit bb7ffbf2
      ("nfsd: fix nsfd startup race triggering BUG_ON").
      
      Restore the order of register_pernet_subsys() vs register_cld_notifier().
      Add WARN_ON() to prevent a future regression.
      
      Crash info:
      Unable to handle kernel NULL pointer dereference at virtual address 0000000000000012
      CPU: 8 PID: 345 Comm: mount Not tainted 5.4.144-... #1
      pc : rpc_pipefs_event+0x54/0x120 [nfsd]
      lr : rpc_pipefs_event+0x48/0x120 [nfsd]
      Call trace:
       rpc_pipefs_event+0x54/0x120 [nfsd]
       blocking_notifier_call_chain
       rpc_fill_super
       get_tree_keyed
       rpc_fs_get_tree
       vfs_get_tree
       do_mount
       ksys_mount
       __arm64_sys_mount
       el0_svc_handler
       el0_svc
      
      Fixes: bd5ae928
      
       ("nfsd: register pernet ops last, unregister first")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarAlexander Sverdlin <alexander.sverdlin@nokia.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      b10252c7
  2. Dec 10, 2021
    • Sean Christopherson's avatar
      selftests: KVM: Add test to verify KVM doesn't explode on "bad" I/O · 10e7a099
      Sean Christopherson authored
      Add an x86 selftest to verify that KVM doesn't WARN or otherwise explode
      if userspace modifies RCX during a userspace exit to handle string I/O.
      This is a regression test for a user-triggerable WARN introduced by
      commit 3b27de27
      
       ("KVM: x86: split the two parts of emulator_pio_in").
      
      Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
      Message-Id: <20211025201311.1881846-3-seanjc@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      10e7a099
    • Sean Christopherson's avatar
      KVM: x86: Don't WARN if userspace mucks with RCX during string I/O exit · d07898ea
      Sean Christopherson authored
      Replace a WARN with a comment to call out that userspace can modify RCX
      during an exit to userspace to handle string I/O.  KVM doesn't actually
      support changing the rep count during an exit, i.e. the scenario can be
      ignored, but the WARN needs to go as it's trivial to trigger from
      userspace.
      
      Cc: stable@vger.kernel.org
      Fixes: 3b27de27
      
       ("KVM: x86: split the two parts of emulator_pio_in")
      Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
      Message-Id: <20211025201311.1881846-2-seanjc@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      d07898ea
    • Lai Jiangshan's avatar
      KVM: X86: Raise #GP when clearing CR0_PG in 64 bit mode · 777ab82d
      Lai Jiangshan authored
      
      
      In the SDM:
      If the logical processor is in 64-bit mode or if CR4.PCIDE = 1, an
      attempt to clear CR0.PG causes a general-protection exception (#GP).
      Software should transition to compatibility mode and clear CR4.PCIDE
      before attempting to disable paging.
      
      Signed-off-by: default avatarLai Jiangshan <laijs@linux.alibaba.com>
      Message-Id: <20211207095230.53437-1-jiangshanlai@gmail.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      777ab82d
    • Paolo Bonzini's avatar
      selftests: KVM: avoid failures due to reserved HyperTransport region · c8cc43c1
      Paolo Bonzini authored
      AMD proceessors define an address range that is reserved by HyperTransport
      and causes a failure if used for guest physical addresses.  Avoid
      selftests failures by reserving those guest physical addresses; the
      rules are:
      
      - On parts with <40 bits, its fully hidden from software.
      
      - Before Fam17h, it was always 12G just below 1T, even if there was more
      RAM above this location.  In this case we just not use any RAM above 1T.
      
      - On Fam17h and later, it is variable based on SME, and is either just
      below 2^48 (no encryption) or 2^43 (encryption).
      
      Fixes: ef4c9f4f
      
       ("KVM: selftests: Fix 32-bit truncation of vm_get_max_gfn()")
      Cc: stable@vger.kernel.org
      Cc: David Matlack <dmatlack@google.com>
      Reported-by: default avatarMaxim Levitsky <mlevitsk@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Message-Id: <20210805105423.412878-1-pbonzini@redhat.com>
      Reviewed-by: default avatarSean Christopherson <seanjc@google.com>
      Tested-by: default avatarSean Christopherson <seanjc@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      c8cc43c1
    • Sean Christopherson's avatar
      KVM: x86: Ignore sparse banks size for an "all CPUs", non-sparse IPI req · 3244867a
      Sean Christopherson authored
      Do not bail early if there are no bits set in the sparse banks for a
      non-sparse, a.k.a. "all CPUs", IPI request.  Per the Hyper-V spec, it is
      legal to have a variable length of '0', e.g. VP_SET's BankContents in
      this case, if the request can be serviced without the extra info.
      
        It is possible that for a given invocation of a hypercall that does
        accept variable sized input headers that all the header input fits
        entirely within the fixed size header. In such cases the variable sized
        input header is zero-sized and the corresponding bits in the hypercall
        input should be set to zero.
      
      Bailing early results in KVM failing to send IPIs to all CPUs as expected
      by the guest.
      
      Fixes: 214ff83d
      
       ("KVM: x86: hyperv: implement PV IPI send hypercalls")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
      Reviewed-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
      Message-Id: <20211207220926.718794-2-seanjc@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      3244867a
    • Vitaly Kuznetsov's avatar
      KVM: x86: Wait for IPIs to be delivered when handling Hyper-V TLB flush hypercall · 1ebfaa11
      Vitaly Kuznetsov authored
      Prior to commit 0baedd79 ("KVM: x86: make Hyper-V PV TLB flush use
      tlb_flush_guest()"), kvm_hv_flush_tlb() was using 'KVM_REQ_TLB_FLUSH |
      KVM_REQUEST_NO_WAKEUP' when making a request to flush TLBs on other vCPUs
      and KVM_REQ_TLB_FLUSH is/was defined as:
      
       (0 | KVM_REQUEST_WAIT | KVM_REQUEST_NO_WAKEUP)
      
      so KVM_REQUEST_WAIT was lost. Hyper-V TLFS, however, requires that
      "This call guarantees that by the time control returns back to the
      caller, the observable effects of all flushes on the specified virtual
      processors have occurred." and without KVM_REQUEST_WAIT there's a small
      chance that the vCPU making the TLB flush will resume running before
      all IPIs get delivered to other vCPUs and a stale mapping can get read
      there.
      
      Fix the issue by adding KVM_REQUEST_WAIT flag to KVM_REQ_TLB_FLUSH_GUEST:
      kvm_hv_flush_tlb() is the sole caller which uses it for
      kvm_make_all_cpus_request()/kvm_make_vcpus_request_mask() where
      KVM_REQUEST_WAIT makes a difference.
      
      Cc: stable@kernel.org
      Fixes: 0baedd79
      
       ("KVM: x86: make Hyper-V PV TLB flush use tlb_flush_guest()")
      Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
      Message-Id: <20211209102937.584397-1-vkuznets@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      1ebfaa11
    • Dave Airlie's avatar
      Merge tag 'amd-drm-fixes-5.16-2021-12-08' of... · 675a0957
      Dave Airlie authored
      
      Merge tag 'amd-drm-fixes-5.16-2021-12-08' of https://gitlab.freedesktop.org/agd5f/linux into drm-fixes
      
      amd-drm-fixes-5.16-2021-12-08:
      
      amdgpu:
      - DPIA fix
      - eDP fix
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Alex Deucher <alexander.deucher@amd.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20211209042824.6720-1-alexander.deucher@amd.com
      675a0957
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2021-12-09' of... · 233bee7e
      Dave Airlie authored
      
      Merge tag 'drm-intel-fixes-2021-12-09' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
      
      A fix to a error pointer dereference in gem_execbuffer and
      a fix for GT initialization when GuC/HuC are used on ICL.
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/YbJVWYAd/jeERCYY@intel.com
      233bee7e
    • Dave Airlie's avatar
      Merge tag 'drm-misc-fixes-2021-12-09' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes · 2eb557d2
      Dave Airlie authored
      
      
      A fix in syncobj to handle fence already signalled better, and a fix for
      a ttm_bo_swapout eviction check.
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Maxime Ripard <maxime@cerno.tech>
      Link: https://patchwork.freedesktop.org/patch/msgid/20211209124305.gxhid5zwf7m4oasn@houat
      2eb557d2
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma · c741e491
      Linus Torvalds authored
      Pull rdma fixes from Jason Gunthorpe:
       "Quite a few small bug fixes old and new, also Doug Ledford is retiring
        now, we thank him for his work. Details:
      
         - Use after free in rxe
      
         - mlx5 DM regression
      
         - hns bugs triggred by device reset
      
         - Two fixes for CONFIG_DEBUG_PREEMPT
      
         - Several longstanding corner case bugs in hfi1
      
         - Two irdma data path bugs in rare cases and some memory issues"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma:
        RDMA/irdma: Don't arm the CQ more than two times if no CE for this CQ
        RDMA/irdma: Report correct WC errors
        RDMA/irdma: Fix a potential memory allocation issue in 'irdma_prm_add_pble_mem()'
        RDMA/irdma: Fix a user-after-free in add_pble_prm
        IB/hfi1: Fix leak of rcvhdrtail_dummy_kvaddr
        IB/hfi1: Fix early init panic
        IB/hfi1: Insure use of smp_processor_id() is preempt disabled
        IB/hfi1: Correct guard on eager buffer deallocation
        RDMA/rtrs: Call {get,put}_cpu_ptr to silence a debug kernel warning
        RDMA/hns: Do not destroy QP resources in the hw resetting phase
        RDMA/hns: Do not halt commands during reset until later
        Remove Doug Ledford from MAINTAINERS
        RDMA/mlx5: Fix releasing unallocated memory in dereg MR flow
        RDMA: Fix use-after-free in rxe_queue_cleanup
      c741e491
    • Linus Torvalds's avatar
      Merge tag 'net-5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · ded746bf
      Linus Torvalds authored
      Pull networking fixes from Jakub Kicinski:
       "Including fixes from bpf, can and netfilter.
      
        Current release - regressions:
      
         - bpf, sockmap: re-evaluate proto ops when psock is removed from
           sockmap
      
        Current release - new code bugs:
      
         - bpf: fix bpf_check_mod_kfunc_call for built-in modules
      
         - ice: fixes for TC classifier offloads
      
         - vrf: don't run conntrack on vrf with !dflt qdisc
      
        Previous releases - regressions:
      
         - bpf: fix the off-by-two error in range markings
      
         - seg6: fix the iif in the IPv6 socket control block
      
         - devlink: fix netns refcount leak in devlink_nl_cmd_reload()
      
         - dsa: mv88e6xxx: fix "don't use PHY_DETECT on internal PHY's"
      
         - dsa: mv88e6xxx: allow use of PHYs on CPU and DSA ports
      
        Previous releases - always broken:
      
         - ethtool: do not perform operations on net devices being
           unregistered
      
         - udp: use datalen to cap max gso segments
      
         - ice: fix races in stats collection
      
         - fec: only clear interrupt of handling queue in fec_enet_rx_queue()
      
         - m_can: pci: fix incorrect reference clock rate
      
         - m_can: disable and ignore ELO interrupt
      
         - mvpp2: fix XDP rx queues registering
      
        Misc:
      
         - treewide: add missing includes masked by cgroup -> bpf.h
           dependency"
      
      * tag 'net-5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (82 commits)
        net: dsa: mv88e6xxx: allow use of PHYs on CPU and DSA ports
        net: wwan: iosm: fixes unable to send AT command during mbim tx
        net: wwan: iosm: fixes net interface nonfunctional after fw flash
        net: wwan: iosm: fixes unnecessary doorbell send
        net: dsa: felix: Fix memory leak in felix_setup_mmio_filtering
        MAINTAINERS: s390/net: remove myself as maintainer
        net/sched: fq_pie: prevent dismantle issue
        net: mana: Fix memory leak in mana_hwc_create_wq
        seg6: fix the iif in the IPv6 socket control block
        nfp: Fix memory leak in nfp_cpp_area_cache_add()
        nfc: fix potential NULL pointer deref in nfc_genl_dump_ses_done
        nfc: fix segfault in nfc_genl_dump_devices_done
        udp: using datalen to cap max gso segments
        net: dsa: mv88e6xxx: error handling for serdes_power functions
        can: kvaser_usb: get CAN clock frequency from device
        can: kvaser_pciefd: kvaser_pciefd_rx_error_frame(): increase correct stats->{rx,tx}_errors counter
        net: mvpp2: fix XDP rx queues registering
        vmxnet3: fix minimum vectors alloc issue
        net, neigh: clear whole pneigh_entry at alloc time
        net: dsa: mv88e6xxx: fix "don't use PHY_DETECT on internal PHY's"
        ...
      ded746bf
    • Linus Torvalds's avatar
      Merge tag 'mtd/fixes-for-5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux · 27698cd2
      Linus Torvalds authored
      Pull mtd fixes from Miquel Raynal:
       "MTD fixes:
      
         - dataflash: Add device-tree SPI IDs to avoid new warnings
      
        Raw NAND fixes:
      
         - Fix nand_choose_best_timings() on unsupported interface
      
         - Fix nand_erase_op delay (wrong unit)
      
         - fsmc:
            - Fix timing computation
            - Take instruction delay into account
      
         - denali:
            - Add the dependency on HAS_IOMEM to silence robots"
      
      * tag 'mtd/fixes-for-5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux:
        mtd: dataflash: Add device-tree SPI IDs
        mtd: rawnand: fsmc: Fix timing computation
        mtd: rawnand: fsmc: Take instruction delay into account
        mtd: rawnand: Fix nand_choose_best_timings() on unsupported interface
        mtd: rawnand: Fix nand_erase_op delay
        mtd: rawnand: denali: Add the dependency on HAS_IOMEM
      27698cd2
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid · 03090cc7
      Linus Torvalds authored
      Pull HID fixes from Jiri Kosina:
      
       - fixes for various drivers which assume that a HID device is on USB
         transport, but that might not necessarily be the case, as the device
         can be faked by uhid. (Greg, Benjamin Tissoires)
      
       - fix for spurious wakeups on certain Lenovo notebooks (Thomas
         Weißschuh)
      
       - a few other device-specific quirks
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid:
        HID: Ignore battery for Elan touchscreen on Asus UX550VE
        HID: intel-ish-hid: ipc: only enable IRQ wakeup when requested
        HID: google: add eel USB id
        HID: add USB_HID dependancy to hid-prodikeys
        HID: add USB_HID dependancy to hid-chicony
        HID: bigbenff: prevent null pointer dereference
        HID: sony: fix error path in probe
        HID: add USB_HID dependancy on some USB HID drivers
        HID: check for valid USB device for many HID drivers
        HID: wacom: fix problems when device is not a valid USB device
        HID: add hid_is_usb() function to make it simpler for USB detection
        HID: quirks: Add quirk for the Microsoft Surface 3 type-cover
      03090cc7
    • Xie Yongji's avatar
      aio: Fix incorrect usage of eventfd_signal_allowed() · 4b374986
      Xie Yongji authored
      We should defer eventfd_signal() to the workqueue when
      eventfd_signal_allowed() return false rather than return
      true.
      
      Fixes: b542e383
      
       ("eventfd: Make signal recursion protection a task bit")
      Signed-off-by: default avatarXie Yongji <xieyongji@bytedance.com>
      Link: https://lore.kernel.org/r/20210913111928.98-1-xieyongji@bytedance.com
      Reviewed-by: default avatarEric Biggers <ebiggers@google.com>
      Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
      4b374986
    • Eric Biggers's avatar
      aio: fix use-after-free due to missing POLLFREE handling · 50252e4b
      Eric Biggers authored
      signalfd_poll() and binder_poll() are special in that they use a
      waitqueue whose lifetime is the current task, rather than the struct
      file as is normally the case.  This is okay for blocking polls, since a
      blocking poll occurs within one task; however, non-blocking polls
      require another solution.  This solution is for the queue to be cleared
      before it is freed, by sending a POLLFREE notification to all waiters.
      
      Unfortunately, only eventpoll handles POLLFREE.  A second type of
      non-blocking poll, aio poll, was added in kernel v4.18, and it doesn't
      handle POLLFREE.  This allows a use-after-free to occur if a signalfd or
      binder fd is polled with aio poll, and the waitqueue gets freed.
      
      Fix this by making aio poll handle POLLFREE.
      
      A patch by Ramji Jiyani <ramjiyani@google.com>
      (https://lore.kernel.org/r/20211027011834.2497484-1-ramjiyani@google.com)
      tried to do this by making aio_poll_wake() always complete the request
      inline if POLLFREE is seen.  However, that solution had two bugs.
      First, it introduced a deadlock, as it unconditionally locked the aio
      context while holding the waitqueue lock, which inverts the normal
      locking order.  Second, it didn't consider that POLLFREE notifications
      are missed while the request has been temporarily de-queued.
      
      The second problem was solved by my previous patch.  This patch then
      properly fixes the use-after-free by handling POLLFREE in a
      deadlock-free way.  It does this by taking advantage of the fact that
      freeing of the waitqueue is RCU-delayed, similar to what eventpoll does.
      
      Fixes: 2c14fa83
      
       ("aio: implement IOCB_CMD_POLL")
      Cc: <stable@vger.kernel.org> # v4.18+
      Link: https://lore.kernel.org/r/20211209010455.42744-6-ebiggers@kernel.org
      Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
      50252e4b
    • Eric Biggers's avatar
      aio: keep poll requests on waitqueue until completed · 363bee27
      Eric Biggers authored
      Currently, aio_poll_wake() will always remove the poll request from the
      waitqueue.  Then, if aio_poll_complete_work() sees that none of the
      polled events are ready and the request isn't cancelled, it re-adds the
      request to the waitqueue.  (This can easily happen when polling a file
      that doesn't pass an event mask when waking up its waitqueue.)
      
      This is fundamentally broken for two reasons:
      
        1. If a wakeup occurs between vfs_poll() and the request being
           re-added to the waitqueue, it will be missed because the request
           wasn't on the waitqueue at the time.  Therefore, IOCB_CMD_POLL
           might never complete even if the polled file is ready.
      
        2. When the request isn't on the waitqueue, there is no way to be
           notified that the waitqueue is being freed (which happens when its
           lifetime is shorter than the struct file's).  This is supposed to
           happen via the waitqueue entries being woken up with POLLFREE.
      
      Therefore, leave the requests on the waitqueue until they are actually
      completed (or cancelled).  To keep track of when aio_poll_complete_work
      needs to be scheduled, use new fields in struct poll_iocb.  Remove the
      'done' field which is now redundant.
      
      Note that this is consistent with how sys_poll() and eventpoll work;
      their wakeup functions do *not* remove the waitqueue entries.
      
      Fixes: 2c14fa83
      
       ("aio: implement IOCB_CMD_POLL")
      Cc: <stable@vger.kernel.org> # v4.18+
      Link: https://lore.kernel.org/r/20211209010455.42744-5-ebiggers@kernel.org
      Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
      363bee27
    • Eric Biggers's avatar
      signalfd: use wake_up_pollfree() · 9537bae0
      Eric Biggers authored
      
      
      wake_up_poll() uses nr_exclusive=1, so it's not guaranteed to wake up
      all exclusive waiters.  Yet, POLLFREE *must* wake up all waiters.  epoll
      and aio poll are fortunately not affected by this, but it's very
      fragile.  Thus, the new function wake_up_pollfree() has been introduced.
      
      Convert signalfd to use wake_up_pollfree().
      
      Reported-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Fixes: d80e731e
      
       ("epoll: introduce POLLFREE to flush ->signalfd_wqh before kfree()")
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/r/20211209010455.42744-4-ebiggers@kernel.org
      Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
      9537bae0