Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix pwm-gpio build error #40

Closed
wants to merge 2,538 commits into from
Closed

Fix pwm-gpio build error #40

wants to merge 2,538 commits into from
This pull request is big! We’re only showing the most recent 250 commits.

Commits on Mar 8, 2022

  1. iavf: Fix init state closure on remove

    [ Upstream commit 3ccd54e ]
    
    When init states of the adapter work, the errors like lack
    of communication with the PF might hop in. If such events
    occur the driver restores previous states in order to retry
    initialization in a proper way. When remove task kicks in,
    this situation could lead to races with unregistering the
    netdevice as well as resources cleanup. With the commit
    introducing the waiting in remove for init to complete,
    this problem turns into an endless waiting if init never
    recovers from errors.
    
    Introduce __IAVF_IN_REMOVE_TASK bit to indicate that the
    remove thread has started.
    
    Make __IAVF_COMM_FAILED adapter state respect the
    __IAVF_IN_REMOVE_TASK bit and set the __IAVF_INIT_FAILED
    state and return without any action instead of trying to
    recover.
    
    Make __IAVF_INIT_FAILED adapter state respect the
    __IAVF_IN_REMOVE_TASK bit and return without any further
    actions.
    
    Make the loop in the remove handler break when adapter has
    __IAVF_INIT_FAILED state set.
    
    Fixes: 898ef1c ("iavf: Combine init and watchdog state machines")
    Signed-off-by: Slawomir Laba <slawomirx.laba@intel.com>
    Signed-off-by: Phani Burra <phani.r.burra@intel.com>
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    SlawomirLaba authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    deea3d9 View commit details
    Browse the repository at this point in the history
  2. iavf: Fix locking for VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS

    [ Upstream commit 0579faf ]
    
    iavf_virtchnl_completion is called under crit_lock but when
    the code for VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS is called,
    this lock is released in order to obtain rtnl_lock to avoid
    ABBA deadlock with unregister_netdev.
    
    Along with the new way iavf_remove behaves, there exist
    many risks related to the lock release and attmepts to regrab
    it. The driver faces crashes related to races between
    unregister_netdev and netdev_update_features. Yet another
    risk is that the driver could already obtain the crit_lock
    in order to destroy it and iavf_virtchnl_completion could
    crash or block forever.
    
    Make iavf_virtchnl_completion never relock crit_lock in it's
    call paths.
    
    Extract rtnl_lock locking logic to the driver for
    unregister_netdev in order to set the netdev_registered flag
    inside the lock.
    
    Introduce a new flag that will inform adminq_task to perform
    the code from VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS right after
    it finishes processing messages. Guard this code with remove
    flags so it's never called when the driver is in remove state.
    
    Fixes: 5951a2b ("iavf: Fix VLAN feature flags after VFR")
    Signed-off-by: Slawomir Laba <slawomirx.laba@intel.com>
    Signed-off-by: Phani Burra <phani.r.burra@intel.com>
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    SlawomirLaba authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    b45c10f View commit details
    Browse the repository at this point in the history
  3. iavf: Fix race in init state

    [ Upstream commit a472eb5 ]
    
    When iavf_init_version_check sends VIRTCHNL_OP_GET_VF_RESOURCES
    message, the driver will wait for the response after requeueing
    the watchdog task in iavf_init_get_resources call stack. The
    logic is implemented this way that iavf_init_get_resources has
    to be called in order to allocate adapter->vf_res. It is polling
    for the AQ response in iavf_get_vf_config function. Expect a
    call trace from kernel when adminq_task worker handles this
    message first. adapter->vf_res will be NULL in
    iavf_virtchnl_completion.
    
    Make the watchdog task not queue the adminq_task if the init
    process is not finished yet.
    
    Fixes: 898ef1c ("iavf: Combine init and watchdog state machines")
    Signed-off-by: Slawomir Laba <slawomirx.laba@intel.com>
    Signed-off-by: Phani Burra <phani.r.burra@intel.com>
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    SlawomirLaba authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    ccb72d2 View commit details
    Browse the repository at this point in the history
  4. iavf: Fix __IAVF_RESETTING state usage

    [ Upstream commit 14756b2 ]
    
    The setup of __IAVF_RESETTING state in watchdog task had no
    effect and could lead to slow resets in the driver as
    the task for __IAVF_RESETTING state only requeues watchdog.
    Till now the __IAVF_RESETTING was interpreted by reset task
    as running state which could lead to errors with allocating
    and resources disposal.
    
    Make watchdog_task queue the reset task when it's necessary.
    Do not update the state to __IAVF_RESETTING so the reset task
    knows exactly what is the current state of the adapter.
    
    Fixes: 898ef1c ("iavf: Combine init and watchdog state machines")
    Signed-off-by: Slawomir Laba <slawomirx.laba@intel.com>
    Signed-off-by: Phani Burra <phani.r.burra@intel.com>
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    SlawomirLaba authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    aac271d View commit details
    Browse the repository at this point in the history
  5. drm/i915/guc/slpc: Correct the param count for unset param

    [ Upstream commit 1b279f6 ]
    
    SLPC unset param H2G only needs one parameter - the id of the
    param.
    
    Fixes: 025cb07 ("drm/i915/guc/slpc: Cache platform frequency limits")
    
    Suggested-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
    Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
    Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
    Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220216181504.7155-1-vinay.belgaumkar@intel.com
    (cherry picked from commit 9648f1c)
    Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    vsbelgaum authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    51fedcf View commit details
    Browse the repository at this point in the history
  6. drm/bridge: ti-sn65dsi86: Properly undo autosuspend

    [ Upstream commit 26d3474 ]
    
    The PM Runtime docs say:
      Drivers in ->remove() callback should undo the runtime PM changes done
      in ->probe(). Usually this means calling pm_runtime_disable(),
      pm_runtime_dont_use_autosuspend() etc.
    
    We weren't doing that for autosuspend. Let's do it.
    
    Fixes: 9bede63 ("drm/bridge: ti-sn65dsi86: Use pm_runtime autosuspend")
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220222141838.1.If784ba19e875e8ded4ec4931601ce6d255845245@changeid
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    dianders authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    9c01758 View commit details
    Browse the repository at this point in the history
  7. e1000e: Fix possible HW unit hang after an s0ix exit

    [ Upstream commit 1866aa0 ]
    
    Disable the OEM bit/Gig Disable/restart AN impact and disable the PHY
    LAN connected device (LCD) reset during power management flows. This
    fixes possible HW unit hangs on the s0ix exit on some corporate ADL
    platforms.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=214821
    Fixes: 3e55d23 ("e1000e: Add handshake with the CSME to support S0ix")
    Suggested-by: Dima Ruinskiy <dima.ruinskiy@intel.com>
    Suggested-by: Nir Efrati <nir.efrati@intel.com>
    Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
    Tested-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    aneftin authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    b6cb0dc View commit details
    Browse the repository at this point in the history
  8. MIPS: ralink: mt7621: use bitwise NOT instead of logical

    [ Upstream commit 5d89657 ]
    
    It was the intention to reverse the bits, not make them all zero by
    using logical NOT operator.
    
    Fixes: cc19db8 ("MIPS: ralink: mt7621: do memory detection on KSEG1")
    Suggested-by: Chuanhong Guo <gch981213@gmail.com>
    Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
    Reviewed-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    lipnitsk authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    335a2f2 View commit details
    Browse the repository at this point in the history
  9. nl80211: Handle nla_memdup failures in handle_nan_filter

    [ Upstream commit 6ad27f5 ]
    
    As there's potential for failure of the nla_memdup(),
    check the return value.
    
    Fixes: a442b76 ("cfg80211: add add_nan_func / del_nan_func")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Link: https://lore.kernel.org/r/20220301100020.3801187-1-jiasheng@iscas.ac.cn
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    JiangJias authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    f65c92c View commit details
    Browse the repository at this point in the history
  10. ptp: ocp: Add ptp_ocp_adjtime_coarse for large adjustments

    [ Upstream commit 90f8f4c ]
    
    In ("ptp: ocp: Have FPGA fold in ns adjustment for adjtime."), the
    ns adjustment was written to the FPGA register, so the clock could
    accurately perform adjustments.
    
    However, the adjtime() call passes in a s64, while the clock adjustment
    registers use a s32.  When trying to perform adjustments with a large
    value (37 sec), things fail.
    
    Examine the incoming delta, and if larger than 1 sec, use the original
    (coarse) adjustment method.  If smaller than 1 sec, then allow the
    FPGA to fold in the changes over a 1 second window.
    
    Fixes: 6d59d4f ("ptp: ocp: Have FPGA fold in ns adjustment for adjtime.")
    Signed-off-by: Jonathan Lemon <jonathan.lemon@gmail.com>
    Acked-by: Richard Cochran <richardcochran@gmail.com>
    Link: https://lore.kernel.org/r/20220228203957.367371-1-jonathan.lemon@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    jlemon authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    7180d39 View commit details
    Browse the repository at this point in the history
  11. drm/amdgpu: fix suspend/resume hang regression

    [ Upstream commit f1ef170 ]
    
    Regression has been reported that suspend/resume may hang with
    the previous vm ready check commit.
    
    So bring back the evicted list check as a temp fix.
    
    Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1922
    Fixes: c1a66c3 ("drm/amdgpu: check vm ready by amdgpu_vm->evicting flag")
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Qiang Yu <qiang.yu@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    yuq authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    6919d0c View commit details
    Browse the repository at this point in the history
  12. net: dcb: disable softirqs in dcbnl_flush_dev()

    [ Upstream commit 10b6bb6 ]
    
    Ido Schimmel points out that since commit 52cff74 ("dcbnl : Disable
    software interrupts before taking dcb_lock"), the DCB API can be called
    by drivers from softirq context.
    
    One such in-tree example is the chelsio cxgb4 driver:
    dcb_rpl
    -> cxgb4_dcb_handle_fw_update
       -> dcb_ieee_setapp
    
    If the firmware for this driver happened to send an event which resulted
    in a call to dcb_ieee_setapp() at the exact same time as another
    DCB-enabled interface was unregistering on the same CPU, the softirq
    would deadlock, because the interrupted process was already holding the
    dcb_lock in dcbnl_flush_dev().
    
    Fix this unlikely event by using spin_lock_bh() in dcbnl_flush_dev() as
    in the rest of the dcbnl code.
    
    Fixes: 91b0383 ("net: dcb: flush lingering app table entries for unregistered devices")
    Reported-by: Ido Schimmel <idosch@idosch.org>
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Link: https://lore.kernel.org/r/20220302193939.1368823-1-vladimir.oltean@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    vladimiroltean authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    ddbc1b1 View commit details
    Browse the repository at this point in the history
  13. selftests: mlxsw: resource_scale: Fix return value

    [ Upstream commit 196f9bc ]
    
    The test runs several test cases and is supposed to return an error in
    case at least one of them failed.
    
    Currently, the check of the return value of each test case is in the
    wrong place, which can result in the wrong return value. For example:
    
     # TESTS='tc_police' ./resource_scale.sh
     TEST: 'tc_police' [default] 968                                     [FAIL]
             tc police offload count failed
     Error: mlxsw_spectrum: Failed to allocate policer index.
     We have an error talking to the kernel
     Command failed /tmp/tmp.i7Oc5HwmXY:969
     TEST: 'tc_police' [default] overflow 969                            [ OK ]
     ...
     TEST: 'tc_police' [ipv4_max] overflow 969                           [ OK ]
    
     $ echo $?
     0
    
    Fix this by moving the check to be done after each test case.
    
    Fixes: 059b18e ("selftests: mlxsw: Return correct error code in resource scale test")
    Signed-off-by: Amit Cohen <amcohen@nvidia.com>
    Reviewed-by: Petr Machata <petrm@nvidia.com>
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Amit Cohen authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    283854a View commit details
    Browse the repository at this point in the history
  14. net: stmmac: perserve TX and RX coalesce value during XDP setup

    commit 61da6ac upstream.
    
    When XDP program is loaded, it is desirable that the previous TX and RX
    coalesce values are not re-inited to its default value. This prevents
    unnecessary re-configurig the coalesce values that were working fine
    before.
    
    Fixes: ac746c8 ("net: stmmac: enhance XDP ZC driver level switching performance")
    Signed-off-by: Ong Boon Leong <boon.leong.ong@intel.com>
    Tested-by: Kurt Kanzenbach <kurt@linutronix.de>
    Link: https://lore.kernel.org/r/20211124114019.3949125-1-boon.leong.ong@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    elvinongbl authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    e656bc7 View commit details
    Browse the repository at this point in the history
  15. Input: elan_i2c - move regulator_[en|dis]able() out of elan_[en|dis]a…

    …ble_power()
    
    commit 81a36d8 upstream.
    
    elan_disable_power() is called conditionally on suspend, where as
    elan_enable_power() is always called on resume. This leads to
    an imbalance in the regulator's enable count.
    
    Move the regulator_[en|dis]able() calls out of elan_[en|dis]able_power()
    in preparation of fixing this.
    
    No functional changes intended.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20220131135436.29638-1-hdegoede@redhat.com
    [dtor: consolidate elan_[en|dis]able() into elan_set_power()]
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jwrdegoede authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    3edd73b View commit details
    Browse the repository at this point in the history
  16. Input: elan_i2c - fix regulator enable count imbalance after suspend/…

    …resume
    
    commit 04b7762 upstream.
    
    Before these changes elan_suspend() would only disable the regulator
    when device_may_wakeup() returns false; whereas elan_resume() would
    unconditionally enable it, leading to an enable count imbalance when
    device_may_wakeup() returns true.
    
    This triggers the "WARN_ON(regulator->enable_count)" in regulator_put()
    when the elan_i2c driver gets unbound, this happens e.g. with the
    hot-plugable dock with Elan I2C touchpad for the Asus TF103C 2-in-1.
    
    Fix this by making the regulator_enable() call also be conditional
    on device_may_wakeup() returning false.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20220131135436.29638-2-hdegoede@redhat.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jwrdegoede authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    db35f14 View commit details
    Browse the repository at this point in the history
  17. Input: samsung-keypad - properly state IOMEM dependency

    commit ba115ad upstream.
    
    Make the samsung-keypad driver explicitly depend on CONFIG_HAS_IOMEM, as it
    calls devm_ioremap(). This prevents compile errors in some configs (e.g,
    allyesconfig/randconfig under UML):
    
    /usr/bin/ld: drivers/input/keyboard/samsung-keypad.o: in function `samsung_keypad_probe':
    samsung-keypad.c:(.text+0xc60): undefined reference to `devm_ioremap'
    
    Signed-off-by: David Gow <davidgow@google.com>
    Acked-by: anton ivanov <anton.ivanov@cambridgegreys.com>
    Link: https://lore.kernel.org/r/20220225041727.1902850-1-davidgow@google.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    sulix authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    5ced181 View commit details
    Browse the repository at this point in the history
  18. HID: add mapping for KEY_DICTATE

    commit bfa26ba upstream.
    
    Numerous keyboards are adding dictate keys which allows for text
    messages to be dictated by a microphone.
    
    This patch adds a new key definition KEY_DICTATE and maps 0x0c/0x0d8
    usage code to this new keycode. Additionally hid-debug is adjusted to
    recognize this new usage code as well.
    
    Signed-off-by: William Mahon <wmahon@chromium.org>
    Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20220303021501.1.I5dbf50eb1a7a6734ee727bda4a8573358c6d3ec0@changeid
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    William Mahon authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    4fb4bdd View commit details
    Browse the repository at this point in the history
  19. HID: add mapping for KEY_ALL_APPLICATIONS

    commit 327b89f upstream.
    
    This patch adds a new key definition for KEY_ALL_APPLICATIONS
    and aliases KEY_DASHBOARD to it.
    
    It also maps the 0x0c/0x2a2 usage code to KEY_ALL_APPLICATIONS.
    
    Signed-off-by: William Mahon <wmahon@chromium.org>
    Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20220303035618.1.I3a7746ad05d270161a18334ae06e3b6db1a1d339@changeid
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    William Mahon authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    1f4354b View commit details
    Browse the repository at this point in the history
  20. tracing/histogram: Fix sorting on old "cpu" value

    commit 1d1898f upstream.
    
    When trying to add a histogram against an event with the "cpu" field, it
    was impossible due to "cpu" being a keyword to key off of the running CPU.
    So to fix this, it was changed to "common_cpu" to match the other generic
    fields (like "common_pid"). But since some scripts used "cpu" for keying
    off of the CPU (for events that did not have "cpu" as a field, which is
    most of them), a backward compatibility trick was added such that if "cpu"
    was used as a key, and the event did not have "cpu" as a field name, then
    it would fallback and switch over to "common_cpu".
    
    This fix has a couple of subtle bugs. One was that when switching over to
    "common_cpu", it did not change the field name, it just set a flag. But
    the code still found a "cpu" field. The "cpu" field is used for filtering
    and is returned when the event does not have a "cpu" field.
    
    This was found by:
    
      # cd /sys/kernel/tracing
      # echo hist:key=cpu,pid:sort=cpu > events/sched/sched_wakeup/trigger
      # cat events/sched/sched_wakeup/hist
    
    Which showed the histogram unsorted:
    
    { cpu:         19, pid:       1175 } hitcount:          1
    { cpu:          6, pid:        239 } hitcount:          2
    { cpu:         23, pid:       1186 } hitcount:         14
    { cpu:         12, pid:        249 } hitcount:          2
    { cpu:          3, pid:        994 } hitcount:          5
    
    Instead of hard coding the "cpu" checks, take advantage of the fact that
    trace_event_field_field() returns a special field for "cpu" and "CPU" if
    the event does not have "cpu" as a field. This special field has the
    "filter_type" of "FILTER_CPU". Check that to test if the returned field is
    of the CPU type instead of doing the string compare.
    
    Also, fix the sorting bug by testing for the hist_field flag of
    HIST_FIELD_FL_CPU when setting up the sort routine. Otherwise it will use
    the special CPU field to know what compare routine to use, and since that
    special field does not have a size, it returns tracing_map_cmp_none.
    
    Cc: stable@vger.kernel.org
    Fixes: 1e3bac7 ("tracing/histogram: Rename "cpu" to "common_cpu"")
    Reported-by: Daniel Bristot de Oliveira <bristot@kernel.org>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    rostedt authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    2cb0904 View commit details
    Browse the repository at this point in the history
  21. tracing: Fix return value of __setup handlers

    commit 1d02b44 upstream.
    
    __setup() handlers should generally return 1 to indicate that the
    boot options have been handled.
    
    Using invalid option values causes the entire kernel boot option
    string to be reported as Unknown and added to init's environment
    strings, polluting it.
    
      Unknown kernel command line parameters "BOOT_IMAGE=/boot/bzImage-517rc6
        kprobe_event=p,syscall_any,$arg1 trace_options=quiet
        trace_clock=jiffies", will be passed to user space.
    
     Run /sbin/init as init process
       with arguments:
         /sbin/init
       with environment:
         HOME=/
         TERM=linux
         BOOT_IMAGE=/boot/bzImage-517rc6
         kprobe_event=p,syscall_any,$arg1
         trace_options=quiet
         trace_clock=jiffies
    
    Return 1 from the __setup() handlers so that init's environment is not
    polluted with kernel boot options.
    
    Link: lore.kernel.org/r/64644a2f-4a20-bab3-1e15-3b2cdd0defe3@omprussia.ru
    Link: https://lkml.kernel.org/r/20220303031744.32356-1-rdunlap@infradead.org
    
    Cc: stable@vger.kernel.org
    Fixes: 7bcfaf5 ("tracing: Add trace_options kernel command line parameter")
    Fixes: e1e232c ("tracing: Add trace_clock=<clock> kernel parameter")
    Fixes: 970988e ("tracing/kprobe: Add kprobe_event= boot parameter")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: Igor Zhbanov <i.zhbanov@omprussia.ru>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    rddunlap authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    c23a1e8 View commit details
    Browse the repository at this point in the history
  22. btrfs: fix lost prealloc extents beyond eof after full fsync

    commit d994788 upstream.
    
    When doing a full fsync, if we have prealloc extents beyond (or at) eof,
    and the leaves that contain them were not modified in the current
    transaction, we end up not logging them. This results in losing those
    extents when we replay the log after a power failure, since the inode is
    truncated to the current value of the logged i_size.
    
    Just like for the fast fsync path, we need to always log all prealloc
    extents starting at or beyond i_size. The fast fsync case was fixed in
    commit 471d557 ("Btrfs: fix loss of prealloc extents past i_size
    after fsync log replay") but it missed the full fsync path. The problem
    exists since the very early days, when the log tree was added by
    commit e02119d ("Btrfs: Add a write ahead tree log to optimize
    synchronous operations").
    
    Example reproducer:
    
      $ mkfs.btrfs -f /dev/sdc
      $ mount /dev/sdc /mnt
    
      # Create our test file with many file extent items, so that they span
      # several leaves of metadata, even if the node/page size is 64K. Use
      # direct IO and not fsync/O_SYNC because it's both faster and it avoids
      # clearing the full sync flag from the inode - we want the fsync below
      # to trigger the slow full sync code path.
      $ xfs_io -f -d -c "pwrite -b 4K 0 16M" /mnt/foo
    
      # Now add two preallocated extents to our file without extending the
      # file's size. One right at i_size, and another further beyond, leaving
      # a gap between the two prealloc extents.
      $ xfs_io -c "falloc -k 16M 1M" /mnt/foo
      $ xfs_io -c "falloc -k 20M 1M" /mnt/foo
    
      # Make sure everything is durably persisted and the transaction is
      # committed. This makes all created extents to have a generation lower
      # than the generation of the transaction used by the next write and
      # fsync.
      sync
    
      # Now overwrite only the first extent, which will result in modifying
      # only the first leaf of metadata for our inode. Then fsync it. This
      # fsync will use the slow code path (inode full sync bit is set) because
      # it's the first fsync since the inode was created/loaded.
      $ xfs_io -c "pwrite 0 4K" -c "fsync" /mnt/foo
    
      # Extent list before power failure.
      $ xfs_io -c "fiemap -v" /mnt/foo
      /mnt/foo:
       EXT: FILE-OFFSET      BLOCK-RANGE      TOTAL FLAGS
         0: [0..7]:          2178048..2178055     8   0x0
         1: [8..16383]:      26632..43007     16376   0x0
         2: [16384..32767]:  2156544..2172927 16384   0x0
         3: [32768..34815]:  2172928..2174975  2048 0x800
         4: [34816..40959]:  hole              6144
         5: [40960..43007]:  2174976..2177023  2048 0x801
    
      <power fail>
    
      # Mount fs again, trigger log replay.
      $ mount /dev/sdc /mnt
    
      # Extent list after power failure and log replay.
      $ xfs_io -c "fiemap -v" /mnt/foo
      /mnt/foo:
       EXT: FILE-OFFSET      BLOCK-RANGE      TOTAL FLAGS
         0: [0..7]:          2178048..2178055     8   0x0
         1: [8..16383]:      26632..43007     16376   0x0
         2: [16384..32767]:  2156544..2172927 16384   0x1
    
      # The prealloc extents at file offsets 16M and 20M are missing.
    
    So fix this by calling btrfs_log_prealloc_extents() when we are doing a
    full fsync, so that we always log all prealloc extents beyond eof.
    
    A test case for fstests will follow soon.
    
    CC: stable@vger.kernel.org # 4.19+
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    fdmanana authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    fab84a8 View commit details
    Browse the repository at this point in the history
  23. btrfs: fix relocation crash due to premature return from btrfs_commit…

    …_transaction()
    
    commit 5fd76bf upstream.
    
    We are seeing crashes similar to the following trace:
    
    [38.969182] WARNING: CPU: 20 PID: 2105 at fs/btrfs/relocation.c:4070 btrfs_relocate_block_group+0x2dc/0x340 [btrfs]
    [38.973556] CPU: 20 PID: 2105 Comm: btrfs Not tainted 5.17.0-rc4 torvalds#54
    [38.974580] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-59-gc9ba5276e321-prebuilt.qemu.org 04/01/2014
    [38.976539] RIP: 0010:btrfs_relocate_block_group+0x2dc/0x340 [btrfs]
    [38.980336] RSP: 0000:ffffb0dd42e03c20 EFLAGS: 00010206
    [38.981218] RAX: ffff96cfc4ede800 RBX: ffff96cfc3ce0000 RCX: 000000000002ca14
    [38.982560] RDX: 0000000000000000 RSI: 4cfd109a0bcb5d7f RDI: ffff96cfc3ce0360
    [38.983619] RBP: ffff96cfc309c000 R08: 0000000000000000 R09: 0000000000000000
    [38.984678] R10: ffff96cec0000001 R11: ffffe84c80000000 R12: ffff96cfc4ede800
    [38.985735] R13: 0000000000000000 R14: 0000000000000000 R15: ffff96cfc3ce0360
    [38.987146] FS:  00007f11c15218c0(0000) GS:ffff96d6dfb00000(0000) knlGS:0000000000000000
    [38.988662] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [38.989398] CR2: 00007ffc922c8e60 CR3: 00000001147a6001 CR4: 0000000000370ee0
    [38.990279] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [38.991219] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [38.992528] Call Trace:
    [38.992854]  <TASK>
    [38.993148]  btrfs_relocate_chunk+0x27/0xe0 [btrfs]
    [38.993941]  btrfs_balance+0x78e/0xea0 [btrfs]
    [38.994801]  ? vsnprintf+0x33c/0x520
    [38.995368]  ? __kmalloc_track_caller+0x351/0x440
    [38.996198]  btrfs_ioctl_balance+0x2b9/0x3a0 [btrfs]
    [38.997084]  btrfs_ioctl+0x11b0/0x2da0 [btrfs]
    [38.997867]  ? mod_objcg_state+0xee/0x340
    [38.998552]  ? seq_release+0x24/0x30
    [38.999184]  ? proc_nr_files+0x30/0x30
    [38.999654]  ? call_rcu+0xc8/0x2f0
    [39.000228]  ? __x64_sys_ioctl+0x84/0xc0
    [39.000872]  ? btrfs_ioctl_get_supported_features+0x30/0x30 [btrfs]
    [39.001973]  __x64_sys_ioctl+0x84/0xc0
    [39.002566]  do_syscall_64+0x3a/0x80
    [39.003011]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    [39.003735] RIP: 0033:0x7f11c166959b
    [39.007324] RSP: 002b:00007fff2543e998 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    [39.008521] RAX: ffffffffffffffda RBX: 00007f11c1521698 RCX: 00007f11c166959b
    [39.009833] RDX: 00007fff2543ea40 RSI: 00000000c4009420 RDI: 0000000000000003
    [39.011270] RBP: 0000000000000003 R08: 0000000000000013 R09: 00007f11c16f94e0
    [39.012581] R10: 0000000000000000 R11: 0000000000000246 R12: 00007fff25440df3
    [39.014046] R13: 0000000000000000 R14: 00007fff2543ea40 R15: 0000000000000001
    [39.015040]  </TASK>
    [39.015418] ---[ end trace 0000000000000000 ]---
    [43.131559] ------------[ cut here ]------------
    [43.132234] kernel BUG at fs/btrfs/extent-tree.c:2717!
    [43.133031] invalid opcode: 0000 [tobetter#1] PREEMPT SMP PTI
    [43.133702] CPU: 1 PID: 1839 Comm: btrfs Tainted: G        W         5.17.0-rc4 torvalds#54
    [43.134863] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-59-gc9ba5276e321-prebuilt.qemu.org 04/01/2014
    [43.136426] RIP: 0010:unpin_extent_range+0x37a/0x4f0 [btrfs]
    [43.139913] RSP: 0000:ffffb0dd4216bc70 EFLAGS: 00010246
    [43.140629] RAX: 0000000000000000 RBX: ffff96cfc34490f8 RCX: 0000000000000001
    [43.141604] RDX: 0000000080000001 RSI: 0000000051d00000 RDI: 00000000ffffffff
    [43.142645] RBP: 0000000000000000 R08: 0000000000000000 R09: ffff96cfd07dca50
    [43.143669] R10: ffff96cfc46e8a00 R11: fffffffffffec000 R12: 0000000041d00000
    [43.144657] R13: ffff96cfc3ce0000 R14: ffffb0dd4216bd08 R15: 0000000000000000
    [43.145686] FS:  00007f7657dd68c0(0000) GS:ffff96d6df640000(0000) knlGS:0000000000000000
    [43.146808] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [43.147584] CR2: 00007f7fe81bf5b0 CR3: 00000001093ee004 CR4: 0000000000370ee0
    [43.148589] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [43.149581] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [43.150559] Call Trace:
    [43.150904]  <TASK>
    [43.151253]  btrfs_finish_extent_commit+0x88/0x290 [btrfs]
    [43.152127]  btrfs_commit_transaction+0x74f/0xaa0 [btrfs]
    [43.152932]  ? btrfs_attach_transaction_barrier+0x1e/0x50 [btrfs]
    [43.153786]  btrfs_ioctl+0x1edc/0x2da0 [btrfs]
    [43.154475]  ? __check_object_size+0x150/0x170
    [43.155170]  ? preempt_count_add+0x49/0xa0
    [43.155753]  ? __x64_sys_ioctl+0x84/0xc0
    [43.156437]  ? btrfs_ioctl_get_supported_features+0x30/0x30 [btrfs]
    [43.157456]  __x64_sys_ioctl+0x84/0xc0
    [43.157980]  do_syscall_64+0x3a/0x80
    [43.158543]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    [43.159231] RIP: 0033:0x7f7657f1e59b
    [43.161819] RSP: 002b:00007ffda5cd1658 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    [43.162702] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f7657f1e59b
    [43.163526] RDX: 0000000000000000 RSI: 0000000000009408 RDI: 0000000000000003
    [43.164358] RBP: 0000000000000003 R08: 0000000000000000 R09: 0000000000000000
    [43.165208] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    [43.166029] R13: 00005621b91c3232 R14: 00005621b91ba580 R15: 00007ffda5cd1800
    [43.166863]  </TASK>
    [43.167125] Modules linked in: btrfs blake2b_generic xor pata_acpi ata_piix libata raid6_pq scsi_mod libcrc32c virtio_net virtio_rng net_failover rng_core failover scsi_common
    [43.169552] ---[ end trace 0000000000000000 ]---
    [43.171226] RIP: 0010:unpin_extent_range+0x37a/0x4f0 [btrfs]
    [43.174767] RSP: 0000:ffffb0dd4216bc70 EFLAGS: 00010246
    [43.175600] RAX: 0000000000000000 RBX: ffff96cfc34490f8 RCX: 0000000000000001
    [43.176468] RDX: 0000000080000001 RSI: 0000000051d00000 RDI: 00000000ffffffff
    [43.177357] RBP: 0000000000000000 R08: 0000000000000000 R09: ffff96cfd07dca50
    [43.178271] R10: ffff96cfc46e8a00 R11: fffffffffffec000 R12: 0000000041d00000
    [43.179178] R13: ffff96cfc3ce0000 R14: ffffb0dd4216bd08 R15: 0000000000000000
    [43.180071] FS:  00007f7657dd68c0(0000) GS:ffff96d6df800000(0000) knlGS:0000000000000000
    [43.181073] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [43.181808] CR2: 00007fe09905f010 CR3: 00000001093ee004 CR4: 0000000000370ee0
    [43.182706] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [43.183591] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    
    We first hit the WARN_ON(rc->block_group->pinned > 0) in
    btrfs_relocate_block_group() and then the BUG_ON(!cache) in
    unpin_extent_range(). This tells us that we are exiting relocation and
    removing the block group with bytes still pinned for that block group.
    This is supposed to be impossible: the last thing relocate_block_group()
    does is commit the transaction to get rid of pinned extents.
    
    Commit d0c2f4f ("btrfs: make concurrent fsyncs wait less when
    waiting for a transaction commit") introduced an optimization so that
    commits from fsync don't have to wait for the previous commit to unpin
    extents. This was only intended to affect fsync, but it inadvertently
    made it possible for any commit to skip waiting for the previous commit
    to unpin. This is because if a call to btrfs_commit_transaction() finds
    that another thread is already committing the transaction, it waits for
    the other thread to complete the commit and then returns. If that other
    thread was in fsync, then it completes the commit without completing the
    previous commit. This makes the following sequence of events possible:
    
    Thread 1____________________|Thread 2 (fsync)_____________________|Thread 3 (balance)___________________
    btrfs_commit_transaction(N) |                                     |
      btrfs_run_delayed_refs    |                                     |
        pin extents             |                                     |
      ...                       |                                     |
      state = UNBLOCKED         |btrfs_sync_file                      |
                                |  btrfs_start_transaction(N + 1)     |relocate_block_group
                                |                                     |  btrfs_join_transaction(N + 1)
                                |  btrfs_commit_transaction(N + 1)    |
      ...                       |  trans->state = COMMIT_START        |
                                |                                     |  btrfs_commit_transaction(N + 1)
                                |                                     |    wait_for_commit(N + 1, COMPLETED)
                                |  wait_for_commit(N, SUPER_COMMITTED)|
      state = SUPER_COMMITTED   |  ...                                |
      btrfs_finish_extent_commit|                                     |
        unpin_extent_range()    |  trans->state = COMPLETED           |
                                |                                     |    return
                                |                                     |
        ...                     |                                     |Thread 1 isn't done, so pinned > 0
                                |                                     |and we WARN
                                |                                     |
                                |                                     |btrfs_remove_block_group
        unpin_extent_range()    |                                     |
          Thread 3 removed the  |                                     |
          block group, so we BUG|                                     |
    
    There are other sequences involving SUPER_COMMITTED transactions that
    can cause a similar outcome.
    
    We could fix this by making relocation explicitly wait for unpinning,
    but there may be other cases that need it. Josef mentioned ENOSPC
    flushing and the free space cache inode as other potential victims.
    Rather than playing whack-a-mole, this fix is conservative and makes all
    commits not in fsync wait for all previous transactions, which is what
    the optimization intended.
    
    Fixes: d0c2f4f ("btrfs: make concurrent fsyncs wait less when waiting for a transaction commit")
    CC: stable@vger.kernel.org # 5.15+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Omar Sandoval <osandov@fb.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    osandov authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    a437894 View commit details
    Browse the repository at this point in the history
  24. btrfs: subpage: fix a wrong check on subpage->writers

    commit c992fa1 upstream.
    
    [BUG]
    When looping btrfs/074 with 64K page size and 4K sectorsize, there is a
    low chance (1/50~1/100) to crash with the following ASSERT() triggered
    in btrfs_subpage_start_writer():
    
    	ret = atomic_add_return(nbits, &subpage->writers);
    	ASSERT(ret == nbits); <<< This one <<<
    
    [CAUSE]
    With more debugging output on the parameters of
    btrfs_subpage_start_writer(), it shows a very concerning error:
    
      ret=29 nbits=13 start=393216 len=53248
    
    For @nbits it's correct, but @ret which is the returned value from
    atomic_add_return(), it's not only larger than nbits, but also larger
    than max sectors per page value (for 64K page size and 4K sector size,
    it's 16).
    
    This indicates that some call sites are not properly decreasing the value.
    
    And that's exactly the case, in btrfs_page_unlock_writer(), due to the
    fact that we can have page locked either by lock_page() or
    process_one_page(), we have to check if the subpage has any writer.
    
    If no writers, it's locked by lock_page() and we only need to unlock it.
    
    But unfortunately the check for the writers are completely opposite:
    
    	if (atomic_read(&subpage->writers))
    		/* No writers, locked by plain lock_page() */
    		return unlock_page(page);
    
    We directly unlock the page if it has writers, which is the completely
    opposite what we want.
    
    Thankfully the affected call site is only limited to
    extent_write_locked_range(), so it's mostly affecting compressed write.
    
    [FIX]
    Just fix the wrong check condition to fix the bug.
    
    Fixes: e55a0de ("btrfs: rework page locking in __extent_writepage()")
    CC: stable@vger.kernel.org # 5.16
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    adam900710 authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    6762a17 View commit details
    Browse the repository at this point in the history
  25. btrfs: do not WARN_ON() if we have PageError set

    commit a50e1fc upstream.
    
    Whenever we do any extent buffer operations we call
    assert_eb_page_uptodate() to complain loudly if we're operating on an
    non-uptodate page.  Our overnight tests caught this warning earlier this
    week
    
      WARNING: CPU: 1 PID: 553508 at fs/btrfs/extent_io.c:6849 assert_eb_page_uptodate+0x3f/0x50
      CPU: 1 PID: 553508 Comm: kworker/u4:13 Tainted: G        W         5.17.0-rc3+ torvalds#564
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-2.fc32 04/01/2014
      Workqueue: btrfs-cache btrfs_work_helper
      RIP: 0010:assert_eb_page_uptodate+0x3f/0x50
      RSP: 0018:ffffa961440a7c68 EFLAGS: 00010246
      RAX: 0017ffffc0002112 RBX: ffffe6e74453f9c0 RCX: 0000000000001000
      RDX: ffffe6e74467c887 RSI: ffffe6e74453f9c0 RDI: ffff8d4c5efc2fc0
      RBP: 0000000000000d56 R08: ffff8d4d4a224000 R09: 0000000000000000
      R10: 00015817fa9d1ef0 R11: 000000000000000c R12: 00000000000007b1
      R13: ffff8d4c5efc2fc0 R14: 0000000001500000 R15: 0000000001cb1000
      FS:  0000000000000000(0000) GS:ffff8d4dbbd00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007ff31d3448d8 CR3: 0000000118be8004 CR4: 0000000000370ee0
      Call Trace:
    
       extent_buffer_test_bit+0x3f/0x70
       free_space_test_bit+0xa6/0xc0
       load_free_space_tree+0x1f6/0x470
       caching_thread+0x454/0x630
       ? rcu_read_lock_sched_held+0x12/0x60
       ? rcu_read_lock_sched_held+0x12/0x60
       ? rcu_read_lock_sched_held+0x12/0x60
       ? lock_release+0x1f0/0x2d0
       btrfs_work_helper+0xf2/0x3e0
       ? lock_release+0x1f0/0x2d0
       ? finish_task_switch.isra.0+0xf9/0x3a0
       process_one_work+0x26d/0x580
       ? process_one_work+0x580/0x580
       worker_thread+0x55/0x3b0
       ? process_one_work+0x580/0x580
       kthread+0xf0/0x120
       ? kthread_complete_and_exit+0x20/0x20
       ret_from_fork+0x1f/0x30
    
    This was partially fixed by c2e3930 ("btrfs: clear extent buffer
    uptodate when we fail to write it"), however all that fix did was keep
    us from finding extent buffers after a failed writeout.  It didn't keep
    us from continuing to use a buffer that we already had found.
    
    In this case we're searching the commit root to cache the block group,
    so we can start committing the transaction and switch the commit root
    and then start writing.  After the switch we can look up an extent
    buffer that hasn't been written yet and start processing that block
    group.  Then we fail to write that block out and clear Uptodate on the
    page, and then we start spewing these errors.
    
    Normally we're protected by the tree lock to a certain degree here.  If
    we read a block we have that block read locked, and we block the writer
    from locking the block before we submit it for the write.  However this
    isn't necessarily fool proof because the read could happen before we do
    the submit_bio and after we locked and unlocked the extent buffer.
    
    Also in this particular case we have path->skip_locking set, so that
    won't save us here.  We'll simply get a block that was valid when we
    read it, but became invalid while we were using it.
    
    What we really want is to catch the case where we've "read" a block but
    it's not marked Uptodate.  On read we ClearPageError(), so if we're
    !Uptodate and !Error we know we didn't do the right thing for reading
    the page.
    
    Fix this by checking !Uptodate && !Error, this way we will not complain
    if our buffer gets invalidated while we're using it, and we'll maintain
    the spirit of the check which is to make sure we have a fully in-cache
    block while we're messing with it.
    
    CC: stable@vger.kernel.org # 5.4+
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    josefbacik authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    9efcc83 View commit details
    Browse the repository at this point in the history
  26. btrfs: qgroup: fix deadlock between rescan worker and remove qgroup

    commit d4aef1e upstream.
    
    The commit e804861 ("btrfs: fix deadlock between quota disable and
    qgroup rescan worker") by Kawasaki resolves deadlock between quota
    disable and qgroup rescan worker. But also there is a deadlock case like
    it. It's about enabling or disabling quota and creating or removing
    qgroup. It can be reproduced in simple script below.
    
    for i in {1..100}
    do
        btrfs quota enable /mnt &
        btrfs qgroup create 1/0 /mnt &
        btrfs qgroup destroy 1/0 /mnt &
        btrfs quota disable /mnt &
    done
    
    Here's why the deadlock happens:
    
    1) The quota rescan task is running.
    
    2) Task A calls btrfs_quota_disable(), locks the qgroup_ioctl_lock
       mutex, and then calls btrfs_qgroup_wait_for_completion(), to wait for
       the quota rescan task to complete.
    
    3) Task B calls btrfs_remove_qgroup() and it blocks when trying to lock
       the qgroup_ioctl_lock mutex, because it's being held by task A. At that
       point task B is holding a transaction handle for the current transaction.
    
    4) The quota rescan task calls btrfs_commit_transaction(). This results
       in it waiting for all other tasks to release their handles on the
       transaction, but task B is blocked on the qgroup_ioctl_lock mutex
       while holding a handle on the transaction, and that mutex is being held
       by task A, which is waiting for the quota rescan task to complete,
       resulting in a deadlock between these 3 tasks.
    
    To resolve this issue, the thread disabling quota should unlock
    qgroup_ioctl_lock before waiting rescan completion. Move
    btrfs_qgroup_wait_for_completion() after unlock of qgroup_ioctl_lock.
    
    Fixes: e804861 ("btrfs: fix deadlock between quota disable and qgroup rescan worker")
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Signed-off-by: Sidong Yang <realwakka@gmail.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    realwakka authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    d284e2b View commit details
    Browse the repository at this point in the history
  27. btrfs: add missing run of delayed items after unlink during log replay

    commit 4751dc9 upstream.
    
    During log replay, whenever we need to check if a name (dentry) exists in
    a directory we do searches on the subvolume tree for inode references or
    or directory entries (BTRFS_DIR_INDEX_KEY keys, and BTRFS_DIR_ITEM_KEY
    keys as well, before kernel 5.17). However when during log replay we
    unlink a name, through btrfs_unlink_inode(), we may not delete inode
    references and dir index keys from a subvolume tree and instead just add
    the deletions to the delayed inode's delayed items, which will only be
    run when we commit the transaction used for log replay. This means that
    after an unlink operation during log replay, if we attempt to search for
    the same name during log replay, we will not see that the name was already
    deleted, since the deletion is recorded only on the delayed items.
    
    We run delayed items after every unlink operation during log replay,
    except at unlink_old_inode_refs() and at add_inode_ref(). This was due
    to an overlook, as delayed items should be run after evert unlink, for
    the reasons stated above.
    
    So fix those two cases.
    
    Fixes: 0d83639 ("Btrfs: fix mount failure after fsync due to hard link recreation")
    Fixes: 1f250e9 ("Btrfs: fix log replay failure after unlink and link combination")
    CC: stable@vger.kernel.org # 4.19+
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    fdmanana authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    948db5a View commit details
    Browse the repository at this point in the history
  28. btrfs: fallback to blocking mode when doing async dio over multiple e…

    …xtents
    
    commit ca93e44 upstream.
    
    Some users recently reported that MariaDB was getting a read corruption
    when using io_uring on top of btrfs. This started to happen in 5.16,
    after commit 51bd956 ("btrfs: fix deadlock due to page faults
    during direct IO reads and writes"). That changed btrfs to use the new
    iomap flag IOMAP_DIO_PARTIAL and to disable page faults before calling
    iomap_dio_rw(). This was necessary to fix deadlocks when the iovector
    corresponds to a memory mapped file region. That type of scenario is
    exercised by test case generic/647 from fstests.
    
    For this MariaDB scenario, we attempt to read 16K from file offset X
    using IOCB_NOWAIT and io_uring. In that range we have 4 extents, each
    with a size of 4K, and what happens is the following:
    
    1) btrfs_direct_read() disables page faults and calls iomap_dio_rw();
    
    2) iomap creates a struct iomap_dio object, its reference count is
       initialized to 1 and its ->size field is initialized to 0;
    
    3) iomap calls btrfs_dio_iomap_begin() with file offset X, which finds
       the first 4K extent, and setups an iomap for this extent consisting
       of a single page;
    
    4) At iomap_dio_bio_iter(), we are able to access the first page of the
       buffer (struct iov_iter) with bio_iov_iter_get_pages() without
       triggering a page fault;
    
    5) iomap submits a bio for this 4K extent
       (iomap_dio_submit_bio() -> btrfs_submit_direct()) and increments
       the refcount on the struct iomap_dio object to 2; The ->size field
       of the struct iomap_dio object is incremented to 4K;
    
    6) iomap calls btrfs_iomap_begin() again, this time with a file
       offset of X + 4K. There we setup an iomap for the next extent
       that also has a size of 4K;
    
    7) Then at iomap_dio_bio_iter() we call bio_iov_iter_get_pages(),
       which tries to access the next page (2nd page) of the buffer.
       This triggers a page fault and returns -EFAULT;
    
    8) At __iomap_dio_rw() we see the -EFAULT, but we reset the error
       to 0 because we passed the flag IOMAP_DIO_PARTIAL to iomap and
       the struct iomap_dio object has a ->size value of 4K (we submitted
       a bio for an extent already). The 'wait_for_completion' variable
       is not set to true, because our iocb has IOCB_NOWAIT set;
    
    9) At the bottom of __iomap_dio_rw(), we decrement the reference count
       of the struct iomap_dio object from 2 to 1. Because we were not
       the only ones holding a reference on it and 'wait_for_completion' is
       set to false, -EIOCBQUEUED is returned to btrfs_direct_read(), which
       just returns it up the callchain, up to io_uring;
    
    10) The bio submitted for the first extent (step 5) completes and its
        bio endio function, iomap_dio_bio_end_io(), decrements the last
        reference on the struct iomap_dio object, resulting in calling
        iomap_dio_complete_work() -> iomap_dio_complete().
    
    11) At iomap_dio_complete() we adjust the iocb->ki_pos from X to X + 4K
        and return 4K (the amount of io done) to iomap_dio_complete_work();
    
    12) iomap_dio_complete_work() calls the iocb completion callback,
        iocb->ki_complete() with a second argument value of 4K (total io
        done) and the iocb with the adjust ki_pos of X + 4K. This results
        in completing the read request for io_uring, leaving it with a
        result of 4K bytes read, and only the first page of the buffer
        filled in, while the remaining 3 pages, corresponding to the other
        3 extents, were not filled;
    
    13) For the application, the result is unexpected because if we ask
        to read N bytes, it expects to get N bytes read as long as those
        N bytes don't cross the EOF (i_size).
    
    MariaDB reports this as an error, as it's not expecting a short read,
    since it knows it's asking for read operations fully within the i_size
    boundary. This is typical in many applications, but it may also be
    questionable if they should react to such short reads by issuing more
    read calls to get the remaining data. Nevertheless, the short read
    happened due to a change in btrfs regarding how it deals with page
    faults while in the middle of a read operation, and there's no reason
    why btrfs can't have the previous behaviour of returning the whole data
    that was requested by the application.
    
    The problem can also be triggered with the following simple program:
    
      /* Get O_DIRECT */
      #ifndef _GNU_SOURCE
      #define _GNU_SOURCE
      #endif
    
      #include <stdio.h>
      #include <stdlib.h>
      #include <unistd.h>
      #include <fcntl.h>
      #include <errno.h>
      #include <string.h>
      #include <liburing.h>
    
      int main(int argc, char *argv[])
      {
          char *foo_path;
          struct io_uring ring;
          struct io_uring_sqe *sqe;
          struct io_uring_cqe *cqe;
          struct iovec iovec;
          int fd;
          long pagesize;
          void *write_buf;
          void *read_buf;
          ssize_t ret;
          int i;
    
          if (argc != 2) {
              fprintf(stderr, "Use: %s <directory>\n", argv[0]);
              return 1;
          }
    
          foo_path = malloc(strlen(argv[1]) + 5);
          if (!foo_path) {
              fprintf(stderr, "Failed to allocate memory for file path\n");
              return 1;
          }
          strcpy(foo_path, argv[1]);
          strcat(foo_path, "/foo");
    
          /*
           * Create file foo with 2 extents, each with a size matching
           * the page size. Then allocate a buffer to read both extents
           * with io_uring, using O_DIRECT and IOCB_NOWAIT. Before doing
           * the read with io_uring, access the first page of the buffer
           * to fault it in, so that during the read we only trigger a
           * page fault when accessing the second page of the buffer.
           */
           fd = open(foo_path, O_CREAT | O_TRUNC | O_WRONLY |
                    O_DIRECT, 0666);
           if (fd == -1) {
               fprintf(stderr,
                       "Failed to create file 'foo': %s (errno %d)",
                       strerror(errno), errno);
               return 1;
           }
    
           pagesize = sysconf(_SC_PAGE_SIZE);
           ret = posix_memalign(&write_buf, pagesize, 2 * pagesize);
           if (ret) {
               fprintf(stderr, "Failed to allocate write buffer\n");
               return 1;
           }
    
           memset(write_buf, 0xab, pagesize);
           memset(write_buf + pagesize, 0xcd, pagesize);
    
           /* Create 2 extents, each with a size matching page size. */
           for (i = 0; i < 2; i++) {
               ret = pwrite(fd, write_buf + i * pagesize, pagesize,
                            i * pagesize);
               if (ret != pagesize) {
                   fprintf(stderr,
                         "Failed to write to file, ret = %ld errno %d (%s)\n",
                          ret, errno, strerror(errno));
                   return 1;
               }
               ret = fsync(fd);
               if (ret != 0) {
                   fprintf(stderr, "Failed to fsync file\n");
                   return 1;
               }
           }
    
           close(fd);
           fd = open(foo_path, O_RDONLY | O_DIRECT);
           if (fd == -1) {
               fprintf(stderr,
                       "Failed to open file 'foo': %s (errno %d)",
                       strerror(errno), errno);
               return 1;
           }
    
           ret = posix_memalign(&read_buf, pagesize, 2 * pagesize);
           if (ret) {
               fprintf(stderr, "Failed to allocate read buffer\n");
               return 1;
           }
    
           /*
            * Fault in only the first page of the read buffer.
            * We want to trigger a page fault for the 2nd page of the
            * read buffer during the read operation with io_uring
            * (O_DIRECT and IOCB_NOWAIT).
            */
           memset(read_buf, 0, 1);
    
           ret = io_uring_queue_init(1, &ring, 0);
           if (ret != 0) {
               fprintf(stderr, "Failed to create io_uring queue\n");
               return 1;
           }
    
           sqe = io_uring_get_sqe(&ring);
           if (!sqe) {
               fprintf(stderr, "Failed to get io_uring sqe\n");
               return 1;
           }
    
           iovec.iov_base = read_buf;
           iovec.iov_len = 2 * pagesize;
           io_uring_prep_readv(sqe, fd, &iovec, 1, 0);
    
           ret = io_uring_submit_and_wait(&ring, 1);
           if (ret != 1) {
               fprintf(stderr,
                       "Failed at io_uring_submit_and_wait()\n");
               return 1;
           }
    
           ret = io_uring_wait_cqe(&ring, &cqe);
           if (ret < 0) {
               fprintf(stderr, "Failed at io_uring_wait_cqe()\n");
               return 1;
           }
    
           printf("io_uring read result for file foo:\n\n");
           printf("  cqe->res == %d (expected %d)\n", cqe->res, 2 * pagesize);
           printf("  memcmp(read_buf, write_buf) == %d (expected 0)\n",
                  memcmp(read_buf, write_buf, 2 * pagesize));
    
           io_uring_cqe_seen(&ring, cqe);
           io_uring_queue_exit(&ring);
    
           return 0;
      }
    
    When running it on an unpatched kernel:
    
      $ gcc io_uring_test.c -luring
      $ mkfs.btrfs -f /dev/sda
      $ mount /dev/sda /mnt/sda
      $ ./a.out /mnt/sda
      io_uring read result for file foo:
    
        cqe->res == 4096 (expected 8192)
        memcmp(read_buf, write_buf) == -205 (expected 0)
    
    After this patch, the read always returns 8192 bytes, with the buffer
    filled with the correct data. Although that reproducer always triggers
    the bug in my test vms, it's possible that it will not be so reliable
    on other environments, as that can happen if the bio for the first
    extent completes and decrements the reference on the struct iomap_dio
    object before we do the atomic_dec_and_test() on the reference at
    __iomap_dio_rw().
    
    Fix this in btrfs by having btrfs_dio_iomap_begin() return -EAGAIN
    whenever we try to satisfy a non blocking IO request (IOMAP_NOWAIT flag
    set) over a range that spans multiple extents (or a mix of extents and
    holes). This avoids returning success to the caller when we only did
    partial IO, which is not optimal for writes and for reads it's actually
    incorrect, as the caller doesn't expect to get less bytes read than it has
    requested (unless EOF is crossed), as previously mentioned. This is also
    the type of behaviour that xfs follows (xfs_direct_write_iomap_begin()),
    even though it doesn't use IOMAP_DIO_PARTIAL.
    
    A test case for fstests will follow soon.
    
    Link: https://lore.kernel.org/linux-btrfs/CABVffEM0eEWho+206m470rtM0d9J8ue85TtR-A_oVTuGLWFicA@mail.gmail.com/
    Link: https://lore.kernel.org/linux-btrfs/CAHF2GV6U32gmqSjLe=XKgfcZAmLCiH26cJ2OnHGp5x=VAH4OHQ@mail.gmail.com/
    CC: stable@vger.kernel.org # 5.16+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    fdmanana authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    91a5000 View commit details
    Browse the repository at this point in the history
  29. btrfs: do not start relocation until in progress drops are done

    commit b4be6ae upstream.
    
    We hit a bug with a recovering relocation on mount for one of our file
    systems in production.  I reproduced this locally by injecting errors
    into snapshot delete with balance running at the same time.  This
    presented as an error while looking up an extent item
    
      WARNING: CPU: 5 PID: 1501 at fs/btrfs/extent-tree.c:866 lookup_inline_extent_backref+0x647/0x680
      CPU: 5 PID: 1501 Comm: btrfs-balance Not tainted 5.16.0-rc8+ tobetter#8
      RIP: 0010:lookup_inline_extent_backref+0x647/0x680
      RSP: 0018:ffffae0a023ab960 EFLAGS: 00010202
      RAX: 0000000000000001 RBX: 0000000000000000 RCX: 0000000000000000
      RDX: 0000000000000000 RSI: 000000000000000c RDI: 0000000000000000
      RBP: ffff943fd2a39b60 R08: 0000000000000000 R09: 0000000000000001
      R10: 0001434088152de0 R11: 0000000000000000 R12: 0000000001d05000
      R13: ffff943fd2a39b60 R14: ffff943fdb96f2a0 R15: ffff9442fc923000
      FS:  0000000000000000(0000) GS:ffff944e9eb40000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f1157b1fca8 CR3: 000000010f092000 CR4: 0000000000350ee0
      Call Trace:
       <TASK>
       insert_inline_extent_backref+0x46/0xd0
       __btrfs_inc_extent_ref.isra.0+0x5f/0x200
       ? btrfs_merge_delayed_refs+0x164/0x190
       __btrfs_run_delayed_refs+0x561/0xfa0
       ? btrfs_search_slot+0x7b4/0xb30
       ? btrfs_update_root+0x1a9/0x2c0
       btrfs_run_delayed_refs+0x73/0x1f0
       ? btrfs_update_root+0x1a9/0x2c0
       btrfs_commit_transaction+0x50/0xa50
       ? btrfs_update_reloc_root+0x122/0x220
       prepare_to_merge+0x29f/0x320
       relocate_block_group+0x2b8/0x550
       btrfs_relocate_block_group+0x1a6/0x350
       btrfs_relocate_chunk+0x27/0xe0
       btrfs_balance+0x777/0xe60
       balance_kthread+0x35/0x50
       ? btrfs_balance+0xe60/0xe60
       kthread+0x16b/0x190
       ? set_kthread_struct+0x40/0x40
       ret_from_fork+0x22/0x30
       </TASK>
    
    Normally snapshot deletion and relocation are excluded from running at
    the same time by the fs_info->cleaner_mutex.  However if we had a
    pending balance waiting to get the ->cleaner_mutex, and a snapshot
    deletion was running, and then the box crashed, we would come up in a
    state where we have a half deleted snapshot.
    
    Again, in the normal case the snapshot deletion needs to complete before
    relocation can start, but in this case relocation could very well start
    before the snapshot deletion completes, as we simply add the root to the
    dead roots list and wait for the next time the cleaner runs to clean up
    the snapshot.
    
    Fix this by setting a bit on the fs_info if we have any DEAD_ROOT's that
    had a pending drop_progress key.  If they do then we know we were in the
    middle of the drop operation and set a flag on the fs_info.  Then
    balance can wait until this flag is cleared to start up again.
    
    If there are DEAD_ROOT's that don't have a drop_progress set then we're
    safe to start balance right away as we'll be properly protected by the
    cleaner_mutex.
    
    CC: stable@vger.kernel.org # 5.10+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    josefbacik authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    5e70bc8 View commit details
    Browse the repository at this point in the history
  30. Revert "xfrm: xfrm_state_mtu should return at least 1280 for ipv6"

    commit a6d95c5 upstream.
    
    This reverts commit b515d26.
    
    Commit b515d26 ("xfrm: xfrm_state_mtu
    should return at least 1280 for ipv6") in v5.14 breaks the TCP MSS
    calculation in ipsec transport mode, resulting complete stalls of TCP
    connections. This happens when the (P)MTU is 1280 or slighly larger.
    
    The desired formula for the MSS is:
    MSS = (MTU - ESP_overhead) - IP header - TCP header
    
    However, the above commit clamps the (MTU - ESP_overhead) to a
    minimum of 1280, turning the formula into
    MSS = max(MTU - ESP overhead, 1280) -  IP header - TCP header
    
    With the (P)MTU near 1280, the calculated MSS is too large and the
    resulting TCP packets never make it to the destination because they
    are over the actual PMTU.
    
    The above commit also causes suboptimal double fragmentation in
    xfrm tunnel mode, as described in
    https://lore.kernel.org/netdev/20210429202529.codhwpc7w6kbudug@dwarf.suse.cz/
    
    The original problem the above commit was trying to fix is now fixed
    by commit 6596a02 ("xfrm: fix MTU
    regression").
    
    Signed-off-by: Jiri Bohac <jbohac@suse.cz>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jiribohac authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    5c1e15f View commit details
    Browse the repository at this point in the history
  31. proc: fix documentation and description of pagemap

    commit dd21bfa upstream.
    
    Since bit 57 was exported for uffd-wp write-protected (commit
    fb8e37f: "mm/pagemap: export uffd-wp protection information"),
    fixing it can reduce some unnecessary confusion.
    
    Link: https://lkml.kernel.org/r/20220301044538.3042713-1-yun.zhou@windriver.com
    Fixes: fb8e37f ("mm/pagemap: export uffd-wp protection information")
    Signed-off-by: Yun Zhou <yun.zhou@windriver.com>
    Reviewed-by: Peter Xu <peterx@redhat.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Tiberiu A Georgescu <tiberiu.georgescu@nutanix.com>
    Cc: Florian Schmidt <florian.schmidt@nutanix.com>
    Cc: Ivan Teterevkov <ivan.teterevkov@nutanix.com>
    Cc: SeongJae Park <sj@kernel.org>
    Cc: Yang Shi <shy828301@gmail.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Axel Rasmussen <axelrasmussen@google.com>
    Cc: Miaohe Lin <linmiaohe@huawei.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Colin Cross <ccross@google.com>
    Cc: Alistair Popple <apopple@nvidia.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    zhouyun1306 authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    8572388 View commit details
    Browse the repository at this point in the history
  32. x86/kvmclock: Fix Hyper-V Isolated VM's boot issue when vCPUs > 64

    commit 92e68cc upstream.
    
    When Linux runs as an Isolated VM on Hyper-V, it supports AMD SEV-SNP
    but it's partially enlightened, i.e. cc_platform_has(
    CC_ATTR_GUEST_MEM_ENCRYPT) is true but sev_active() is false.
    
    Commit 4d96f91 per se is good, but with it now
    kvm_setup_vsyscall_timeinfo() -> kvmclock_init_mem() calls
    set_memory_decrypted(), and later gets stuck when trying to zere out
    the pages pointed by 'hvclock_mem', if Linux runs as an Isolated VM on
    Hyper-V. The cause is that here now the Linux VM should no longer access
    the original guest physical addrss (GPA); instead the VM should do
    memremap() and access the original GPA + ms_hyperv.shared_gpa_boundary:
    see the example code in drivers/hv/connection.c: vmbus_connect() or
    drivers/hv/ring_buffer.c: hv_ringbuffer_init(). If the VM tries to
    access the original GPA, it keepts getting injected a fault by Hyper-V
    and gets stuck there.
    
    Here the issue happens only when the VM has >=65 vCPUs, because the
    global static array hv_clock_boot[] can hold 64 "struct
    pvclock_vsyscall_time_info" (the sizeof of the struct is 64 bytes), so
    kvmclock_init_mem() only allocates memory in the case of vCPUs > 64.
    
    Since the 'hvclock_mem' pages are only useful when the kvm clock is
    supported by the underlying hypervisor, fix the issue by returning
    early when Linux VM runs on Hyper-V, which doesn't support kvm clock.
    
    Fixes: 4d96f91 ("x86/sev: Replace occurrences of sev_active() with cc_platform_has()")
    Tested-by: Andrea Parri (Microsoft) <parri.andrea@gmail.com>
    Signed-off-by: Andrea Parri (Microsoft) <parri.andrea@gmail.com>
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Message-Id: <20220225084600.17817-1-decui@microsoft.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    dcui authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    4980895 View commit details
    Browse the repository at this point in the history
  33. s390/ftrace: fix arch_ftrace_get_regs implementation

    commit 1389f17 upstream.
    
    arch_ftrace_get_regs is supposed to return a struct pt_regs pointer
    only if the pt_regs structure contains all register contents, which
    means it must have been populated when created via ftrace_regs_caller.
    
    If it was populated via ftrace_caller the contents are not complete
    (the psw mask part is missing), and therefore a NULL pointer needs be
    returned.
    
    The current code incorrectly always returns a struct pt_regs pointer.
    
    Fix this by adding another pt_regs flag which indicates if the
    contents are complete, and fix arch_ftrace_get_regs accordingly.
    
    Fixes: 8949796 ("s390/ftrace: provide separate ftrace_caller/ftrace_regs_caller implementations")
    Reported-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Reported-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Reviewed-by: Sven Schnelle <svens@linux.ibm.com>
    Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    hcahca authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    9ec9160 View commit details
    Browse the repository at this point in the history
  34. s390/ftrace: fix ftrace_caller/ftrace_regs_caller generation

    commit 9fa881f upstream.
    
    ftrace_caller was used for both ftrace_caller and ftrace_regs_caller,
    which means that the target address of the hotpatch trampoline was
    never updated.
    
    With commit 8949796 ("s390/ftrace: provide separate
    ftrace_caller/ftrace_regs_caller implementations") a separate
    ftrace_regs_caller entry point was implemeted, however it was
    forgotten to implement the necessary changes for ftrace_modify_call
    and ftrace_make_call, where the branch target has to be modified
    accordingly.
    
    Therefore add the missing code now.
    
    Fixes: 8949796 ("s390/ftrace: provide separate ftrace_caller/ftrace_regs_caller implementations")
    Reviewed-by: Sven Schnelle <svens@linux.ibm.com>
    Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    hcahca authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    0cafb4b View commit details
    Browse the repository at this point in the history
  35. KVM: x86/mmu: Passing up the error state of mmu_alloc_shadow_roots()

    commit c6c937d upstream.
    
    Just like on the optional mmu_alloc_direct_roots() path, once shadow
    path reaches "r = -EIO" somewhere, the caller needs to know the actual
    state in order to enter error handling and avoid something worse.
    
    Fixes: 4a38162 ("KVM: MMU: load PDPTRs outside mmu_lock")
    Signed-off-by: Like Xu <likexu@tencent.com>
    Reviewed-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20220301124941.48412-1-likexu@tencent.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Like Xu authored and gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    81cb88b View commit details
    Browse the repository at this point in the history
  36. Linux 5.16.13

    Link: https://lore.kernel.org/r/20220307091654.092878898@linuxfoundation.org
    Tested-by: Fox Chen <foxhlchen@gmail.com>
    Tested-by: Ronald Warsow <rwarsow@gmx.de>
    Link: https://lore.kernel.org/r/20220307162147.440035361@linuxfoundation.org
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Fox Chen <foxhlchen@gmail.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Rudi Heitbaum <rudi@heitbaum.com>
    Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
    Tested-by: Luna Jernberg <droidbittin@gmail.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    gregkh committed Mar 8, 2022
    Configuration menu
    Copy the full SHA
    6273c30 View commit details
    Browse the repository at this point in the history

Commits on Mar 11, 2022

  1. x86/speculation: Rename RETPOLINE_AMD to RETPOLINE_LFENCE

    commit d45476d upstream.
    
    The RETPOLINE_AMD name is unfortunate since it isn't necessarily
    AMD only, in fact Hygon also uses it. Furthermore it will likely be
    sufficient for some Intel processors. Therefore rename the thing to
    RETPOLINE_LFENCE to better describe what it is.
    
    Add the spectre_v2=retpoline,lfence option as an alias to
    spectre_v2=retpoline,amd to preserve existing setups. However, the output
    of /sys/devices/system/cpu/vulnerabilities/spectre_v2 will be changed.
    
      [ bp: Fix typos, massage. ]
    
    Co-developed-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Peter Zijlstra (Intel) authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    56829c1 View commit details
    Browse the repository at this point in the history
  2. x86/speculation: Add eIBRS + Retpoline options

    commit 1e19da8 upstream.
    
    Thanks to the chaps at VUsec it is now clear that eIBRS is not
    sufficient, therefore allow enabling of retpolines along with eIBRS.
    
    Add spectre_v2=eibrs, spectre_v2=eibrs,lfence and
    spectre_v2=eibrs,retpoline options to explicitly pick your preferred
    means of mitigation.
    
    Since there's new mitigations there's also user visible changes in
    /sys/devices/system/cpu/vulnerabilities/spectre_v2 to reflect these
    new mitigations.
    
      [ bp: Massage commit message, trim error messages,
        do more precise eIBRS mode checking. ]
    
    Co-developed-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Patrick Colp <patrick.colp@oracle.com>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Peter Zijlstra authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    9b629ee View commit details
    Browse the repository at this point in the history
  3. Documentation/hw-vuln: Update spectre doc

    commit 5ad3eb1 upstream.
    
    Update the doc with the new fun.
    
      [ bp: Massage commit message. ]
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Peter Zijlstra authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    227649a View commit details
    Browse the repository at this point in the history
  4. x86/speculation: Include unprivileged eBPF status in Spectre v2 mitig…

    …ation reporting
    
    commit 44a3918 upstream.
    
    With unprivileged eBPF enabled, eIBRS (without retpoline) is vulnerable
    to Spectre v2 BHB-based attacks.
    
    When both are enabled, print a warning message and report it in the
    'spectre_v2' sysfs vulnerabilities file.
    
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jpoimboe authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    6710bd5 View commit details
    Browse the repository at this point in the history
  5. x86/speculation: Use generic retpoline by default on AMD

    commit 244d00b upstream.
    
    AMD retpoline may be susceptible to speculation. The speculation
    execution window for an incorrect indirect branch prediction using
    LFENCE/JMP sequence may potentially be large enough to allow
    exploitation using Spectre V2.
    
    By default, don't use retpoline,lfence on AMD.  Instead, use the
    generic retpoline.
    
    Signed-off-by: Kim Phillips <kim.phillips@amd.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    kimphillamd authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    1984feb View commit details
    Browse the repository at this point in the history
  6. x86/speculation: Update link to AMD speculation whitepaper

    commit e9b6013 upstream.
    
    Update the link to the "Software Techniques for Managing Speculation
    on AMD Processors" whitepaper.
    
    Signed-off-by: Kim Phillips <kim.phillips@amd.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    kimphillamd authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    23cc87c View commit details
    Browse the repository at this point in the history
  7. x86/speculation: Warn about Spectre v2 LFENCE mitigation

    commit eafd987 upstream.
    
    With:
    
      f8a66d6 ("x86,bugs: Unconditionally allow spectre_v2=retpoline,amd")
    
    it became possible to enable the LFENCE "retpoline" on Intel. However,
    Intel doesn't recommend it, as it has some weaknesses compared to
    retpoline.
    
    Now AMD doesn't recommend it either.
    
    It can still be left available as a cmdline option. It's faster than
    retpoline but is weaker in certain scenarios -- particularly SMT, but
    even non-SMT may be vulnerable in some cases.
    
    So just unconditionally warn if the user requests it on the cmdline.
    
      [ bp: Massage commit message. ]
    
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jpoimboe authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    19b78a9 View commit details
    Browse the repository at this point in the history
  8. x86/speculation: Warn about eIBRS + LFENCE + Unprivileged eBPF + SMT

    commit 0de05d0 upstream.
    
    The commit
    
       44a3918 ("x86/speculation: Include unprivileged eBPF status in Spectre v2 mitigation reporting")
    
    added a warning for the "eIBRS + unprivileged eBPF" combination, which
    has been shown to be vulnerable against Spectre v2 BHB-based attacks.
    
    However, there's no warning about the "eIBRS + LFENCE retpoline +
    unprivileged eBPF" combo. The LFENCE adds more protection by shortening
    the speculation window after a mispredicted branch. That makes an attack
    significantly more difficult, even with unprivileged eBPF. So at least
    for now the logic doesn't warn about that combination.
    
    But if you then add SMT into the mix, the SMT attack angle weakens the
    effectiveness of the LFENCE considerably.
    
    So extend the "eIBRS + unprivileged eBPF" warning to also include the
    "eIBRS + LFENCE + unprivileged eBPF + SMT" case.
    
      [ bp: Massage commit message. ]
    
    Suggested-by: Alyssa Milburn <alyssa.milburn@linux.intel.com>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jpoimboe authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    db3eacc View commit details
    Browse the repository at this point in the history
  9. ARM: report Spectre v2 status through sysfs

    commit 9dd7819 upstream.
    
    As per other architectures, add support for reporting the Spectre
    vulnerability status via sysfs CPU.
    
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Russell King (Oracle) authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    f5eb0f1 View commit details
    Browse the repository at this point in the history
  10. ARM: early traps initialisation

    commit 04e91b7 upstream.
    
    Provide a couple of helpers to copy the vectors and stubs, and also
    to flush the copied vectors and stubs.
    
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Russell King (Oracle) authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    0f0fd6e View commit details
    Browse the repository at this point in the history
  11. ARM: use LOADADDR() to get load address of sections

    commit 8d9d651 upstream.
    
    Use the linker's LOADADDR() macro to get the load address of the
    sections, and provide a macro to set the start and end symbols.
    
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Russell King (Oracle) authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    21ceffd View commit details
    Browse the repository at this point in the history
  12. ARM: Spectre-BHB workaround

    commit b9baf5c upstream.
    
    Workaround the Spectre BHB issues for Cortex-A15, Cortex-A57,
    Cortex-A72, Cortex-A73 and Cortex-A75. We also include Brahma B15 as
    well to be safe, which is affected by Spectre V2 in the same ways as
    Cortex-A15.
    
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Russell King (Oracle) authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    9fd1d31 View commit details
    Browse the repository at this point in the history
  13. ARM: include unprivileged BPF status in Spectre V2 reporting

    commit 25875aa upstream.
    
    The mitigations for Spectre-BHB are only applied when an exception
    is taken, but when unprivileged BPF is enabled, userspace can
    load BPF programs that can be used to exploit the problem.
    
    When unprivileged BPF is enabled, report the vulnerable status via
    the spectre_v2 sysfs file.
    
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Russell King (Oracle) authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    680e356 View commit details
    Browse the repository at this point in the history
  14. arm64: add ID_AA64ISAR2_EL1 sys register

    commit 9e45365 upstream.
    
    This is a new ID register, introduced in 8.7.
    
    Signed-off-by: Joey Gouly <joey.gouly@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Marc Zyngier <maz@kernel.org>
    Cc: James Morse <james.morse@arm.com>
    Cc: Alexandru Elisei <alexandru.elisei@arm.com>
    Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
    Cc: Reiji Watanabe <reijiw@google.com>
    Acked-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20211210165432.8106-3-joey.gouly@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgouly authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    6876d90 View commit details
    Browse the repository at this point in the history
  15. arm64: cpufeature: add HWCAP for FEAT_AFP

    commit 5c13f04 upstream.
    
    Add a new HWCAP to detect the Alternate Floating-point Behaviour
    feature (FEAT_AFP), introduced in Armv8.7.
    
    Also expose this to userspace in the ID_AA64MMFR1_EL1 feature register.
    
    Signed-off-by: Joey Gouly <joey.gouly@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Acked-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20211210165432.8106-2-joey.gouly@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgouly authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    549ee09 View commit details
    Browse the repository at this point in the history
  16. arm64: cpufeature: add HWCAP for FEAT_RPRES

    commit 1175011 upstream.
    
    Add a new HWCAP to detect the Increased precision of Reciprocal Estimate
    and Reciprocal Square Root Estimate feature (FEAT_RPRES), introduced in Armv8.7.
    
    Also expose this to userspace in the ID_AA64ISAR2_EL1 feature register.
    
    Signed-off-by: Joey Gouly <joey.gouly@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Acked-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20211210165432.8106-4-joey.gouly@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgouly authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    b6f9598 View commit details
    Browse the repository at this point in the history
  17. arm64: entry.S: Add ventry overflow sanity checks

    commit 4330e2c upstream.
    
    Subsequent patches add even more code to the ventry slots.
    Ensure kernels that overflow a ventry slot don't get built.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    d1e3d6d View commit details
    Browse the repository at this point in the history
  18. arm64: spectre: Rename spectre_v4_patch_fw_mitigation_conduit

    commit 1b33d48 upstream.
    
    The spectre-v4 sequence includes an SMC from the assembly entry code.
    spectre_v4_patch_fw_mitigation_conduit is the patching callback that
    generates an HVC or SMC depending on the SMCCC conduit type.
    
    As this isn't specific to spectre-v4, rename it
    smccc_patch_fw_mitigation_conduit so it can be re-used.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    346793c View commit details
    Browse the repository at this point in the history
  19. KVM: arm64: Allow indirect vectors to be used without SPECTRE_V3A

    commit 5bdf343 upstream.
    
    CPUs vulnerable to Spectre-BHB either need to make an SMC-CC firmware
    call from the vectors, or run a sequence of branches. This gets added
    to the hyp vectors. If there is no support for arch-workaround-1 in
    firmware, the indirect vector will be used.
    
    kvm_init_vector_slots() only initialises the two indirect slots if
    the platform is vulnerable to Spectre-v3a. pKVM's hyp_map_vectors()
    only initialises __hyp_bp_vect_base if the platform is vulnerable to
    Spectre-v3a.
    
    As there are about to more users of the indirect vectors, ensure
    their entries in hyp_spectre_vector_selector[] are always initialised,
    and __hyp_bp_vect_base defaults to the regular VA mapping.
    
    The Spectre-v3a check is moved to a helper
    kvm_system_needs_idmapped_vectors(), and merged with the code
    that creates the hyp mappings.
    
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    46af6fc View commit details
    Browse the repository at this point in the history
  20. arm64: entry: Make the trampoline cleanup optional

    commit d739da1 upstream.
    
    Subsequent patches will add additional sets of vectors that use
    the same tricks as the kpti vectors to reach the full-fat vectors.
    The full-fat vectors contain some cleanup for kpti that is patched
    in by alternatives when kpti is in use. Once there are additional
    vectors, the cleanup will be needed in more cases.
    
    But on big/little systems, the cleanup would be harmful if no
    trampoline vector were in use. Instead of forcing CPUs that don't
    need a trampoline vector to use one, make the trampoline cleanup
    optional.
    
    Entry at the top of the vectors will skip the cleanup. The trampoline
    vectors can then skip the first instruction, triggering the cleanup
    to run.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    7b63df9 View commit details
    Browse the repository at this point in the history
  21. arm64: entry: Free up another register on kpti's tramp_exit path

    commit 03aff3a upstream.
    
    Kpti stashes x30 in far_el1 while it uses x30 for all its work.
    
    Making the vectors a per-cpu data structure will require a second
    register.
    
    Allow tramp_exit two registers before it unmaps the kernel, by
    leaving x30 on the stack, and stashing x29 in far_el1.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    57e9a5f View commit details
    Browse the repository at this point in the history
  22. arm64: entry: Move the trampoline data page before the text page

    commit c091fb6 upstream.
    
    The trampoline code has a data page that holds the address of the vectors,
    which is unmapped when running in user-space. This ensures that with
    CONFIG_RANDOMIZE_BASE, the randomised address of the kernel can't be
    discovered until after the kernel has been mapped.
    
    If the trampoline text page is extended to include multiple sets of
    vectors, it will be larger than a single page, making it tricky to
    find the data page without knowing the size of the trampoline text
    pages, which will vary with PAGE_SIZE.
    
    Move the data page to appear before the text page. This allows the
    data page to be found without knowing the size of the trampoline text
    pages. 'tramp_vectors' is used to refer to the beginning of the
    .entry.tramp.text section, do that explicitly.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    62cfcf8 View commit details
    Browse the repository at this point in the history
  23. arm64: entry: Allow tramp_alias to access symbols after the 4K boundary

    commit 6c5bf79 upstream.
    
    Systems using kpti enter and exit the kernel through a trampoline mapping
    that is always mapped, even when the kernel is not. tramp_valias is a macro
    to find the address of a symbol in the trampoline mapping.
    
    Adding extra sets of vectors will expand the size of the entry.tramp.text
    section to beyond 4K. tramp_valias will be unable to generate addresses
    for symbols beyond 4K as it uses the 12 bit immediate of the add
    instruction.
    
    As there are now two registers available when tramp_alias is called,
    use the extra register to avoid the 4K limit of the 12 bit immediate.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    5da0c4b View commit details
    Browse the repository at this point in the history
  24. arm64: entry: Don't assume tramp_vectors is the start of the vectors

    commit ed50da7 upstream.
    
    The tramp_ventry macro uses tramp_vectors as the address of the vectors
    when calculating which ventry in the 'full fat' vectors to branch to.
    
    While there is one set of tramp_vectors, this will be true.
    Adding multiple sets of vectors will break this assumption.
    
    Move the generation of the vectors to a macro, and pass the start
    of the vectors as an argument to tramp_ventry.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    dfb2599 View commit details
    Browse the repository at this point in the history
  25. arm64: entry: Move trampoline macros out of ifdef'd section

    commit 13d7a08 upstream.
    
    The macros for building the kpti trampoline are all behind
    CONFIG_UNMAP_KERNEL_AT_EL0, and in a region that outputs to the
    .entry.tramp.text section.
    
    Move the macros out so they can be used to generate other kinds of
    trampoline. Only the symbols need to be guarded by
    CONFIG_UNMAP_KERNEL_AT_EL0 and appear in the .entry.tramp.text section.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    e0077b0 View commit details
    Browse the repository at this point in the history
  26. arm64: entry: Make the kpti trampoline's kpti sequence optional

    commit c47e4d0 upstream.
    
    Spectre-BHB needs to add sequences to the vectors. Having one global
    set of vectors is a problem for big/little systems where the sequence
    is costly on cpus that are not vulnerable.
    
    Making the vectors per-cpu in the style of KVM's bh_harden_hyp_vecs
    requires the vectors to be generated by macros.
    
    Make the kpti re-mapping of the kernel optional, so the macros can be
    used without kpti.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    984e7e3 View commit details
    Browse the repository at this point in the history
  27. arm64: entry: Allow the trampoline text to occupy multiple pages

    commit a9c406e upstream.
    
    Adding a second set of vectors to .entry.tramp.text will make it
    larger than a single 4K page.
    
    Allow the trampoline text to occupy up to three pages by adding two
    more fixmap slots. Previous changes to tramp_valias allowed it to reach
    beyond a single page.
    
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    483fa53 View commit details
    Browse the repository at this point in the history
  28. arm64: entry: Add non-kpti __bp_harden_el1_vectors for mitigations

    commit aff6539 upstream.
    
    kpti is an optional feature, for systems not using kpti a set of
    vectors for the spectre-bhb mitigations is needed.
    
    Add another set of vectors, __bp_harden_el1_vectors, that will be
    used if a mitigation is needed and kpti is not in use.
    
    The EL1 ventries are repeated verbatim as there is no additional
    work needed for entry from EL1.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    448a95a View commit details
    Browse the repository at this point in the history
  29. arm64: entry: Add vectors that have the bhb mitigation sequences

    commit ba26892 upstream.
    
    Some CPUs affected by Spectre-BHB need a sequence of branches, or a
    firmware call to be run before any indirect branch. This needs to go
    in the vectors. No CPU needs both.
    
    While this can be patched in, it would run on all CPUs as there is a
    single set of vectors. If only one part of a big/little combination is
    affected, the unaffected CPUs have to run the mitigation too.
    
    Create extra vectors that include the sequence. Subsequent patches will
    allow affected CPUs to select this set of vectors. Later patches will
    modify the loop count to match what the CPU requires.
    
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    d535ca6 View commit details
    Browse the repository at this point in the history
  30. arm64: entry: Add macro for reading symbol addresses from the trampoline

    commit b28a8ee upstream.
    
    The trampoline code needs to use the address of symbols in the wider
    kernel, e.g. vectors. PC-relative addressing wouldn't work as the
    trampoline code doesn't run at the address the linker expected.
    
    tramp_ventry uses a literal pool, unless CONFIG_RANDOMIZE_BASE is
    set, in which case it uses the data page as a literal pool because
    the data page can be unmapped when running in user-space, which is
    required for CPUs vulnerable to meltdown.
    
    Pull this logic out as a macro, instead of adding a third copy
    of it.
    
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    b9c2958 View commit details
    Browse the repository at this point in the history
  31. arm64: Add percpu vectors for EL1

    commit bd09128 upstream.
    
    The Spectre-BHB workaround adds a firmware call to the vectors. This
    is needed on some CPUs, but not others. To avoid the unaffected CPU in
    a big/little pair from making the firmware call, create per cpu vectors.
    
    The per-cpu vectors only apply when returning from EL0.
    
    Systems using KPTI can use the canonical 'full-fat' vectors directly at
    EL1, the trampoline exit code will switch to this_cpu_vector on exit to
    EL0. Systems not using KPTI should always use this_cpu_vector.
    
    this_cpu_vector will point at a vector in tramp_vecs or
    __bp_harden_el1_vectors, depending on whether KPTI is in use.
    
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    d4293ed View commit details
    Browse the repository at this point in the history
  32. arm64: proton-pack: Report Spectre-BHB vulnerabilities as part of Spe…

    …ctre-v2
    
    commit dee435b upstream.
    
    Speculation attacks against some high-performance processors can
    make use of branch history to influence future speculation as part of
    a spectre-v2 attack. This is not mitigated by CSV2, meaning CPUs that
    previously reported 'Not affected' are now moderately mitigated by CSV2.
    
    Update the value in /sys/devices/system/cpu/vulnerabilities/spectre_v2
    to also show the state of the BHB mitigation.
    
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    f0567fc View commit details
    Browse the repository at this point in the history
  33. arm64: Mitigate spectre style branch history side channels

    commit 558c303 upstream.
    
    Speculation attacks against some high-performance processors can
    make use of branch history to influence future speculation.
    When taking an exception from user-space, a sequence of branches
    or a firmware call overwrites or invalidates the branch history.
    
    The sequence of branches is added to the vectors, and should appear
    before the first indirect branch. For systems using KPTI the sequence
    is added to the kpti trampoline where it has a free register as the exit
    from the trampoline is via a 'ret'. For systems not using KPTI, the same
    register tricks are used to free up a register in the vectors.
    
    For the firmware call, arch-workaround-3 clobbers 4 registers, so
    there is no choice but to save them to the EL1 stack. This only happens
    for entry from EL0, so if we take an exception due to the stack access,
    it will not become re-entrant.
    
    For KVM, the existing branch-predictor-hardening vectors are used.
    When a spectre version of these vectors is in use, the firmware call
    is sufficient to mitigate against Spectre-BHB. For the non-spectre
    versions, the sequence of branches is added to the indirect vector.
    
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    0b2bf1b View commit details
    Browse the repository at this point in the history
  34. KVM: arm64: Allow SMCCC_ARCH_WORKAROUND_3 to be discovered and migrated

    commit a5905d6 upstream.
    
    KVM allows the guest to discover whether the ARCH_WORKAROUND SMCCC are
    implemented, and to preserve that state during migration through its
    firmware register interface.
    
    Add the necessary boiler plate for SMCCC_ARCH_WORKAROUND_3.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    e1e8770 View commit details
    Browse the repository at this point in the history
  35. arm64: Use the clearbhb instruction in mitigations

    commit 228a26b upstream.
    
    Future CPUs may implement a clearbhb instruction that is sufficient
    to mitigate SpectreBHB. CPUs that implement this instruction, but
    not CSV2.3 must be affected by Spectre-BHB.
    
    Add support to use this instruction as the BHB mitigation on CPUs
    that support it. The instruction is in the hint space, so it will
    be treated by a NOP as older CPUs.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    2df4d0a View commit details
    Browse the repository at this point in the history
  36. arm64: proton-pack: Include unprivileged eBPF status in Spectre v2 mi…

    …tigation reporting
    
    commit 58c9a50 upstream.
    
    The mitigations for Spectre-BHB are only applied when an exception is
    taken from user-space. The mitigation status is reported via the spectre_v2
    sysfs vulnerabilities file.
    
    When unprivileged eBPF is enabled the mitigation in the exception vectors
    can be avoided by an eBPF program.
    
    When unprivileged eBPF is enabled, print a warning and report vulnerable
    via the sysfs vulnerabilities file.
    
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    James Morse authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    80d1978 View commit details
    Browse the repository at this point in the history
  37. ARM: fix build error when BPF_SYSCALL is disabled

    commit 330f4c5 upstream.
    
    It was missing a semicolon.
    
    Signed-off-by: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Fixes: 25875aa ("ARM: include unprivileged BPF status in Spectre V2 reporting").
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    linkmauve authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    e65cdb9 View commit details
    Browse the repository at this point in the history
  38. ARM: fix co-processor register typo

    commit 33970b0 upstream.
    
    In the recent Spectre BHB patches, there was a typo that is only
    exposed in certain configurations: mcr p15,0,XX,c7,r5,4 should have
    been mcr p15,0,XX,c7,c5,4
    
    Reported-by: kernel test robot <lkp@intel.com>
    Fixes: b9baf5c ("ARM: Spectre-BHB workaround")
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Russell King (Oracle) authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    3c68579 View commit details
    Browse the repository at this point in the history
  39. ARM: Do not use NOCROSSREFS directive with ld.lld

    commit 36168e3 upstream.
    
    ld.lld does not support the NOCROSSREFS directive at the moment, which
    breaks the build after commit b9baf5c ("ARM: Spectre-BHB
    workaround"):
    
      ld.lld: error: ./arch/arm/kernel/vmlinux.lds:34: AT expected, but got NOCROSSREFS
    
    Support for this directive will eventually be implemented, at which
    point a version check can be added. To avoid breaking the build in the
    meantime, just define NOCROSSREFS to nothing when using ld.lld, with a
    link to the issue for tracking.
    
    Cc: stable@vger.kernel.org
    Fixes: b9baf5c ("ARM: Spectre-BHB workaround")
    Link: ClangBuiltLinux#1609
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    nathanchance authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    7d24138 View commit details
    Browse the repository at this point in the history
  40. arm64: Do not include __READ_ONCE() block in assembly files

    commit 52c9f93 upstream.
    
    When building arm64 defconfig + CONFIG_LTO_CLANG_{FULL,THIN}=y after
    commit 558c303 ("arm64: Mitigate spectre style branch history side
    channels"), the following error occurs:
    
      <instantiation>:4:2: error: invalid fixup for movz/movk instruction
       mov w0, #ARM_SMCCC_ARCH_WORKAROUND_3
       ^
    
    Marc figured out that moving "#include <linux/init.h>" in
    include/linux/arm-smccc.h into a !__ASSEMBLY__ block resolves it. The
    full include chain with CONFIG_LTO=y from include/linux/arm-smccc.h:
    
    include/linux/init.h
    include/linux/compiler.h
    arch/arm64/include/asm/rwonce.h
    arch/arm64/include/asm/alternative-macros.h
    arch/arm64/include/asm/assembler.h
    
    The asm/alternative-macros.h include in asm/rwonce.h only happens when
    CONFIG_LTO is set, which ultimately casues asm/assembler.h to be
    included before the definition of ARM_SMCCC_ARCH_WORKAROUND_3. As a
    result, the preprocessor does not expand ARM_SMCCC_ARCH_WORKAROUND_3 in
    __mitigate_spectre_bhb_fw, which results in the error above.
    
    Avoid this problem by just avoiding the CONFIG_LTO=y __READ_ONCE() block
    in asm/rwonce.h with assembly files, as nothing in that block is useful
    to assembly files, which allows ARM_SMCCC_ARCH_WORKAROUND_3 to be
    properly expanded with CONFIG_LTO=y builds.
    
    Fixes: e35123d ("arm64: lto: Strengthen READ_ONCE() to acquire when CONFIG_LTO=y")
    Cc: <stable@vger.kernel.org> # 5.11.x
    Link: https://lore.kernel.org/r/20220309155716.3988480-1-maz@kernel.org/
    Reported-by: Marc Zyngier <maz@kernel.org>
    Acked-by: James Morse <james.morse@arm.com>
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Link: https://lore.kernel.org/r/20220309191633.2307110-1-nathan@kernel.org
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    nathanchance authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    f68edac View commit details
    Browse the repository at this point in the history
  41. ARM: fix build warning in proc-v7-bugs.c

    commit b1a384d upstream.
    
    The kernel test robot discovered that building without
    HARDEN_BRANCH_PREDICTOR issues a warning due to a missing
    argument to pr_info().
    
    Add the missing argument.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Fixes: 9dd7819 ("ARM: report Spectre v2 status through sysfs")
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Russell King (Oracle) authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    624a3c7 View commit details
    Browse the repository at this point in the history
  42. xen/xenbus: don't let xenbus_grant_ring() remove grants in error case

    Commit 3777ea7 upstream.
    
    Letting xenbus_grant_ring() tear down grants in the error case is
    problematic, as the other side could already have used these grants.
    Calling gnttab_end_foreign_access_ref() without checking success is
    resulting in an unclear situation for any caller of xenbus_grant_ring()
    as in the error case the memory pages of the ring page might be
    partially mapped. Freeing them would risk unwanted foreign access to
    them, while not freeing them would leak memory.
    
    In order to remove the need to undo any gnttab_grant_foreign_access()
    calls, use gnttab_alloc_grant_references() to make sure no further
    error can occur in the loop granting access to the ring pages.
    
    It should be noted that this way of handling removes leaking of
    grant entries in the error case, too.
    
    This is CVE-2022-23040 / part of XSA-396.
    
    Reported-by: Demi Marie Obenour <demi@invisiblethingslab.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    69e581a View commit details
    Browse the repository at this point in the history
  43. xen/grant-table: add gnttab_try_end_foreign_access()

    Commit 6b1775f upstream.
    
    Add a new grant table function gnttab_try_end_foreign_access(), which
    will remove and free a grant if it is not in use.
    
    Its main use case is to either free a grant if it is no longer in use,
    or to take some other action if it is still in use. This other action
    can be an error exit, or (e.g. in the case of blkfront persistent grant
    feature) some special handling.
    
    This is CVE-2022-23036, CVE-2022-23038 / part of XSA-396.
    
    Reported-by: Demi Marie Obenour <demi@invisiblethingslab.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    0ba1ab2 View commit details
    Browse the repository at this point in the history
  44. xen/blkfront: don't use gnttab_query_foreign_access() for mapped status

    Commit abf1fd5 upstream.
    
    It isn't enough to check whether a grant is still being in use by
    calling gnttab_query_foreign_access(), as a mapping could be realized
    by the other side just after having called that function.
    
    In case the call was done in preparation of revoking a grant it is
    better to do so via gnttab_end_foreign_access_ref() and check the
    success of that operation instead.
    
    For the ring allocation use alloc_pages_exact() in order to avoid
    high order pages in case of a multi-page ring.
    
    If a grant wasn't unmapped by the backend without persistent grants
    being used, set the device state to "error".
    
    This is CVE-2022-23036 / part of XSA-396.
    
    Reported-by: Demi Marie Obenour <demi@invisiblethingslab.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    2261393 View commit details
    Browse the repository at this point in the history
  45. xen/netfront: don't use gnttab_query_foreign_access() for mapped status

    Commit 31185df upstream.
    
    It isn't enough to check whether a grant is still being in use by
    calling gnttab_query_foreign_access(), as a mapping could be realized
    by the other side just after having called that function.
    
    In case the call was done in preparation of revoking a grant it is
    better to do so via gnttab_end_foreign_access_ref() and check the
    success of that operation instead.
    
    This is CVE-2022-23037 / part of XSA-396.
    
    Reported-by: Demi Marie Obenour <demi@invisiblethingslab.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    741052b View commit details
    Browse the repository at this point in the history
  46. xen/scsifront: don't use gnttab_query_foreign_access() for mapped status

    Commit 33172ab upstream.
    
    It isn't enough to check whether a grant is still being in use by
    calling gnttab_query_foreign_access(), as a mapping could be realized
    by the other side just after having called that function.
    
    In case the call was done in preparation of revoking a grant it is
    better to do so via gnttab_try_end_foreign_access() and check the
    success of that operation instead.
    
    This is CVE-2022-23038 / part of XSA-396.
    
    Reported-by: Demi Marie Obenour <demi@invisiblethingslab.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    5ee69f5 View commit details
    Browse the repository at this point in the history
  47. xen/gntalloc: don't use gnttab_query_foreign_access()

    Commit d3b6372 upstream.
    
    Using gnttab_query_foreign_access() is unsafe, as it is racy by design.
    
    The use case in the gntalloc driver is not needed at all. While at it
    replace the call of gnttab_end_foreign_access_ref() with a call of
    gnttab_end_foreign_access(), which is what is really wanted there. In
    case the grant wasn't used due to an allocation failure, just free the
    grant via gnttab_free_grant_reference().
    
    This is CVE-2022-23039 / part of XSA-396.
    
    Reported-by: Demi Marie Obenour <demi@invisiblethingslab.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    3b72403 View commit details
    Browse the repository at this point in the history
  48. xen: remove gnttab_query_foreign_access()

    Commit 1dbd11c upstream.
    
    Remove gnttab_query_foreign_access(), as it is unused and unsafe to
    use.
    
    All previous use cases assumed a grant would not be in use after
    gnttab_query_foreign_access() returned 0. This information is useless
    in best case, as it only refers to a situation in the past, which could
    have changed already.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    b3df6e1 View commit details
    Browse the repository at this point in the history
  49. xen/9p: use alloc/free_pages_exact()

    Commit 5cadd4b upstream.
    
    Instead of __get_free_pages() and free_pages() use alloc_pages_exact()
    and free_pages_exact(). This is in preparation of a change of
    gnttab_end_foreign_access() which will prohibit use of high-order
    pages.
    
    By using the local variable "order" instead of ring->intf->ring_order
    in the error path of xen_9pfs_front_alloc_dataring() another bug is
    fixed, as the error path can be entered before ring->intf->ring_order
    is being set.
    
    By using alloc_pages_exact() the size in bytes is specified for the
    allocation, which fixes another bug for the case of
    order < (PAGE_SHIFT - XEN_PAGE_SHIFT).
    
    This is part of CVE-2022-23041 / XSA-396.
    
    Reported-by: Simon Gaiser <simon@invisiblethingslab.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    d83dd50 View commit details
    Browse the repository at this point in the history
  50. xen/pvcalls: use alloc/free_pages_exact()

    Commit b0576cc upstream.
    
    Instead of __get_free_pages() and free_pages() use alloc_pages_exact()
    and free_pages_exact(). This is in preparation of a change of
    gnttab_end_foreign_access() which will prohibit use of high-order
    pages.
    
    This is part of CVE-2022-23041 / XSA-396.
    
    Reported-by: Simon Gaiser <simon@invisiblethingslab.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    674d0ae View commit details
    Browse the repository at this point in the history
  51. xen/gnttab: fix gnttab_end_foreign_access() without page specified

    Commit 42baefa upstream.
    
    gnttab_end_foreign_access() is used to free a grant reference and
    optionally to free the associated page. In case the grant is still in
    use by the other side processing is being deferred. This leads to a
    problem in case no page to be freed is specified by the caller: the
    caller doesn't know that the page is still mapped by the other side
    and thus should not be used for other purposes.
    
    The correct way to handle this situation is to take an additional
    reference to the granted page in case handling is being deferred and
    to drop that reference when the grant reference could be freed
    finally.
    
    This requires that there are no users of gnttab_end_foreign_access()
    left directly repurposing the granted page after the call, as this
    might result in clobbered data or information leaks via the not yet
    freed grant reference.
    
    This is part of CVE-2022-23041 / XSA-396.
    
    Reported-by: Simon Gaiser <simon@invisiblethingslab.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    6d16892 View commit details
    Browse the repository at this point in the history
  52. xen/netfront: react properly to failing gnttab_end_foreign_access_ref()

    Commit 66e3531 upstream.
    
    When calling gnttab_end_foreign_access_ref() the returned value must
    be tested and the reaction to that value should be appropriate.
    
    In case of failure in xennet_get_responses() the reaction should not be
    to crash the system, but to disable the network device.
    
    The calls in setup_netfront() can be replaced by calls of
    gnttab_end_foreign_access(). While at it avoid double free of ring
    pages and grant references via xennet_disconnect_backend() in this case.
    
    This is CVE-2022-23042 / part of XSA-396.
    
    Reported-by: Demi Marie Obenour <demi@invisiblethingslab.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    3463064 View commit details
    Browse the repository at this point in the history
  53. Revert "ACPI: PM: s2idle: Cancel wakeup before dispatching EC GPE"

    This reverts commit 4287509 which is
    commit dc0075b upstream.
    
    It's been reported to cause problems with a number of Fedora and Arch
    Linux users, so drop it for now until that is resolved.
    
    Link: https://lore.kernel.org/r/CAJZ5v0gE52NT=4kN4MkhV3Gx=M5CeMGVHOF0jgTXDb5WwAMs_Q@mail.gmail.com
    Link: https://lore.kernel.org/r/31b9d1cd-6a67-218b-4ada-12f72e6f00dc@redhat.com
    Reported-by: Hans de Goede <hdegoede@redhat.com>
    Reported-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: Sasha Levin <sashal@kernel.org>
    Cc: Justin Forbes <jmforbes@linuxtx.org>
    Cc: Mark Pearson <markpearson@lenovo.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    cf6eae0 View commit details
    Browse the repository at this point in the history
  54. Linux 5.16.14

    Link: https://lore.kernel.org/r/20220309155859.086952723@linuxfoundation.org
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Fox Chen <foxhlchen@gmail.com>
    Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
    Link: https://lore.kernel.org/r/20220310140811.832630727@linuxfoundation.org
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Fox Chen <foxhlchen@gmail.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Zan Aziz <zanaziz313@gmail.com>
    Tested-by: Rudi Heitbaum <rudi@heitbaum.com>
    Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    gregkh committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    3cfa7ce View commit details
    Browse the repository at this point in the history
  55. Merge tag 'v5.16.14' into odroid-5.16.y

    This is the 5.16.14 stable release
    
    Change-Id: I4615761a9369b29d2eb9664c17ce9ed22ec26c01
    tobetter committed Mar 11, 2022
    Configuration menu
    Copy the full SHA
    bb8fe4d View commit details
    Browse the repository at this point in the history

Commits on Mar 16, 2022

  1. arm64: dts: qcom: sm8350: Describe GCC dependency clocks

    [ Upstream commit 9ea9eb3 ]
    
    Add all the clock names that the GCC driver expects to get via DT, so that the
    clock handles can be filled as the development progresses.
    
    Signed-off-by: Konrad Dybcio <konrad.dybcio@somainline.org>
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Link: https://lore.kernel.org/r/20211114012755.112226-8-konrad.dybcio@somainline.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Konrad Dybcio authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    8449429 View commit details
    Browse the repository at this point in the history
  2. arm64: dts: qcom: sm8350: Correct UFS symbol clocks

    [ Upstream commit 0fd4dcb ]
    
    The introduction of '9a61f813fcc8 ("clk: qcom: regmap-mux: fix parent
    clock lookup")' broke UFS support on SM8350.
    
    The cause for this is that the symbol clocks have a specified rate in
    the "freq-table-hz" table in the UFS node, which causes the UFS code to
    request a rate change, for which the "bi_tcxo" happens to provide the
    closest rate.  Prior to the change in regmap-mux it was determined
    (incorrectly) that no change was needed and everything worked.
    
    The rates of 75 and 300MHz matches the documentation for the symbol
    clocks, but we don't represent the parent clocks today. So let's mimic
    the configuration found in other platforms, by omitting the rate for the
    symbol clocks as well to avoid the rate change.
    
    While at it also fill in the dummy symbol clocks that was dropped from
    the GCC driver as it was upstreamed.
    
    Fixes: 59c7cf8 ("arm64: dts: qcom: sm8350: Add UFS nodes")
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Reviewed-by: Vinod Koul <vkoul@kernel.org>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20211222162058.3418902-1-bjorn.andersson@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    andersson authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    0548068 View commit details
    Browse the repository at this point in the history
  3. HID: elo: Revert USB reference counting

    [ Upstream commit ac89895 ]
    
    Commit 817b8b9 ("HID: elo: fix memory leak in elo_probe") introduced
    memory leak on error path, but more importantly the whole USB reference
    counting is not needed at all in the first place, as the driver itself
    doesn't change the reference counting in any way, and the associated
    usb_device is guaranteed to be kept around by USB core as long as the
    driver binding exists.
    
    Reported-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Fixes: fbf4272 ("HID: elo: update the reference count of the usb device structure")
    Fixes: 817b8b9 ("HID: elo: fix memory leak in elo_probe")
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Jiri Kosina authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    ec73324 View commit details
    Browse the repository at this point in the history
  4. HID: hid-thrustmaster: fix OOB read in thrustmaster_interrupts

    [ Upstream commit fc3ef2e ]
    
    Syzbot reported an slab-out-of-bounds Read in thrustmaster_probe() bug.
    The root case is in missing validation check of actual number of endpoints.
    
    Code should not blindly access usb_host_interface::endpoint array, since
    it may contain less endpoints than code expects.
    
    Fix it by adding missing validaion check and print an error if
    number of endpoints do not match expected number
    
    Fixes: c49c336 ("HID: support for initialization of some Thrustmaster wheels")
    Reported-and-tested-by: syzbot+35eebd505e97d315d01c@syzkaller.appspotmail.com
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    pskrgag authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    5618543 View commit details
    Browse the repository at this point in the history
  5. ARM: boot: dts: bcm2711: Fix HVS register range

    [ Upstream commit 515415d ]
    
    While the HVS has the same context memory size in the BCM2711 than in
    the previous SoCs, the range allocated to the registers doubled and it
    now takes 16k + 16k, compared to 8k + 16k before.
    
    The KMS driver will use the whole context RAM though, eventually
    resulting in a pointer dereference error when we access the higher half
    of the context memory since it hasn't been mapped.
    
    Fixes: 4564363 ("ARM: dts: bcm2711: Enable the display pipeline")
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mripard authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    e5b4f60 View commit details
    Browse the repository at this point in the history
  6. clk: qcom: gdsc: Add support to update GDSC transition delay

    [ Upstream commit 4e7c4d3 ]
    
    GDSCs have multiple transition delays which are used for the GDSC FSM
    states. Older targets/designs required these values to be updated from
    gdsc code to certain default values for the FSM state to work as
    expected. But on the newer targets/designs the values updated from the
    GDSC driver can hamper the FSM state to not work as expected.
    
    On SC7180 we observe black screens because the gdsc is being
    enabled/disabled very rapidly and the GDSC FSM state does not work as
    expected. This is due to the fact that the GDSC reset value is being
    updated from SW.
    
    Thus add support to update the transition delay from the clock
    controller gdscs as required.
    
    Fixes: 45dd0e5 ("clk: qcom: Add support for GDSCs)
    Signed-off-by: Taniya Das <tdas@codeaurora.org>
    Link: https://lore.kernel.org/r/20220223185606.3941-1-tdas@codeaurora.org
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Taniya Das authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    530302b View commit details
    Browse the repository at this point in the history
  7. clk: qcom: dispcc: Update the transition delay for MDSS GDSC

    [ Upstream commit 6e6fec3 ]
    
    On SC7180 we observe black screens because the gdsc is being
    enabled/disabled very rapidly and the GDSC FSM state does not work as
    expected. This is due to the fact that the GDSC reset value is being
    updated from SW.
    
    The recommended transition delay for mdss core gdsc updated for
    SC7180/SC7280/SM8250.
    
    Fixes: dd3d066 ("clk: qcom: Add display clock controller driver for SC7180")
    Fixes: 1a00c96 ("clk: qcom: Add display clock controller driver for SC7280")
    Fixes: 80a18f4 ("clk: qcom: Add display clock controller driver for SM8150 and SM8250")
    Signed-off-by: Taniya Das <tdas@codeaurora.org>
    Link: https://lore.kernel.org/r/20220223185606.3941-2-tdas@codeaurora.org
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    [sboyd@kernel.org: lowercase hex]
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Taniya Das authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    d55c569 View commit details
    Browse the repository at this point in the history
  8. soc: mediatek: mt8192-mmsys: Fix dither to dsi0 path's input sel

    [ Upstream commit c432cd5 ]
    
    In commit d687e05 ("soc: mediatek: mmsys: Add mt8192 mmsys routing table"),
    the mmsys routing table for mt8192 was introduced but the input selector
    for DITHER->DSI0 has no value assigned to it.
    
    This means that we are clearing bit 0 instead of setting it, blocking
    communication between these two blocks; due to that, any display that
    is connected to DSI0 will not work, as no data will go through.
    The effect of that issue is that, during bootup, the DRM will block for
    some time, while atomically waiting for a vblank that never happens;
    later, the situation doesn't get better, leaving the display in a
    non-functional state.
    
    To fix this issue, fix the route entry in the table by assigning the
    dither input selector to MT8192_DISP_DSI0_SEL_IN.
    
    Fixes: d687e05 ("soc: mediatek: mmsys: Add mt8192 mmsys routing table")
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Tested-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
    Reviewed-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
    Link: https://lore.kernel.org/r/20220128142056.359900-1-angelogioacchino.delregno@collabora.com
    Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    AngeloGioacchino Del Regno authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    64ace2c View commit details
    Browse the repository at this point in the history
  9. HID: vivaldi: fix sysfs attributes leak

    [ Upstream commit cc71d37 ]
    
    The driver creates the top row map sysfs attribute in input_configured()
    method; unfortunately we do not have a callback that is executed when HID
    interface is unbound, thus we are leaking these sysfs attributes, for
    example when device is disconnected.
    
    To fix it let's switch to managed version of adding sysfs attributes which
    will ensure that they are destroyed when the driver is unbound.
    
    Fixes: 14c9c01 ("HID: add vivaldi HID driver")
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Tested-by: Stephen Boyd <swboyd@chromium.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    dtor authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    cbcf790 View commit details
    Browse the repository at this point in the history
  10. HID: nintendo: check the return value of alloc_workqueue()

    [ Upstream commit fe23b6b ]
    
    The function alloc_workqueue() in nintendo_hid_probe() can fail, but
    there is no check of its return value. To fix this bug, its return value
    should be checked with new error handling code.
    
    Fixes: c4eae84 ("HID: nintendo: add rumble support")
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
    Reviewed-by: Silvan Jegen <s.jegen@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    XidianGeneral authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    381ac58 View commit details
    Browse the repository at this point in the history
  11. arm64: dts: armada-3720-turris-mox: Add missing ethernet0 alias

    [ Upstream commit a0e897d ]
    
    U-Boot uses ethernet* aliases for setting MAC addresses. Therefore define
    also alias for ethernet0.
    
    Fixes: 7109d81 ("arm64: dts: marvell: add DTS for Turris Mox")
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    pali authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    1d1719a View commit details
    Browse the repository at this point in the history
  12. tipc: fix kernel panic when enabling bearer

    [ Upstream commit be4977b ]
    
    When enabling a bearer on a node, a kernel panic is observed:
    
    [    4.498085] RIP: 0010:tipc_mon_prep+0x4e/0x130 [tipc]
    ...
    [    4.520030] Call Trace:
    [    4.520689]  <IRQ>
    [    4.521236]  tipc_link_build_proto_msg+0x375/0x750 [tipc]
    [    4.522654]  tipc_link_build_state_msg+0x48/0xc0 [tipc]
    [    4.524034]  __tipc_node_link_up+0xd7/0x290 [tipc]
    [    4.525292]  tipc_rcv+0x5da/0x730 [tipc]
    [    4.526346]  ? __netif_receive_skb_core+0xb7/0xfc0
    [    4.527601]  tipc_l2_rcv_msg+0x5e/0x90 [tipc]
    [    4.528737]  __netif_receive_skb_list_core+0x20b/0x260
    [    4.530068]  netif_receive_skb_list_internal+0x1bf/0x2e0
    [    4.531450]  ? dev_gro_receive+0x4c2/0x680
    [    4.532512]  napi_complete_done+0x6f/0x180
    [    4.533570]  virtnet_poll+0x29c/0x42e [virtio_net]
    ...
    
    The node in question is receiving activate messages in another
    thread after changing bearer status to allow message sending/
    receiving in current thread:
    
             thread 1           |              thread 2
             --------           |              --------
                                |
    tipc_enable_bearer()        |
      test_and_set_bit_lock()   |
        tipc_bearer_xmit_skb()  |
                                | tipc_l2_rcv_msg()
                                |   tipc_rcv()
                                |     __tipc_node_link_up()
                                |       tipc_link_build_state_msg()
                                |         tipc_link_build_proto_msg()
                                |           tipc_mon_prep()
                                |           {
                                |             ...
                                |             // null-pointer dereference
                                |             u16 gen = mon->dom_gen;
                                |             ...
                                |           }
      // Not being executed yet |
      tipc_mon_create()         |
      {                         |
        ...                     |
        // allocate             |
        mon = kzalloc();        |
        ...                     |
      }                         |
    
    Monitoring pointer in thread 2 is dereferenced before monitoring data
    is allocated in thread 1. This causes kernel panic.
    
    This commit fixes it by allocating the monitoring data before enabling
    the bearer to receive messages.
    
    Fixes: 35c55c9 ("tipc: add neighbor monitoring framework")
    Reported-by: Shuang Li <shuali@redhat.com>
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Signed-off-by: Tung Nguyen <tung.q.nguyen@dektech.com.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Tung Nguyen authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    f4f59fd View commit details
    Browse the repository at this point in the history
  13. vdpa/mlx5: add validation for VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET command

    [ Upstream commit ed0f849 ]
    
    When control vq receives a VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET command
    request from the driver, presently there is no validation against the
    number of queue pairs to configure, or even if multiqueue had been
    negotiated or not is unverified. This may lead to kernel panic due to
    uninitialized resource for the queues were there any bogus request
    sent down by untrusted driver. Tie up the loose ends there.
    
    Fixes: 5289373 ("vdpa/mlx5: Add multiqueue support")
    Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
    Link: https://lore.kernel.org/r/1642206481-30721-4-git-send-email-si-wei.liu@oracle.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: Eli Cohen <elic@nvidia.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    siwliu-kernel authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    9f6effc View commit details
    Browse the repository at this point in the history
  14. vduse: Fix returning wrong type in vduse_domain_alloc_iova()

    [ Upstream commit b9d102d ]
    
    This fixes the following smatch warnings:
    
    drivers/vdpa/vdpa_user/iova_domain.c:305 vduse_domain_alloc_iova() warn: should 'iova_pfn << shift' be a 64 bit type?
    
    Fixes: 8c773d5 ("vduse: Implement an MMU-based software IOTLB")
    Reported-by: kernel test robot <lkp@intel.com>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
    Link: https://lore.kernel.org/r/20220121083940.102-1-xieyongji@bytedance.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    YongjiXie authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    553a0b0 View commit details
    Browse the repository at this point in the history
  15. net: phy: meson-gxl: fix interrupt handling in forced mode

    [ Upstream commit a502a8f ]
    
    This PHY doesn't support a link-up interrupt source. If aneg is enabled
    we use the "aneg complete" interrupt for this purpose, but if aneg is
    disabled link-up isn't signaled currently.
    According to a vendor driver there's an additional "energy detect"
    interrupt source that can be used to signal link-up if aneg is disabled.
    We can safely ignore this interrupt source if aneg is enabled.
    
    This patch was tested on a TX3 Mini TV box with S905W (even though
    boot message says it's a S905D).
    
    This issue has been existing longer, but due to changes in phylib and
    the driver the patch applies only from the commit marked as fixed.
    
    Fixes: 84c8f77 ("net: phy: meson-gxl: remove the use of .ack_callback()")
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Link: https://lore.kernel.org/r/04cac530-ea1b-850e-6cfa-144a55c4d75d@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    hkallweit authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    eb8330e View commit details
    Browse the repository at this point in the history
  16. mISDN: Fix memory leak in dsp_pipeline_build()

    [ Upstream commit c6a502c ]
    
    dsp_pipeline_build() allocates dup pointer by kstrdup(cfg),
    but then it updates dup variable by strsep(&dup, "|").
    As a result when it calls kfree(dup), the dup variable contains NULL.
    
    Found by Linux Driver Verification project (linuxtesting.org) with SVACE.
    
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Fixes: 960366c ("Add mISDN DSP")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    khoroshilov authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    640445d View commit details
    Browse the repository at this point in the history
  17. vhost: fix hung thread due to erroneous iotlb entries

    [ Upstream commit e2ae38c ]
    
    In vhost_iotlb_add_range_ctx(), range size can overflow to 0 when
    start is 0 and last is ULONG_MAX. One instance where it can happen
    is when userspace sends an IOTLB message with iova=size=uaddr=0
    (vhost_process_iotlb_msg). So, an entry with size = 0, start = 0,
    last = ULONG_MAX ends up in the iotlb. Next time a packet is sent,
    iotlb_access_ok() loops indefinitely due to that erroneous entry.
    
    	Call Trace:
    	 <TASK>
    	 iotlb_access_ok+0x21b/0x3e0 drivers/vhost/vhost.c:1340
    	 vq_meta_prefetch+0xbc/0x280 drivers/vhost/vhost.c:1366
    	 vhost_transport_do_send_pkt+0xe0/0xfd0 drivers/vhost/vsock.c:104
    	 vhost_worker+0x23d/0x3d0 drivers/vhost/vhost.c:372
    	 kthread+0x2e9/0x3a0 kernel/kthread.c:377
    	 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:295
    	 </TASK>
    
    Reported by syzbot at:
    	https://syzkaller.appspot.com/bug?extid=0abd373e2e50d704db87
    
    To fix this, do two things:
    
    1. Return -EINVAL in vhost_chr_write_iter() when userspace asks to map
       a range with size 0.
    2. Fix vhost_iotlb_add_range_ctx() to handle the range [0, ULONG_MAX]
       by splitting it into two entries.
    
    Fixes: 0bbe306 ("vhost: factor out IOTLB")
    Reported-by: syzbot+0abd373e2e50d704db87@syzkaller.appspotmail.com
    Tested-by: syzbot+0abd373e2e50d704db87@syzkaller.appspotmail.com
    Signed-off-by: Anirudh Rayabharam <mail@anirudhrb.com>
    Link: https://lore.kernel.org/r/20220305095525.5145-1-mail@anirudhrb.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    anirudhrb authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    d9a747e View commit details
    Browse the repository at this point in the history
  18. virtio-blk: Don't use MAX_DISCARD_SEGMENTS if max_discard_seg is zero

    [ Upstream commit dacc73e ]
    
    Currently the value of max_discard_segment will be set to
    MAX_DISCARD_SEGMENTS (256) with no basis in hardware if device
    set 0 to max_discard_seg in configuration space. It's incorrect
    since the device might not be able to handle such large descriptors.
    To fix it, let's follow max_segments restrictions in this case.
    
    Fixes: 1f23816 ("virtio_blk: add discard and write zeroes support")
    Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
    Link: https://lore.kernel.org/r/20220304100058.116-1-xieyongji@bytedance.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    YongjiXie authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    bb2269f View commit details
    Browse the repository at this point in the history
  19. virtio-blk: Remove BUG_ON() in virtio_queue_rq()

    [ Upstream commit e030759 ]
    
    Currently we have a BUG_ON() to make sure the number of sg
    list does not exceed queue_max_segments() in virtio_queue_rq().
    However, the block layer uses queue_max_discard_segments()
    instead of queue_max_segments() to limit the sg list for
    discard requests. So the BUG_ON() might be triggered if
    virtio-blk device reports a larger value for max discard
    segment than queue_max_segments(). To fix it, let's simply
    remove the BUG_ON() which has become unnecessary after commit
    02746e2("virtio-blk: avoid preallocating big SGL for data").
    And the unused vblk->sg_elems can also be removed together.
    
    Fixes: 1f23816 ("virtio_blk: add discard and write zeroes support")
    Suggested-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
    Reviewed-by: Max Gurtovoy <mgurtovoy@nvidia.com>
    Link: https://lore.kernel.org/r/20220304100058.116-2-xieyongji@bytedance.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    YongjiXie authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    0842aaa View commit details
    Browse the repository at this point in the history
  20. vdpa: fix use-after-free on vp_vdpa_remove

    [ Upstream commit eb057b4 ]
    
    When vp_vdpa driver is unbind, vp_vdpa is freed in vdpa_unregister_device
    and then vp_vdpa->mdev.pci_dev is dereferenced in vp_modern_remove,
    triggering use-after-free.
    
    Call Trace of unbinding driver free vp_vdpa :
    do_syscall_64
      vfs_write
        kernfs_fop_write_iter
          device_release_driver_internal
            pci_device_remove
              vp_vdpa_remove
                vdpa_unregister_device
                  kobject_release
                    device_release
                      kfree
    
    Call Trace of dereference vp_vdpa->mdev.pci_dev:
    vp_modern_remove
      pci_release_selected_regions
        pci_release_region
          pci_resource_len
            pci_resource_end
              (dev)->resource[(bar)].end
    
    Signed-off-by: Zhang Min <zhang.min9@zte.com.cn>
    Signed-off-by: Yi Wang <wang.yi59@zte.com.cn>
    Link: https://lore.kernel.org/r/20220301091059.46869-1-wang.yi59@zte.com.cn
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Fixes: 64b9f64 ("vdpa: introduce virtio pci driver")
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Zhang Min authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    dc54ba9 View commit details
    Browse the repository at this point in the history
  21. isdn: hfcpci: check the return value of dma_set_mask() in setup_hw()

    [ Upstream commit d0aeb0d ]
    
    The function dma_set_mask() in setup_hw() can fail, so its return value
    should be checked.
    
    Fixes: 1700fe1 ("Add mISDN HFC PCI driver")
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    XidianGeneral authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    ec4f8cd View commit details
    Browse the repository at this point in the history
  22. net: qlogic: check the return value of dma_alloc_coherent() in qed_vf…

    …_hw_prepare()
    
    [ Upstream commit e0058f0 ]
    
    The function dma_alloc_coherent() in qed_vf_hw_prepare() can fail, so
    its return value should be checked.
    
    Fixes: 1408cc1 ("qed: Introduce VFs")
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    XidianGeneral authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    2f49236 View commit details
    Browse the repository at this point in the history
  23. esp: Fix possible buffer overflow in ESP transformation

    [ Upstream commit ebe48d3 ]
    
    The maximum message size that can be send is bigger than
    the  maximum site that skb_page_frag_refill can allocate.
    So it is possible to write beyond the allocated buffer.
    
    Fix this by doing a fallback to COW in that case.
    
    v2:
    
    Avoid get get_order() costs as suggested by Linus Torvalds.
    
    Fixes: cac2661 ("esp4: Avoid skb_cow_data whenever possible")
    Fixes: 03e2a30 ("esp6: Avoid skb_cow_data whenever possible")
    Reported-by: valis <sec@valis.email>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    klassert authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    9afe83f View commit details
    Browse the repository at this point in the history
  24. esp: Fix BEET mode inter address family tunneling on GSO

    [ Upstream commit 053c8fd ]
    
    The xfrm{4,6}_beet_gso_segment() functions did not correctly set the
    SKB_GSO_IPXIP4 and SKB_GSO_IPXIP6 gso types for the address family
    tunneling case. Fix this by setting these gso types.
    
    Fixes: 384a46e ("esp4: add gso_segment for esp4 beet mode")
    Fixes: 7f9e40e ("esp6: add gso_segment for esp6 beet mode")
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    klassert authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    9a6e4c5 View commit details
    Browse the repository at this point in the history
  25. net: gro: move skb_gro_receive_list to udp_offload.c

    [ Upstream commit 0b935d7 ]
    
    This helper is used once, no need to keep it in fat net/core/skbuff.c
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Eric Dumazet authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    d9d4122 View commit details
    Browse the repository at this point in the history
  26. qed: return status of qed_iov_get_link

    [ Upstream commit d9dc0c8 ]
    
    Clang static analysis reports this issue
    qed_sriov.c:4727:19: warning: Assigned value is
      garbage or undefined
      ivi->max_tx_rate = tx_rate ? tx_rate : link.speed;
                       ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    link is only sometimes set by the call to qed_iov_get_link()
    qed_iov_get_link fails without setting link or returning
    status.  So change the decl to return status.
    
    Fixes: 73390ac ("qed*: support ndo_get_vf_config")
    Signed-off-by: Tom Rix <trix@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Tom Rix authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    74ca449 View commit details
    Browse the repository at this point in the history
  27. smsc95xx: Ignore -ENODEV errors when device is unplugged

    [ Upstream commit c70c453 ]
    
    According to Documentation/driver-api/usb/URB.rst when a device
    is unplugged usb_submit_urb() returns -ENODEV.
    
    This error code propagates all the way up to usbnet_read_cmd() and
    usbnet_write_cmd() calls inside the smsc95xx.c driver during
    Ethernet cable unplug, unbind or reboot.
    
    This causes the following errors to be shown on reboot, for example:
    
    ci_hdrc ci_hdrc.1: remove, state 1
    usb usb2: USB disconnect, device number 1
    usb 2-1: USB disconnect, device number 2
    usb 2-1.1: USB disconnect, device number 3
    smsc95xx 2-1.1:1.0 eth1: unregister 'smsc95xx' usb-ci_hdrc.1-1.1, smsc95xx USB 2.0 Ethernet
    smsc95xx 2-1.1:1.0 eth1: Failed to read reg index 0x00000114: -19
    smsc95xx 2-1.1:1.0 eth1: Error reading MII_ACCESS
    smsc95xx 2-1.1:1.0 eth1: __smsc95xx_mdio_read: MII is busy
    smsc95xx 2-1.1:1.0 eth1: Failed to read reg index 0x00000114: -19
    smsc95xx 2-1.1:1.0 eth1: Error reading MII_ACCESS
    smsc95xx 2-1.1:1.0 eth1: __smsc95xx_mdio_read: MII is busy
    smsc95xx 2-1.1:1.0 eth1: hardware isn't capable of remote wakeup
    usb 2-1.4: USB disconnect, device number 4
    ci_hdrc ci_hdrc.1: USB bus 2 deregistered
    ci_hdrc ci_hdrc.0: remove, state 4
    usb usb1: USB disconnect, device number 1
    ci_hdrc ci_hdrc.0: USB bus 1 deregistered
    imx2-wdt 30280000.watchdog: Device shutdown: Expect reboot!
    reboot: Restarting system
    
    Ignore the -ENODEV errors inside __smsc95xx_mdio_read() and
    __smsc95xx_phy_wait_not_busy() and do not print error messages
    when -ENODEV is returned.
    
    Fixes: a049a30 ("net: usb: Correct PHY handling of smsc95xx")
    Signed-off-by: Fabio Estevam <festevam@denx.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Fabio Estevam authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    f342974 View commit details
    Browse the repository at this point in the history
  28. gpiolib: acpi: Convert ACPI value of debounce to microseconds

    [ Upstream commit 660c619 ]
    
    It appears that GPIO ACPI library uses ACPI debounce values directly.
    However, the GPIO library APIs expect the debounce timeout to be in
    microseconds.
    
    Convert ACPI value of debounce to microseconds.
    
    While at it, document this detail where it is appropriate.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=215664
    Reported-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Fixes: 8dcb7a1 ("gpiolib: acpi: Take into account debounce settings")
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Tested-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    andy-shev authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    7e24b2e View commit details
    Browse the repository at this point in the history
  29. drm/i915/psr: Set "SF Partial Frame Enable" also on full update

    [ Upstream commit 804f468 ]
    
    Currently we are observing occasional screen flickering when
    PSR2 selective fetch is enabled. More specifically glitch seems
    to happen on full frame update when cursor moves to coords
    x = -1 or y = -1.
    
    According to Bspec SF Single full frame should not be set if
    SF Partial Frame Enable is not set. This happened to be true for
    ADLP as PSR2_MAN_TRK_CTL_ENABLE is always set and for ADL_P it's
    actually "SF Partial Frame Enable" (Bit 31).
    
    Setting "SF Partial Frame Enable" bit also on full update seems to
    fix screen flickering.
    
    Also make code more clear by setting PSR2_MAN_TRK_CTL_ENABLE
    only if not on ADL_P. Bit 31 has different meaning in ADL_P.
    
    Bspec: 49274
    
    v2: Fix Mihai Harpau email address
    v3: Modify commit message and remove unnecessary comment
    
    Tested-by: Lyude Paul <lyude@redhat.com>
    Fixes: 7f6002e ("drm/i915/display: Enable PSR2 selective fetch by default")
    Reported-by: Lyude Paul <lyude@redhat.com>
    Cc: Mihai Harpau <mharpau@gmail.com>
    Cc: José Roberto de Souza <jose.souza@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Bugzilla: https://gitlab.freedesktop.org/drm/intel/-/issues/5077
    Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
    Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
    Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220225070228.855138-1-jouni.hogander@intel.com
    (cherry picked from commit 8d5516d)
    Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    hogander authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    3240a30 View commit details
    Browse the repository at this point in the history
  30. drm/sun4i: mixer: Fix P010 and P210 format numbers

    [ Upstream commit 9470c29 ]
    
    It turns out that DE3 manual has inverted YUV and YVU format numbers for
    P010 and P210. Invert them.
    
    This was tested by playing video decoded to P010 and additionally
    confirmed by looking at BSP driver source.
    
    Fixes: 169ca4b ("drm/sun4i: Add separate DE3 VI layer formats")
    Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220228181436.1424550-1-jernej.skrabec@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    jernejsk authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    13c3b2d View commit details
    Browse the repository at this point in the history
  31. net: dsa: mt7530: fix incorrect test in mt753x_phylink_validate()

    [ Upstream commit e5417cb ]
    
    Discussing one of the tests in mt753x_phylink_validate() with Landen
    Chao confirms that the "||" should be "&&". Fix this.
    
    Fixes: c288575 ("net: dsa: mt7530: Add the support of MT7531 switch")
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Link: https://lore.kernel.org/r/E1nRCF0-00CiXD-7q@rmk-PC.armlinux.org.uk
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Russell King (Oracle) authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    811aace View commit details
    Browse the repository at this point in the history
  32. ARM: dts: aspeed: Fix AST2600 quad spi group

    [ Upstream commit 2f6edb6 ]
    
    Requesting quad mode for the FMC resulted in an error:
    
      &fmc {
             status = "okay";
     +       pinctrl-names = "default";
     +       pinctrl-0 = <&pinctrl_fwqspi_default>'
    
    [    0.742963] aspeed-g6-pinctrl 1e6e2000.syscon:pinctrl: invalid function FWQSPID in map table
    
    
    This is because the quad mode pins are a group of pins, not a function.
    
    After applying this patch we can request the pins and the QSPI data
    lines are muxed:
    
     # cat /sys/kernel/debug/pinctrl/1e6e2000.syscon\:pinctrl-aspeed-g6-pinctrl/pinmux-pins |grep 1e62000.spi
     pin 196 (AE12): device 1e62000.spi function FWSPID group FWQSPID
     pin 197 (AF12): device 1e62000.spi function FWSPID group FWQSPID
     pin 240 (Y1): device 1e62000.spi function FWSPID group FWQSPID
     pin 241 (Y2): device 1e62000.spi function FWSPID group FWQSPID
     pin 242 (Y3): device 1e62000.spi function FWSPID group FWQSPID
     pin 243 (Y4): device 1e62000.spi function FWSPID group FWQSPID
    
    Fixes: f510f04 ("ARM: dts: aspeed: Add AST2600 pinmux nodes")
    Signed-off-by: Joel Stanley <joel@jms.id.au>
    Reviewed-by: Andrew Jeffery <andrew@aj.id.au>
    Link: https://lore.kernel.org/r/20220304011010.974863-1-joel@jms.id.au
    Link: https://lore.kernel.org/r/20220304011010.974863-1-joel@jms.id.au'
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    shenki authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    7af5408 View commit details
    Browse the repository at this point in the history
  33. iavf: Fix handling of vlan strip virtual channel messages

    [ Upstream commit 2cf29e5 ]
    
    Modify netdev->features for vlan stripping based on virtual
    channel messages received from the PF. Change is needed
    to synchronize vlan strip status between PF sysfs and iavf ethtool.
    
    Fixes: 5951a2b ("iavf: Fix VLAN feature flags after VFR")
    Signed-off-by: Norbert Ciosek <norbertx.ciosek@intel.com>
    Signed-off-by: Michal Maloszewski <michal.maloszewski@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mmalosze authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    09998f5 View commit details
    Browse the repository at this point in the history
  34. i40e: stop disabling VFs due to PF error responses

    [ Upstream commit 5710ab7 ]
    
    The i40e_vc_send_msg_to_vf_ex (and its wrapper i40e_vc_send_msg_to_vf)
    function has logic to detect "failure" responses sent to the VF. If a VF
    is sent more than I40E_DEFAULT_NUM_INVALID_MSGS_ALLOWED, then the VF is
    marked as disabled. In either case, a dev_info message is printed
    stating that a VF opcode failed.
    
    This logic originates from the early implementation of VF support in
    commit 5c3c48a ("i40e: implement virtual device interface").
    
    That commit did not go far enough. The "logic" for this behavior seems
    to be that error responses somehow indicate a malicious VF. This is not
    really true. The PF might be sending an error for any number of reasons
    such as lacking resources, an unsupported operation, etc. This does not
    indicate a malicious VF. We already have a separate robust malicious VF
    detection which relies on hardware logic to detect and prevent a variety
    of behaviors.
    
    There is no justification for this behavior in the original
    implementation. In fact, a later commit 18b7af5 ("i40e: Lower some
    message levels") reduced the opcode failure message from a dev_err to a
    dev_info. In addition, recent commit 01cbf50 ("i40e: Fix to not
    show opcode msg on unsuccessful VF MAC change") changed the logic to
    allow quieting it for expected failures.
    
    That commit prevented this logic from kicking in for specific
    circumstances. This change did not go far enough. The behavior is not
    documented nor is it part of any requirement for our products. Other
    operating systems such as the FreeBSD implementation of our driver do
    not include this logic.
    
    It is clear this check does not make sense, and causes problems which
    led to ugly workarounds.
    
    Fix this by just removing the entire logic and the need for the
    i40e_vc_send_msg_to_vf_ex function.
    
    Fixes: 01cbf50 ("i40e: Fix to not show opcode msg on unsuccessful VF MAC change")
    Fixes: 5c3c48a ("i40e: implement virtual device interface")
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    jacob-keller authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    707dc94 View commit details
    Browse the repository at this point in the history
  35. ice: stop disabling VFs due to PF error responses

    [ Upstream commit 79498d5 ]
    
    The ice_vc_send_msg_to_vf function has logic to detect "failure"
    responses being sent to a VF. If a VF is sent more than
    ICE_DFLT_NUM_INVAL_MSGS_ALLOWED then the VF is marked as disabled.
    Almost identical logic also existed in the i40e driver.
    
    This logic was added to the ice driver in commit 1071a83 ("ice:
    Implement virtchnl commands for AVF support") which itself copied from
    the i40e implementation in commit 5c3c48a ("i40e: implement virtual
    device interface").
    
    Neither commit provides a proper explanation or justification of the
    check. In fact, later commits to i40e changed the logic to allow
    bypassing the check in some specific instances.
    
    The "logic" for this seems to be that error responses somehow indicate a
    malicious VF. This is not really true. The PF might be sending an error
    for any number of reasons such as lack of resources, etc.
    
    Additionally, this causes the PF to log an info message for every failed
    VF response which may confuse users, and can spam the kernel log.
    
    This behavior is not documented as part of any requirement for our
    products and other operating system drivers such as the FreeBSD
    implementation of our drivers do not include this type of check.
    
    In fact, the change from dev_err to dev_info in i40e commit 18b7af5
    ("i40e: Lower some message levels") explains that these messages
    typically don't actually indicate a real issue. It is quite likely that
    a user who hits this in practice will be very confused as the VF will be
    disabled without an obvious way to recover.
    
    We already have robust malicious driver detection logic using actual
    hardware detection mechanisms that detect and prevent invalid device
    usage. Remove the logic since its not a documented requirement and the
    behavior is not intuitive.
    
    Fixes: 1071a83 ("ice: Implement virtchnl commands for AVF support")
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    jacob-keller authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    e7ce48d View commit details
    Browse the repository at this point in the history
  36. ice: Fix error with handling of bonding MTU

    [ Upstream commit 97b0129 ]
    
    When a bonded interface is destroyed, .ndo_change_mtu can be called
    during the tear-down process while the RTNL lock is held.  This is a
    problem since the auxiliary driver linked to the LAN driver needs to be
    notified of the MTU change, and this requires grabbing a device_lock on
    the auxiliary_device's dev.  Currently this is being attempted in the
    same execution context as the call to .ndo_change_mtu which is causing a
    dead-lock.
    
    Move the notification of the changed MTU to a separate execution context
    (watchdog service task) and eliminate the "before" notification.
    
    Fixes: 348048e ("ice: Implement iidc operations")
    Signed-off-by: Dave Ertman <david.m.ertman@intel.com>
    Tested-by: Jonathan Toppins <jtoppins@redhat.com>
    Tested-by: Gurucharan G <gurucharanx.g@intel.com> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    dmertman authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    6a3122b View commit details
    Browse the repository at this point in the history
  37. ice: Don't use GFP_KERNEL in atomic context

    [ Upstream commit 3d97f1a ]
    
    ice_misc_intr() is an irq handler. It should not sleep.
    
    Use GFP_ATOMIC instead of GFP_KERNEL when allocating some memory.
    
    Fixes: 348048e ("ice: Implement iidc operations")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Tested-by: Leszek Kaliszczuk <leszek.kaliszczuk@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    tititiou36 authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    40e8acf View commit details
    Browse the repository at this point in the history
  38. ice: Fix curr_link_speed advertised speed

    [ Upstream commit ad35ffa ]
    
    Change curr_link_speed advertised speed, due to
    link_info.link_speed is not equal phy.curr_user_speed_req.
    Without this patch it is impossible to set advertised
    speed to same as link_speed.
    
    Testing Hints: Try to set advertised speed
    to 25G only with 25G default link (use ethtool -s 0x80000000)
    
    Fixes: 48cb27f ("ice: Implement handlers for ethtool PHY/link operations")
    Signed-off-by: Grzegorz Siwik <grzegorz.siwik@intel.com>
    Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
    Tested-by: Gurucharan <gurucharanx.g@intel.com> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    jjagielsk authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    ed08eab View commit details
    Browse the repository at this point in the history
  39. ethernet: Fix error handling in xemaclite_of_probe

    [ Upstream commit b19ab4b ]
    
    This node pointer is returned by of_parse_phandle() with refcount
    incremented in this function. Calling of_node_put() to avoid the
    refcount leak. As the remove function do.
    
    Fixes: 5cdaaa1 ("net: emaclite: adding MDIO and phy lib support")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/20220308024751.2320-1-linmq006@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Yuuoniy authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    1852854 View commit details
    Browse the repository at this point in the history
  40. tipc: fix incorrect order of state message data sanity check

    [ Upstream commit c79fcc2 ]
    
    When receiving a state message, function tipc_link_validate_msg()
    is called to validate its header portion. Then, its data portion
    is validated before it can be accessed correctly. However, current
    data sanity  check is done after the message header is accessed to
    update some link variables.
    
    This commit fixes this issue by moving the data sanity check to
    the beginning of state message handling and right after the header
    sanity check.
    
    Fixes: 9aa422a ("tipc: improve size validations for received domain records")
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Signed-off-by: Tung Nguyen <tung.q.nguyen@dektech.com.au>
    Link: https://lore.kernel.org/r/20220308021200.9245-1-tung.q.nguyen@dektech.com.au
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Tung Nguyen authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    688a5ec View commit details
    Browse the repository at this point in the history
  41. net: ethernet: ti: cpts: Handle error for clk_enable

    [ Upstream commit 6babfc6 ]
    
    As the potential failure of the clk_enable(),
    it should be better to check it and return error
    if fails.
    
    Fixes: 8a2c9a5 ("net: ethernet: ti: cpts: rework initialization/deinitialization")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    JiangJias authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    af6d584 View commit details
    Browse the repository at this point in the history
  42. net: ethernet: lpc_eth: Handle error for clk_enable

    [ Upstream commit 2169b79 ]
    
    As the potential failure of the clk_enable(),
    it should be better to check it and return error
    if fails.
    
    Fixes: b737011 ("lpc32xx: Added ethernet driver")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    JiangJias authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    5d07fca View commit details
    Browse the repository at this point in the history
  43. net: marvell: prestera: Add missing of_node_put() in prestera_switch_…

    …set_base_mac_addr
    
    [ Upstream commit c9ffa3e ]
    
    This node pointer is returned by of_find_compatible_node() with
    refcount incremented. Calling of_node_put() to aovid the refcount leak.
    
    Fixes: 501ef30 ("net: marvell: prestera: Add driver for Prestera family ASIC devices")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Yuuoniy authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    4cc66bf View commit details
    Browse the repository at this point in the history
  44. ax25: Fix NULL pointer dereference in ax25_kill_by_device

    [ Upstream commit 71171ac ]
    
    When two ax25 devices attempted to establish connection, the requester use ax25_create(),
    ax25_bind() and ax25_connect() to initiate connection. The receiver use ax25_rcv() to
    accept connection and use ax25_create_cb() in ax25_rcv() to create ax25_cb, but the
    ax25_cb->sk is NULL. When the receiver is detaching, a NULL pointer dereference bug
    caused by sock_hold(sk) in ax25_kill_by_device() will happen. The corresponding
    fail log is shown below:
    
    ===============================================================
    BUG: KASAN: null-ptr-deref in ax25_device_event+0xfd/0x290
    Call Trace:
    ...
    ax25_device_event+0xfd/0x290
    raw_notifier_call_chain+0x5e/0x70
    dev_close_many+0x174/0x220
    unregister_netdevice_many+0x1f7/0xa60
    unregister_netdevice_queue+0x12f/0x170
    unregister_netdev+0x13/0x20
    mkiss_close+0xcd/0x140
    tty_ldisc_release+0xc0/0x220
    tty_release_struct+0x17/0xa0
    tty_release+0x62d/0x670
    ...
    
    This patch add condition check in ax25_kill_by_device(). If s->sk is
    NULL, it will goto if branch to kill device.
    
    Fixes: 4e0f718 ("ax25: improve the incomplete fix to avoid UAF and NPD bugs")
    Reported-by: Thomas Osterried <thomas@osterried.de>
    Signed-off-by: Duoming Zhou <duoming@zju.edu.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    stonezdm authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    1d83a95 View commit details
    Browse the repository at this point in the history
  45. net/mlx5: Fix size field in bufferx_reg struct

    [ Upstream commit ac77998 ]
    
    According to HW spec the field "size" should be 16 bits
    in bufferx register.
    
    Fixes: e281682 ("net/mlx5_core: HW data structs/types definitions cleanup")
    Signed-off-by: Mohammad Kabat <mohammadkab@nvidia.com>
    Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mohammadkab authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    7bb1dc8 View commit details
    Browse the repository at this point in the history
  46. net/mlx5: Fix a race on command flush flow

    [ Upstream commit 063bd35 ]
    
    Fix a refcount use after free warning due to a race on command entry.
    Such race occurs when one of the commands releases its last refcount and
    frees its index and entry while another process running command flush
    flow takes refcount to this command entry. The process which handles
    commands flush may see this command as needed to be flushed if the other
    process released its refcount but didn't release the index yet. Fix it
    by adding the needed spin lock.
    
    It fixes the following warning trace:
    
    refcount_t: addition on 0; use-after-free.
    WARNING: CPU: 11 PID: 540311 at lib/refcount.c:25 refcount_warn_saturate+0x80/0xe0
    ...
    RIP: 0010:refcount_warn_saturate+0x80/0xe0
    ...
    Call Trace:
     <TASK>
     mlx5_cmd_trigger_completions+0x293/0x340 [mlx5_core]
     mlx5_cmd_flush+0x3a/0xf0 [mlx5_core]
     enter_error_state+0x44/0x80 [mlx5_core]
     mlx5_fw_fatal_reporter_err_work+0x37/0xe0 [mlx5_core]
     process_one_work+0x1be/0x390
     worker_thread+0x4d/0x3d0
     ? rescuer_thread+0x350/0x350
     kthread+0x141/0x160
     ? set_kthread_struct+0x40/0x40
     ret_from_fork+0x1f/0x30
     </TASK>
    
    Fixes: 50b2412 ("net/mlx5: Avoid possible free of command entry while timeout comp handler")
    Signed-off-by: Moshe Shemesh <moshe@nvidia.com>
    Reviewed-by: Eran Ben Elisha <eranbe@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mosheshemesh2 authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    0401bfb View commit details
    Browse the repository at this point in the history
  47. net/mlx5e: Lag, Only handle events from highest priority multipath entry

    [ Upstream commit ad11c4f ]
    
    There could be multiple multipath entries but changing the port affinity
    for each one doesn't make much sense and there should be a default one.
    So only track the entry with lowest priority value.
    The commit doesn't affect existing users with a single entry.
    
    Fixes: 544fe7c ("net/mlx5e: Activate HW multipath and handle port affinity based on FIB events")
    Signed-off-by: Roi Dayan <roid@nvidia.com>
    Reviewed-by: Maor Dickman <maord@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    roidayan authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    171caa1 View commit details
    Browse the repository at this point in the history
  48. net/mlx5e: SHAMPO, reduce TIR indication

    [ Upstream commit 99a2b9b ]
    
    SHAMPO is an RQ / WQ feature, an indication was added to the TIR in the
    first place to enforce suitability between connected TIR and RQ, this
    enforcement does not exist in current the Firmware implementation and was
    redundant in the first place.
    
    Fixes: 83439f3 ("net/mlx5e: Add HW-GRO offload")
    Signed-off-by: Ben Ben-Ishay <benishay@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ben-ishay authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    06793f9 View commit details
    Browse the repository at this point in the history
  49. NFC: port100: fix use-after-free in port100_send_complete

    [ Upstream commit f80cfe2 ]
    
    Syzbot reported UAF in port100_send_complete(). The root case is in
    missing usb_kill_urb() calls on error handling path of ->probe function.
    
    port100_send_complete() accesses devm allocated memory which will be
    freed on probe failure. We should kill this urbs before returning an
    error from probe function to prevent reported use-after-free
    
    Fail log:
    
    BUG: KASAN: use-after-free in port100_send_complete+0x16e/0x1a0 drivers/nfc/port100.c:935
    Read of size 1 at addr ffff88801bb59540 by task ksoftirqd/2/26
    ...
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
     print_address_description.constprop.0.cold+0x8d/0x303 mm/kasan/report.c:255
     __kasan_report mm/kasan/report.c:442 [inline]
     kasan_report.cold+0x83/0xdf mm/kasan/report.c:459
     port100_send_complete+0x16e/0x1a0 drivers/nfc/port100.c:935
     __usb_hcd_giveback_urb+0x2b0/0x5c0 drivers/usb/core/hcd.c:1670
    
    ...
    
    Allocated by task 1255:
     kasan_save_stack+0x1e/0x40 mm/kasan/common.c:38
     kasan_set_track mm/kasan/common.c:45 [inline]
     set_alloc_info mm/kasan/common.c:436 [inline]
     ____kasan_kmalloc mm/kasan/common.c:515 [inline]
     ____kasan_kmalloc mm/kasan/common.c:474 [inline]
     __kasan_kmalloc+0xa6/0xd0 mm/kasan/common.c:524
     alloc_dr drivers/base/devres.c:116 [inline]
     devm_kmalloc+0x96/0x1d0 drivers/base/devres.c:823
     devm_kzalloc include/linux/device.h:209 [inline]
     port100_probe+0x8a/0x1320 drivers/nfc/port100.c:1502
    
    Freed by task 1255:
     kasan_save_stack+0x1e/0x40 mm/kasan/common.c:38
     kasan_set_track+0x21/0x30 mm/kasan/common.c:45
     kasan_set_free_info+0x20/0x30 mm/kasan/generic.c:370
     ____kasan_slab_free mm/kasan/common.c:366 [inline]
     ____kasan_slab_free+0xff/0x140 mm/kasan/common.c:328
     kasan_slab_free include/linux/kasan.h:236 [inline]
     __cache_free mm/slab.c:3437 [inline]
     kfree+0xf8/0x2b0 mm/slab.c:3794
     release_nodes+0x112/0x1a0 drivers/base/devres.c:501
     devres_release_all+0x114/0x190 drivers/base/devres.c:530
     really_probe+0x626/0xcc0 drivers/base/dd.c:670
    
    Reported-and-tested-by: syzbot+16bcb127fb73baeecb14@syzkaller.appspotmail.com
    Fixes: 0347a6a ("NFC: port100: Commands mechanism implementation")
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Link: https://lore.kernel.org/r/20220308185007.6987-1-paskripkin@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    pskrgag authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    7194737 View commit details
    Browse the repository at this point in the history
  50. selftests: pmtu.sh: Kill tcpdump processes launched by subshell.

    [ Upstream commit 18dfc66 ]
    
    The cleanup() function takes care of killing processes launched by the
    test functions. It relies on variables like ${tcpdump_pids} to get the
    relevant PIDs. But tests are run in their own subshell, so updated
    *_pids values are invisible to other shells. Therefore cleanup() never
    sees any process to kill:
    
    $ ./tools/testing/selftests/net/pmtu.sh -t pmtu_ipv4_exception
    TEST: ipv4: PMTU exceptions                                         [ OK ]
    TEST: ipv4: PMTU exceptions - nexthop objects                       [ OK ]
    
    $ pgrep -af tcpdump
    6084 tcpdump -s 0 -i veth_A-R1 -w pmtu_ipv4_exception_veth_A-R1.pcap
    6085 tcpdump -s 0 -i veth_R1-A -w pmtu_ipv4_exception_veth_R1-A.pcap
    6086 tcpdump -s 0 -i veth_R1-B -w pmtu_ipv4_exception_veth_R1-B.pcap
    6087 tcpdump -s 0 -i veth_B-R1 -w pmtu_ipv4_exception_veth_B-R1.pcap
    6088 tcpdump -s 0 -i veth_A-R2 -w pmtu_ipv4_exception_veth_A-R2.pcap
    6089 tcpdump -s 0 -i veth_R2-A -w pmtu_ipv4_exception_veth_R2-A.pcap
    6090 tcpdump -s 0 -i veth_R2-B -w pmtu_ipv4_exception_veth_R2-B.pcap
    6091 tcpdump -s 0 -i veth_B-R2 -w pmtu_ipv4_exception_veth_B-R2.pcap
    6228 tcpdump -s 0 -i veth_A-R1 -w pmtu_ipv4_exception_veth_A-R1.pcap
    6229 tcpdump -s 0 -i veth_R1-A -w pmtu_ipv4_exception_veth_R1-A.pcap
    6230 tcpdump -s 0 -i veth_R1-B -w pmtu_ipv4_exception_veth_R1-B.pcap
    6231 tcpdump -s 0 -i veth_B-R1 -w pmtu_ipv4_exception_veth_B-R1.pcap
    6232 tcpdump -s 0 -i veth_A-R2 -w pmtu_ipv4_exception_veth_A-R2.pcap
    6233 tcpdump -s 0 -i veth_R2-A -w pmtu_ipv4_exception_veth_R2-A.pcap
    6234 tcpdump -s 0 -i veth_R2-B -w pmtu_ipv4_exception_veth_R2-B.pcap
    6235 tcpdump -s 0 -i veth_B-R2 -w pmtu_ipv4_exception_veth_B-R2.pcap
    
    Fix this by running cleanup() in the context of the test subshell.
    Now that each test cleans the environment after completion, there's no
    need for calling cleanup() again when the next test starts. So let's
    drop it from the setup() function. This is okay because cleanup() is
    also called when pmtu.sh starts, so even the first test starts in a
    clean environment.
    
    Also, use tcpdump's immediate mode. Otherwise it might not have time to
    process buffered packets, resulting in missing packets or even empty
    pcap files for short tests.
    
    Note: PAUSE_ON_FAIL is still evaluated before cleanup(), so one can
    still inspect the test environment upon failure when using -p.
    
    Fixes: a92a0a7 ("selftests: pmtu: Simplify cleanup and namespace names")
    Signed-off-by: Guillaume Nault <gnault@redhat.com>
    Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Guillaume Nault authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    8b3d2fd View commit details
    Browse the repository at this point in the history
  51. selftests: pmtu.sh: Kill nettest processes launched in subshell.

    [ Upstream commit 94a4a4f ]
    
    When using "run_cmd <command> &", then "$!" refers to the PID of the
    subshell used to run <command>, not the command itself. Therefore
    nettest_pids actually doesn't contain the list of the nettest commands
    running in the background. So cleanup() can't kill them and the nettest
    processes run until completion (fortunately they have a 5s timeout).
    
    Fix this by defining a new command for running processes in the
    background, for which "$!" really refers to the PID of the command run.
    
    Also, double quote variables on the modified lines, to avoid shellcheck
    warnings.
    
    Fixes: ece1278 ("selftests: net: add ESP-in-UDP PMTU test")
    Signed-off-by: Guillaume Nault <gnault@redhat.com>
    Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Guillaume Nault authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    dfd04b2 View commit details
    Browse the repository at this point in the history
  52. gpio: ts4900: Do not set DAT and OE together

    [ Upstream commit 03fe003 ]
    
    This works around an issue with the hardware where both OE and
    DAT are exposed in the same register. If both are updated
    simultaneously, the harware makes no guarantees that OE or DAT
    will actually change in any given order and may result in a
    glitch of a few ns on a GPIO pin when changing direction and value
    in a single write.
    
    Setting direction to input now only affects OE bit. Setting
    direction to output updates DAT first, then OE.
    
    Fixes: 9c66863 ("gpio: add Technologic I2C-FPGA gpio support")
    Signed-off-by: Mark Featherston <mark@embeddedTS.com>
    Signed-off-by: Kris Bahnsen <kris@embeddedTS.com>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    markfeathers authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    e032e16 View commit details
    Browse the repository at this point in the history
  53. mm: gup: make fault_in_safe_writeable() use fixup_user_fault()

    [ Upstream commit fe673d3 ]
    
    Instead of using GUP, make fault_in_safe_writeable() actually force a
    'handle_mm_fault()' using the same fixup_user_fault() machinery that
    futexes already use.
    
    Using the GUP machinery meant that fault_in_safe_writeable() did not do
    everything that a real fault would do, ranging from not auto-expanding
    the stack segment, to not updating accessed or dirty flags in the page
    tables (GUP sets those flags on the pages themselves).
    
    The latter causes problems on architectures (like s390) that do accessed
    bit handling in software, which meant that fault_in_safe_writeable()
    didn't actually do all the fault handling it needed to, and trying to
    access the user address afterwards would still cause faults.
    
    Reported-and-tested-by: Andreas Gruenbacher <agruenba@redhat.com>
    Fixes: cdd591f ("iov_iter: Introduce fault_in_iov_iter_writeable")
    Link: https://lore.kernel.org/all/CAHc6FU5nP+nziNGG0JAF1FUx-GV7kKFvM7aZuU_XD2_1v4vnvg@mail.gmail.com/
    Acked-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    torvalds authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    126df63 View commit details
    Browse the repository at this point in the history
  54. gianfar: ethtool: Fix refcount leak in gfar_get_ts_info

    [ Upstream commit 2ac5b58 ]
    
    The of_find_compatible_node() function returns a node pointer with
    refcount incremented, We should use of_node_put() on it when done
    Add the missing of_node_put() to release the refcount.
    
    Fixes: 7349a74 ("net: ethernet: gianfar_ethtool: get phc index through drvdata")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Reviewed-by: Claudiu Manoil <claudiu.manoil@nxp.com>
    Link: https://lore.kernel.org/r/20220310015313.14938-1-linmq006@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Yuuoniy authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    0e1b9a2 View commit details
    Browse the repository at this point in the history
  55. net: phy: DP83822: clear MISR2 register to disable interrupts

    [ Upstream commit 37c9d66 ]
    
    MISR1 was cleared twice but the original author intention was probably
    to clear MISR1 & MISR2 to completely disable interrupts. Fix it to
    clear MISR2.
    
    Fixes: 87461f7 ("net: phy: DP83822 initial driver submission")
    Signed-off-by: Clément Léger <clement.leger@bootlin.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/20220309142228.761153-1-clement.leger@bootlin.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    clementleger authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    16a93eb View commit details
    Browse the repository at this point in the history
  56. sctp: fix kernel-infoleak for SCTP sockets

    [ Upstream commit 633593a ]
    
    syzbot reported a kernel infoleak [1] of 4 bytes.
    
    After analysis, it turned out r->idiag_expires is not initialized
    if inet_sctp_diag_fill() calls inet_diag_msg_common_fill()
    
    Make sure to clear idiag_timer/idiag_retrans/idiag_expires
    and let inet_diag_msg_sctpasoc_fill() fill them again if needed.
    
    [1]
    
    BUG: KMSAN: kernel-infoleak in instrument_copy_to_user include/linux/instrumented.h:121 [inline]
    BUG: KMSAN: kernel-infoleak in copyout lib/iov_iter.c:154 [inline]
    BUG: KMSAN: kernel-infoleak in _copy_to_iter+0x6ef/0x25a0 lib/iov_iter.c:668
     instrument_copy_to_user include/linux/instrumented.h:121 [inline]
     copyout lib/iov_iter.c:154 [inline]
     _copy_to_iter+0x6ef/0x25a0 lib/iov_iter.c:668
     copy_to_iter include/linux/uio.h:162 [inline]
     simple_copy_to_iter+0xf3/0x140 net/core/datagram.c:519
     __skb_datagram_iter+0x2d5/0x11b0 net/core/datagram.c:425
     skb_copy_datagram_iter+0xdc/0x270 net/core/datagram.c:533
     skb_copy_datagram_msg include/linux/skbuff.h:3696 [inline]
     netlink_recvmsg+0x669/0x1c80 net/netlink/af_netlink.c:1977
     sock_recvmsg_nosec net/socket.c:948 [inline]
     sock_recvmsg net/socket.c:966 [inline]
     __sys_recvfrom+0x795/0xa10 net/socket.c:2097
     __do_sys_recvfrom net/socket.c:2115 [inline]
     __se_sys_recvfrom net/socket.c:2111 [inline]
     __x64_sys_recvfrom+0x19d/0x210 net/socket.c:2111
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x54/0xd0 arch/x86/entry/common.c:82
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Uninit was created at:
     slab_post_alloc_hook mm/slab.h:737 [inline]
     slab_alloc_node mm/slub.c:3247 [inline]
     __kmalloc_node_track_caller+0xe0c/0x1510 mm/slub.c:4975
     kmalloc_reserve net/core/skbuff.c:354 [inline]
     __alloc_skb+0x545/0xf90 net/core/skbuff.c:426
     alloc_skb include/linux/skbuff.h:1158 [inline]
     netlink_dump+0x3e5/0x16c0 net/netlink/af_netlink.c:2248
     __netlink_dump_start+0xcf8/0xe90 net/netlink/af_netlink.c:2373
     netlink_dump_start include/linux/netlink.h:254 [inline]
     inet_diag_handler_cmd+0x2e7/0x400 net/ipv4/inet_diag.c:1341
     sock_diag_rcv_msg+0x24a/0x620
     netlink_rcv_skb+0x40c/0x7e0 net/netlink/af_netlink.c:2494
     sock_diag_rcv+0x63/0x80 net/core/sock_diag.c:277
     netlink_unicast_kernel net/netlink/af_netlink.c:1317 [inline]
     netlink_unicast+0x1093/0x1360 net/netlink/af_netlink.c:1343
     netlink_sendmsg+0x14d9/0x1720 net/netlink/af_netlink.c:1919
     sock_sendmsg_nosec net/socket.c:705 [inline]
     sock_sendmsg net/socket.c:725 [inline]
     sock_write_iter+0x594/0x690 net/socket.c:1061
     do_iter_readv_writev+0xa7f/0xc70
     do_iter_write+0x52c/0x1500 fs/read_write.c:851
     vfs_writev fs/read_write.c:924 [inline]
     do_writev+0x645/0xe00 fs/read_write.c:967
     __do_sys_writev fs/read_write.c:1040 [inline]
     __se_sys_writev fs/read_write.c:1037 [inline]
     __x64_sys_writev+0xe5/0x120 fs/read_write.c:1037
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x54/0xd0 arch/x86/entry/common.c:82
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Bytes 68-71 of 2508 are uninitialized
    Memory access of size 2508 starts at ffff888114f9b000
    Data copied to user address 00007f7fe09ff2e0
    
    CPU: 1 PID: 3478 Comm: syz-executor306 Not tainted 5.17.0-rc4-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    Fixes: 8f840e4 ("sctp: add the sctp_diag.c file")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Vlad Yasevich <vyasevich@gmail.com>
    Cc: Neil Horman <nhorman@tuxdriver.com>
    Cc: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Reviewed-by: Xin Long <lucien.xin@gmail.com>
    Link: https://lore.kernel.org/r/20220310001145.297371-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Eric Dumazet authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    d828b0f View commit details
    Browse the repository at this point in the history
  57. net: arc_emac: Fix use after free in arc_mdio_probe()

    [ Upstream commit bc0e610 ]
    
    If bus->state is equal to MDIOBUS_ALLOCATED, mdiobus_free(bus) will free
    the "bus". But bus->name is still used in the next line, which will lead
    to a use after free.
    
    We can fix it by putting the name in a local variable and make the
    bus->name point to the rodata section "name",then use the name in the
    error message without referring to bus to avoid the uaf.
    
    Fixes: 95b5fc0 ("net: arc_emac: Make use of the helper function dev_err_probe()")
    Signed-off-by: Jianglei Nie <niejianglei2021@163.com>
    Link: https://lore.kernel.org/r/20220309121824.36529-1-niejianglei2021@163.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Jianglei Nie authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    84c8318 View commit details
    Browse the repository at this point in the history
  58. net: bcmgenet: Don't claim WOL when its not available

    [ Upstream commit 00b022f ]
    
    Some of the bcmgenet platforms don't correctly support WOL, yet
    ethtool returns:
    
    "Supports Wake-on: gsf"
    
    which is false.
    
    Ideally if there isn't a wol_irq, or there is something else that
    keeps the device from being able to wakeup it should display:
    
    "Supports Wake-on: d"
    
    This patch checks whether the device can wakup, before using the
    hard-coded supported flags. This corrects the ethtool reporting, as
    well as the WOL configuration because ethtool verifies that the mode
    is supported before attempting it.
    
    Fixes: c51de7f ("net: bcmgenet: add Wake-on-LAN support code")
    Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
    Tested-by: Peter Robinson <pbrobinson@gmail.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/20220310045535.224450-1-jeremy.linton@arm.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    jlintonarm authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    4b77bae View commit details
    Browse the repository at this point in the history
  59. net: phy: meson-gxl: improve link-up behavior

    [ Upstream commit 2c87c6f ]
    
    Sometimes the link comes up but no data flows. This patch fixes
    this behavior. It's not clear what's the root cause of the issue.
    
    According to the tests one other link-up issue remains.
    In very rare cases the link isn't even reported as up.
    
    Fixes: 84c8f77 ("net: phy: meson-gxl: remove the use of .ack_callback()")
    Tested-by: Erico Nunes <nunes.erico@gmail.com>
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Link: https://lore.kernel.org/r/e3473452-a1f9-efcf-5fdd-02b6f44c3fcd@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    hkallweit authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    7e51b3e View commit details
    Browse the repository at this point in the history
  60. selftests/bpf: Add test for bpf_timer overwriting crash

    [ Upstream commit a7e7501 ]
    
    Add a test that validates that timer value is not overwritten when doing
    a copy_map_value call in the kernel. Without the prior fix, this test
    triggers a crash.
    
    Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/20220209070324.1093182-3-memxor@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    kkdwivedi authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    f0f2f2a View commit details
    Browse the repository at this point in the history
  61. swiotlb: fix info leak with DMA_FROM_DEVICE

    [ Upstream commit ddbd89d ]
    
    The problem I'm addressing was discovered by the LTP test covering
    cve-2018-1000204.
    
    A short description of what happens follows:
    1) The test case issues a command code 00 (TEST UNIT READY) via the SG_IO
       interface with: dxfer_len == 524288, dxdfer_dir == SG_DXFER_FROM_DEV
       and a corresponding dxferp. The peculiar thing about this is that TUR
       is not reading from the device.
    2) In sg_start_req() the invocation of blk_rq_map_user() effectively
       bounces the user-space buffer. As if the device was to transfer into
       it. Since commit a45b599 ("scsi: sg: allocate with __GFP_ZERO in
       sg_build_indirect()") we make sure this first bounce buffer is
       allocated with GFP_ZERO.
    3) For the rest of the story we keep ignoring that we have a TUR, so the
       device won't touch the buffer we prepare as if the we had a
       DMA_FROM_DEVICE type of situation. My setup uses a virtio-scsi device
       and the  buffer allocated by SG is mapped by the function
       virtqueue_add_split() which uses DMA_FROM_DEVICE for the "in" sgs (here
       scatter-gather and not scsi generics). This mapping involves bouncing
       via the swiotlb (we need swiotlb to do virtio in protected guest like
       s390 Secure Execution, or AMD SEV).
    4) When the SCSI TUR is done, we first copy back the content of the second
       (that is swiotlb) bounce buffer (which most likely contains some
       previous IO data), to the first bounce buffer, which contains all
       zeros.  Then we copy back the content of the first bounce buffer to
       the user-space buffer.
    5) The test case detects that the buffer, which it zero-initialized,
      ain't all zeros and fails.
    
    One can argue that this is an swiotlb problem, because without swiotlb
    we leak all zeros, and the swiotlb should be transparent in a sense that
    it does not affect the outcome (if all other participants are well
    behaved).
    
    Copying the content of the original buffer into the swiotlb buffer is
    the only way I can think of to make swiotlb transparent in such
    scenarios. So let's do just that if in doubt, but allow the driver
    to tell us that the whole mapped buffer is going to be overwritten,
    in which case we can preserve the old behavior and avoid the performance
    impact of the extra bounce.
    
    Signed-off-by: Halil Pasic <pasic@linux.ibm.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    halil-pasic authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    270475d View commit details
    Browse the repository at this point in the history
  62. usb: dwc3: pci: add support for the Intel Raptor Lake-S

    [ Upstream commit 038438a ]
    
    This patch adds the necessary PCI ID for Intel Raptor Lake-S
    devices.
    
    Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20220214141948.18637-1-heikki.krogerus@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Heikki Krogerus authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    e8dc267 View commit details
    Browse the repository at this point in the history
  63. pinctrl: tigerlake: Revert "Add Alder Lake-M ACPI ID"

    [ Upstream commit 6f66db2 ]
    
    It appears that last minute change moved ACPI ID of Alder Lake-M
    to the INTC1055, which is already in the driver.
    
    This ID on the other hand will be used elsewhere.
    
    This reverts commit 258435a.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    andy-shev authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    509d24f View commit details
    Browse the repository at this point in the history
  64. KVM: Fix lockdep false negative during host resume

    [ Upstream commit 4cb9a99 ]
    
    I saw the below splatting after the host suspended and resumed.
    
       WARNING: CPU: 0 PID: 2943 at kvm/arch/x86/kvm/../../../virt/kvm/kvm_main.c:5531 kvm_resume+0x2c/0x30 [kvm]
       CPU: 0 PID: 2943 Comm: step_after_susp Tainted: G        W IOE     5.17.0-rc3+ tobetter#4
       RIP: 0010:kvm_resume+0x2c/0x30 [kvm]
       Call Trace:
        <TASK>
        syscore_resume+0x90/0x340
        suspend_devices_and_enter+0xaee/0xe90
        pm_suspend.cold+0x36b/0x3c2
        state_store+0x82/0xf0
        kernfs_fop_write_iter+0x1b6/0x260
        new_sync_write+0x258/0x370
        vfs_write+0x33f/0x510
        ksys_write+0xc9/0x160
        do_syscall_64+0x3b/0xc0
        entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    lockdep_is_held() can return -1 when lockdep is disabled which triggers
    this warning. Let's use lockdep_assert_not_held() which can detect
    incorrect calls while holding a lock and it also avoids false negatives
    when lockdep is disabled.
    
    Signed-off-by: Wanpeng Li <wanpengli@tencent.com>
    Message-Id: <1644920142-81249-1-git-send-email-wanpengli@tencent.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Wanpeng Li authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    e0fe243 View commit details
    Browse the repository at this point in the history
  65. kvm: x86: Disable KVM_HC_CLOCK_PAIRING if tsc is in always catchup mode

    [ Upstream commit 3a55f72 ]
    
    If vcpu has tsc_always_catchup set each request updates pvclock data.
    KVM_HC_CLOCK_PAIRING consumers such as ptp_kvm_x86 rely on tsc read on
    host's side and do hypercall inside pvclock_read_retry loop leading to
    infinite loop in such situation.
    
    v3:
        Removed warn
        Changed return code to KVM_EFAULT
    v2:
        Added warn
    
    Signed-off-by: Anton Romanov <romanton@google.com>
    Message-Id: <20220216182653.506850-1-romanton@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    theli-ua authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    30e14ba View commit details
    Browse the repository at this point in the history
  66. spi: rockchip: Fix error in getting num-cs property

    [ Upstream commit 9382df0 ]
    
    Get num-cs u32 from dts of_node property rather than u16.
    
    Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
    Link: https://lore.kernel.org/r/20220216014028.8123-2-jon.lin@rock-chips.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Jon Lin authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    3909752 View commit details
    Browse the repository at this point in the history
  67. spi: rockchip: terminate dma transmission when slave abort

    [ Upstream commit 8080876 ]
    
    After slave abort, all DMA should be stopped, or it will affect the
    next transmission and maybe abort again.
    
    Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
    Link: https://lore.kernel.org/r/20220216014028.8123-3-jon.lin@rock-chips.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Jon Lin authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    55b06ea View commit details
    Browse the repository at this point in the history
  68. drm/vc4: hdmi: Unregister codec device on unbind

    [ Upstream commit e40945a ]
    
    On bind we will register the HDMI codec device but we don't unregister
    it on unbind, leading to a device leakage. Unregister our device at
    unbind.
    
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220127111452.222002-1-maxime@cerno.tech
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mripard authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    1ed68d7 View commit details
    Browse the repository at this point in the history
  69. of/fdt: move elfcorehdr reservation early for crash dump kernel

    [ Upstream commit 132507e ]
    
    elfcorehdr_addr is fixed address passed to Second kernel which may be conflicted
    with potential reserved memory in Second kernel,so fdt_reserve_elfcorehdr() ahead
    of fdt_init_reserved_mem() can relieve this situation.
    
    Signed-off-by: Nikhil Gupta <nikhil.gupta@nxp.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Link: https://lore.kernel.org/r/20220128042321.15228-1-nikhil.gupta@nxp.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Nikhil Gupta authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    0fc4186 View commit details
    Browse the repository at this point in the history
  70. x86/kvm: Don't use pv tlb/ipi/sched_yield if on 1 vCPU

    [ Upstream commit ec756e4 ]
    
    Inspired by commit 3553ae5 (x86/kvm: Don't use pvqspinlock code if
    only 1 vCPU), on a VM with only 1 vCPU, there is no need to enable
    pv tlb/ipi/sched_yield and we can save the memory for __pv_cpu_mask.
    
    Signed-off-by: Wanpeng Li <wanpengli@tencent.com>
    Message-Id: <1645171838-2855-1-git-send-email-wanpengli@tencent.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Wanpeng Li authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    4e68c4b View commit details
    Browse the repository at this point in the history
  71. drivers: hamradio: 6pack: fix UAF bug caused by mod_timer()

    [ Upstream commit efe4186 ]
    
    When a 6pack device is detaching, the sixpack_close() will act to cleanup
    necessary resources. Although del_timer_sync() in sixpack_close()
    won't return if there is an active timer, one could use mod_timer() in
    sp_xmit_on_air() to wake up timer again by calling userspace syscall such
    as ax25_sendmsg(), ax25_connect() and ax25_ioctl().
    
    This unexpected waked handler, sp_xmit_on_air(), realizes nothing about
    the undergoing cleanup and may still call pty_write() to use driver layer
    resources that have already been released.
    
    One of the possible race conditions is shown below:
    
          (USE)                      |      (FREE)
    ax25_sendmsg()                   |
     ax25_queue_xmit()               |
      ...                            |
      sp_xmit()                      |
       sp_encaps()                   | sixpack_close()
        sp_xmit_on_air()             |  del_timer_sync(&sp->tx_t)
         mod_timer(&sp->tx_t,...)    |  ...
                                     |  unregister_netdev()
                                     |  ...
         (wait a while)              | tty_release()
                                     |  tty_release_struct()
                                     |   release_tty()
        sp_xmit_on_air()             |    tty_kref_put(tty_struct) //FREE
         pty_write(tty_struct) //USE |    ...
    
    The corresponding fail log is shown below:
    ===============================================================
    BUG: KASAN: use-after-free in __run_timers.part.0+0x170/0x470
    Write of size 8 at addr ffff88800a652ab8 by task swapper/2/0
    ...
    Call Trace:
      ...
      queue_work_on+0x3f/0x50
      pty_write+0xcd/0xe0pty_write+0xcd/0xe0
      sp_xmit_on_air+0xb2/0x1f0
      call_timer_fn+0x28/0x150
      __run_timers.part.0+0x3c2/0x470
      run_timer_softirq+0x3b/0x80
      __do_softirq+0xf1/0x380
      ...
    
    This patch reorders the del_timer_sync() after the unregister_netdev()
    to avoid UAF bugs. Because the unregister_netdev() is well synchronized,
    it flushs out any pending queues, waits the refcount of net_device
    decreases to zero and removes net_device from kernel. There is not any
    running routines after executing unregister_netdev(). Therefore, we could
    not arouse timer from userspace again.
    
    Signed-off-by: Duoming Zhou <duoming@zju.edu.cn>
    Reviewed-by: Lin Ma <linma@zju.edu.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    stonezdm authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    4356343 View commit details
    Browse the repository at this point in the history
  72. net-sysfs: add check for netdevice being present to speed_show

    [ Upstream commit 4224cfd ]
    
    When bringing down the netdevice or system shutdown, a panic can be
    triggered while accessing the sysfs path because the device is already
    removed.
    
        [  755.549084] mlx5_core 0000:12:00.1: Shutdown was called
        [  756.404455] mlx5_core 0000:12:00.0: Shutdown was called
        ...
        [  757.937260] BUG: unable to handle kernel NULL pointer dereference at           (null)
        [  758.031397] IP: [<ffffffff8ee11acb>] dma_pool_alloc+0x1ab/0x280
    
        crash> bt
        ...
        PID: 12649  TASK: ffff8924108f2100  CPU: 1   COMMAND: "amsd"
        ...
         tobetter#9 [ffff89240e1a38b0] page_fault at ffffffff8f38c778
            [exception RIP: dma_pool_alloc+0x1ab]
            RIP: ffffffff8ee11acb  RSP: ffff89240e1a3968  RFLAGS: 00010046
            RAX: 0000000000000246  RBX: ffff89243d874100  RCX: 0000000000001000
            RDX: 0000000000000000  RSI: 0000000000000246  RDI: ffff89243d874090
            RBP: ffff89240e1a39c0   R8: 000000000001f080   R9: ffff8905ffc03c00
            R10: ffffffffc04680d4  R11: ffffffff8edde9fd  R12: 00000000000080d0
            R13: ffff89243d874090  R14: ffff89243d874080  R15: 0000000000000000
            ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
        tobetter#10 [ffff89240e1a39c8] mlx5_alloc_cmd_msg at ffffffffc04680f3 [mlx5_core]
        tobetter#11 [ffff89240e1a3a18] cmd_exec at ffffffffc046ad62 [mlx5_core]
        tobetter#12 [ffff89240e1a3ab8] mlx5_cmd_exec at ffffffffc046b4fb [mlx5_core]
        tobetter#13 [ffff89240e1a3ae8] mlx5_core_access_reg at ffffffffc0475434 [mlx5_core]
        tobetter#14 [ffff89240e1a3b40] mlx5e_get_fec_caps at ffffffffc04a7348 [mlx5_core]
        tobetter#15 [ffff89240e1a3bb0] get_fec_supported_advertised at ffffffffc04992bf [mlx5_core]
        tobetter#16 [ffff89240e1a3c08] mlx5e_get_link_ksettings at ffffffffc049ab36 [mlx5_core]
        tobetter#17 [ffff89240e1a3ce8] __ethtool_get_link_ksettings at ffffffff8f25db46
        tobetter#18 [ffff89240e1a3d48] speed_show at ffffffff8f277208
        tobetter#19 [ffff89240e1a3dd8] dev_attr_show at ffffffff8f0b70e3
        tobetter#20 [ffff89240e1a3df8] sysfs_kf_seq_show at ffffffff8eedbedf
        tobetter#21 [ffff89240e1a3e18] kernfs_seq_show at ffffffff8eeda596
        tobetter#22 [ffff89240e1a3e28] seq_read at ffffffff8ee76d10
        tobetter#23 [ffff89240e1a3e98] kernfs_fop_read at ffffffff8eedaef5
        tobetter#24 [ffff89240e1a3ed8] vfs_read at ffffffff8ee4e3ff
        tobetter#25 [ffff89240e1a3f08] sys_read at ffffffff8ee4f27f
        tobetter#26 [ffff89240e1a3f50] system_call_fastpath at ffffffff8f395f92
    
        crash> net_device.state ffff89443b0c0000
          state = 0x5  (__LINK_STATE_START| __LINK_STATE_NOCARRIER)
    
    To prevent this scenario, we also make sure that the netdevice is present.
    
    Signed-off-by: suresh kumar <suresh2514@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    suresh2514 authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    3a79f38 View commit details
    Browse the repository at this point in the history
  73. hwmon: (pmbus) Clear pmbus fault/warning bits after read

    [ Upstream commit 35f165f ]
    
    Almost all fault/warning bits in pmbus status registers remain set even
    after fault/warning condition are removed. As per pmbus specification
    these faults must be cleared by user.
    Modify hwmon behavior to clear fault/warning bit after fetching data if
    fault/warning bit was set. This allows to get fresh data in next read.
    
    Signed-off-by: Vikash Chandola <vikash.chandola@linux.intel.com>
    Link: https://lore.kernel.org/r/20220222131253.2426834-1-vikash.chandola@linux.intel.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    vikash-chandola authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    c48932f View commit details
    Browse the repository at this point in the history
  74. nvme-tcp: send H2CData PDUs based on MAXH2CDATA

    [ Upstream commit c2700d2 ]
    
    As per NVMe/TCP specification (revision 1.0a, section 3.6.2.3)
    Maximum Host to Controller Data length (MAXH2CDATA): Specifies the
    maximum number of PDU-Data bytes per H2CData PDU in bytes. This value
    is a multiple of dwords and should be no less than 4,096.
    
    Current code sets H2CData PDU data_length to r2t_length,
    it does not check MAXH2CDATA value. Fix this by setting H2CData PDU
    data_length to min(req->h2cdata_left, queue->maxh2cdata).
    
    Also validate MAXH2CDATA value returned by target in ICResp PDU,
    if it is not a multiple of dword or if it is less than 4096 return
    -EINVAL from nvme_tcp_init_connection().
    
    Signed-off-by: Varun Prakash <varun@chelsio.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Varun Prakash authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    9c581b0 View commit details
    Browse the repository at this point in the history
  75. PCI: Mark all AMD Navi10 and Navi14 GPU ATS as broken

    [ Upstream commit 3f1271b ]
    
    There are enough VBIOS escapes without the proper workaround that some
    users still hit this.  Microsoft never productized ATS on Windows so OEM
    platforms that were Windows-only didn't always validate ATS.
    
    The advantages of ATS are not worth it compared to the potential
    instabilities on harvested boards.  Disable ATS on all Navi10 and Navi14
    boards.
    
    Symptoms include:
    
      amdgpu 0000:07:00.0: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0007 address=0xffffc02000 flags=0x0000]
      AMD-Vi: Event logged [IO_PAGE_FAULT device=07:00.0 domain=0x0007 address=0xffffc02000 flags=0x0000]
      [drm:amdgpu_job_timedout [amdgpu]] *ERROR* ring sdma0 timeout, signaled seq=6047, emitted seq=6049
      amdgpu 0000:07:00.0: amdgpu: GPU reset begin!
      amdgpu 0000:07:00.0: amdgpu: GPU reset succeeded, trying to resume
      amdgpu 0000:07:00.0: [drm:amdgpu_ring_test_helper [amdgpu]] *ERROR* ring sdma0 test failed (-110)
      [drm:amdgpu_device_ip_resume_phase2 [amdgpu]] *ERROR* resume of IP block <sdma_v4_0> failed -110
      amdgpu 0000:07:00.0: amdgpu: GPU reset(1) failed
    
    Related commits:
    
      e8946a5 ("PCI: Mark AMD Navi14 GPU ATS as broken")
      a2da5d8 ("PCI: Mark AMD Raven iGPU ATS as broken in some platforms")
      45beb31 ("PCI: Mark AMD Navi10 GPU rev 0x00 ATS as broken")
      5e89cd3 ("PCI: Mark AMD Navi14 GPU rev 0xc5 ATS as broken")
      d28ca86 ("PCI: Mark AMD Stoney Radeon R7 GPU ATS as broken")
      9b44b0b ("PCI: Mark AMD Stoney GPU ATS as broken")
    
    [bhelgaas: add symptoms and related commits]
    Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1760
    Link: https://lore.kernel.org/r/20220222160801.841643-1-alexander.deucher@amd.com
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Christian König <christian.koenig@amd.com>
    Acked-by: Guchun Chen <guchun.chen@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    alexdeucher authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    da881c5 View commit details
    Browse the repository at this point in the history
  76. gpio: Return EPROBE_DEFER if gc->to_irq is NULL

    [ Upstream commit ae42f92 ]
    
    We are racing the registering of .to_irq when probing the
    i2c driver. This results in random failure of touchscreen
    devices.
    
    Following explains the race condition better.
    
    [gpio driver] gpio driver registers gpio chip
    [gpio consumer] gpio is acquired
    [gpio consumer] gpiod_to_irq() fails with -ENXIO
    [gpio driver] gpio driver registers irqchip
    gpiod_to_irq works at this point, but -ENXIO is fatal
    
    We could see the following errors in dmesg logs when gc->to_irq is NULL
    
    [2.101857] i2c_hid i2c-FTS3528:00: HID over i2c has not been provided an Int IRQ
    [2.101953] i2c_hid: probe of i2c-FTS3528:00 failed with error -22
    
    To avoid this situation, defer probing until to_irq is registered.
    Returning -EPROBE_DEFER would be the first step towards avoiding
    the failure of devices due to the race in registration of .to_irq.
    Final solution to this issue would be to avoid using gc irq members
    until they are fully initialized.
    
    This issue has been reported many times in past and people have been
    using workarounds like changing the pinctrl_amd to built-in instead
    of loading it as a module or by adding a softdep for pinctrl_amd into
    the config file.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=209413
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Shreeya Patel <shreeya.patel@collabora.com>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Shreeya Patel authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    5b9d2a0 View commit details
    Browse the repository at this point in the history
  77. drm/amdgpu: bypass tiling flag check in virtual display case (v2)

    [ Upstream commit e2b9933 ]
    
    vkms leverages common amdgpu framebuffer creation, and
    also as it does not support FB modifier, there is no need
    to check tiling flags when initing framebuffer when virtual
    display is enabled.
    
    This can fix below calltrace:
    
    amdgpu 0000:00:08.0: GFX9+ requires FB check based on format modifier
    WARNING: CPU: 0 PID: 1023 at drivers/gpu/drm/amd/amdgpu/amdgpu_display.c:1150 amdgpu_display_framebuffer_init+0x8e7/0xb40 [amdgpu]
    
    v2: check adev->enable_virtual_display instead as vkms can be
    	enabled in bare metal as well.
    
    Signed-off-by: Leslie Shi <Yuliang.Shi@amd.com>
    Signed-off-by: Guchun Chen <guchun.chen@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Guchun Chen authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    cb29021 View commit details
    Browse the repository at this point in the history
  78. Revert "xen-netback: remove 'hotplug-status' once it has served its p…

    …urpose"
    
    [ Upstream commit 0f4558a ]
    
    This reverts commit 1f25657.
    
    The 'hotplug-status' node should not be removed as long as the vif
    device remains configured. Otherwise the xen-netback would wait for
    re-running the network script even if it was already called (in case of
    the frontent re-connecting). But also, it _should_ be removed when the
    vif device is destroyed (for example when unbinding the driver) -
    otherwise hotplug script would not configure the device whenever it
    re-appear.
    
    Moving removal of the 'hotplug-status' node was a workaround for nothing
    calling network script after xen-netback module is reloaded. But when
    vif interface is re-created (on xen-netback unbind/bind for example),
    the script should be called, regardless of who does that - currently
    this case is not handled by the toolstack, and requires manual
    script call. Keeping hotplug-status=connected to skip the call is wrong
    and leads to not configured interface.
    
    More discussion at
    https://lore.kernel.org/xen-devel/afedd7cb-a291-e773-8b0d-4db9b291fa98@ipxe.org/T/#u
    
    Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
    Link: https://lore.kernel.org/r/20220222001817.2264967-1-marmarek@invisiblethingslab.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    marmarek authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    5f46934 View commit details
    Browse the repository at this point in the history
  79. Revert "xen-netback: Check for hotplug-status existence before watching"

    [ Upstream commit e8240ad ]
    
    This reverts commit 2afeec0.
    
    The reasoning in the commit was wrong - the code expected to setup the
    watch even if 'hotplug-status' didn't exist. In fact, it relied on the
    watch being fired the first time - to check if maybe 'hotplug-status' is
    already set to 'connected'. Not registering a watch for non-existing
    path (which is the case if hotplug script hasn't been executed yet),
    made the backend not waiting for the hotplug script to execute. This in
    turns, made the netfront think the interface is fully operational, while
    in fact it was not (the vif interface on xen-netback side might not be
    configured yet).
    
    This was a workaround for 'hotplug-status' erroneously being removed.
    But since that is reverted now, the workaround is not necessary either.
    
    More discussion at
    https://lore.kernel.org/xen-devel/afedd7cb-a291-e773-8b0d-4db9b291fa98@ipxe.org/T/#u
    
    Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
    Reviewed-by: Michael Brown <mbrown@fensystems.co.uk>
    Link: https://lore.kernel.org/r/20220222001817.2264967-2-marmarek@invisiblethingslab.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    marmarek authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    728d6b5 View commit details
    Browse the repository at this point in the history
  80. ipv6: prevent a possible race condition with lifetimes

    [ Upstream commit 6c0d883 ]
    
    valid_lft, prefered_lft and tstamp are always accessed under the lock
    "lock" in other places. Reading these without taking the lock may result
    in inconsistencies regarding the calculation of the valid and preferred
    variables since decisions are taken on these fields for those variables.
    
    Signed-off-by: Niels Dossche <dossche.niels@gmail.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: Niels Dossche <niels.dossche@ugent.be>
    Link: https://lore.kernel.org/r/20220223131954.6570-1-niels.dossche@ugent.be
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    nielsdos authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    ee89f39 View commit details
    Browse the repository at this point in the history
  81. tracing: Ensure trace buffer is at least 4096 bytes large

    [ Upstream commit 7acf3a1 ]
    
    Booting the kernel with 'trace_buf_size=1' give a warning at
    boot during the ftrace selftests:
    
    [    0.892809] Running postponed tracer tests:
    [    0.892893] Testing tracer function:
    [    0.901899] Callback from call_rcu_tasks_trace() invoked.
    [    0.983829] Callback from call_rcu_tasks_rude() invoked.
    [    1.072003] .. bad ring buffer .. corrupted trace buffer ..
    [    1.091944] Callback from call_rcu_tasks() invoked.
    [    1.097695] PASSED
    [    1.097701] Testing dynamic ftrace: .. filter failed count=0 ..FAILED!
    [    1.353474] ------------[ cut here ]------------
    [    1.353478] WARNING: CPU: 0 PID: 1 at kernel/trace/trace.c:1951 run_tracer_selftest+0x13c/0x1b0
    
    Therefore enforce a minimum of 4096 bytes to make the selftest pass.
    
    Link: https://lkml.kernel.org/r/20220214134456.1751749-1-svens@linux.ibm.com
    
    Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    svens-s390 authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    2a44a82 View commit details
    Browse the repository at this point in the history
  82. tracing/osnoise: Make osnoise_main to sleep for microseconds

    [ Upstream commit dd99035 ]
    
    osnoise's runtime and period are in the microseconds scale, but it is
    currently sleeping in the millisecond's scale. This behavior roots in the
    usage of hwlat as the skeleton for osnoise.
    
    Make osnoise to sleep in the microseconds scale. Also, move the sleep to
    a specialized function.
    
    Link: https://lkml.kernel.org/r/302aa6c7bdf2d131719b22901905e9da122a11b2.1645197336.git.bristot@kernel.org
    
    Cc: Ingo Molnar <mingo@redhat.com>
    Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Daniel Bristot de Oliveira authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    3237183 View commit details
    Browse the repository at this point in the history
  83. tracing: Fix selftest config check for function graph start up test

    [ Upstream commit c5229a0 ]
    
    CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS is required to test
    direct tramp.
    
    Link: https://lkml.kernel.org/r/bdc7e594e13b0891c1d61bc8d56c94b1890eaed7.1640017960.git.christophe.leroy@csgroup.eu
    
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    chleroy authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    eefb9de View commit details
    Browse the repository at this point in the history
  84. selftest/vm: fix map_fixed_noreplace test failure

    [ Upstream commit f39c580 ]
    
    On the latest RHEL the test fails due to executable mapped at 256MB
    address
    
         # ./map_fixed_noreplace
        mmap() @ 0x10000000-0x10050000 p=0xffffffffffffffff result=File exists
        10000000-10010000 r-xp 00000000 fd:04 34905657                           /root/rpmbuild/BUILD/kernel-5.14.0-56.el9/linux-5.14.0-56.el9.ppc64le/tools/testing/selftests/vm/map_fixed_noreplace
        10010000-10020000 r--p 00000000 fd:04 34905657                           /root/rpmbuild/BUILD/kernel-5.14.0-56.el9/linux-5.14.0-56.el9.ppc64le/tools/testing/selftests/vm/map_fixed_noreplace
        10020000-10030000 rw-p 00010000 fd:04 34905657                           /root/rpmbuild/BUILD/kernel-5.14.0-56.el9/linux-5.14.0-56.el9.ppc64le/tools/testing/selftests/vm/map_fixed_noreplace
        10029b90000-10029bc0000 rw-p 00000000 00:00 0                            [heap]
        7fffbb510000-7fffbb750000 r-xp 00000000 fd:04 24534                      /usr/lib64/libc.so.6
        7fffbb750000-7fffbb760000 r--p 00230000 fd:04 24534                      /usr/lib64/libc.so.6
        7fffbb760000-7fffbb770000 rw-p 00240000 fd:04 24534                      /usr/lib64/libc.so.6
        7fffbb780000-7fffbb7a0000 r--p 00000000 00:00 0                          [vvar]
        7fffbb7a0000-7fffbb7b0000 r-xp 00000000 00:00 0                          [vdso]
        7fffbb7b0000-7fffbb800000 r-xp 00000000 fd:04 24514                      /usr/lib64/ld64.so.2
        7fffbb800000-7fffbb810000 r--p 00040000 fd:04 24514                      /usr/lib64/ld64.so.2
        7fffbb810000-7fffbb820000 rw-p 00050000 fd:04 24514                      /usr/lib64/ld64.so.2
        7fffd93f0000-7fffd9420000 rw-p 00000000 00:00 0                          [stack]
        Error: couldn't map the space we need for the test
    
    Fix this by finding a free address using mmap instead of hardcoding
    BASE_ADDRESS.
    
    Link: https://lkml.kernel.org/r/20220217083417.373823-1-aneesh.kumar@linux.ibm.com
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Jann Horn <jannh@google.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    kvaneesh authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    2246b5e View commit details
    Browse the repository at this point in the history
  85. selftests/memfd: clean up mapping in mfd_fail_write

    [ Upstream commit fda153c ]
    
    Running the memfd script ./run_hugetlbfs_test.sh will often end in error
    as follows:
    
        memfd-hugetlb: CREATE
        memfd-hugetlb: BASIC
        memfd-hugetlb: SEAL-WRITE
        memfd-hugetlb: SEAL-FUTURE-WRITE
        memfd-hugetlb: SEAL-SHRINK
        fallocate(ALLOC) failed: No space left on device
        ./run_hugetlbfs_test.sh: line 60: 166855 Aborted                 (core dumped) ./memfd_test hugetlbfs
        opening: ./mnt/memfd
        fuse: DONE
    
    If no hugetlb pages have been preallocated, run_hugetlbfs_test.sh will
    allocate 'just enough' pages to run the test.  In the SEAL-FUTURE-WRITE
    test the mfd_fail_write routine maps the file, but does not unmap.  As a
    result, two hugetlb pages remain reserved for the mapping.  When the
    fallocate call in the SEAL-SHRINK test attempts allocate all hugetlb
    pages, it is short by the two reserved pages.
    
    Fix by making sure to unmap in mfd_fail_write.
    
    Link: https://lkml.kernel.org/r/20220219004340.56478-1-mike.kravetz@oracle.com
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Joel Fernandes <joel@joelfernandes.org>
    Cc: Shuah Khan <shuah@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mjkravetz authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    7e4bd0c View commit details
    Browse the repository at this point in the history
  86. ARM: Spectre-BHB: provide empty stub for non-config

    commit 6845376 upstream.
    
    When CONFIG_GENERIC_CPU_VULNERABILITIES is not set, references
    to spectre_v2_update_state() cause a build error, so provide an
    empty stub for that function when the Kconfig option is not set.
    
    Fixes this build error:
    
      arm-linux-gnueabi-ld: arch/arm/mm/proc-v7-bugs.o: in function `cpu_v7_bugs_init':
      proc-v7-bugs.c:(.text+0x52): undefined reference to `spectre_v2_update_state'
      arm-linux-gnueabi-ld: proc-v7-bugs.c:(.text+0x82): undefined reference to `spectre_v2_update_state'
    
    Fixes: b9baf5c ("ARM: Spectre-BHB workaround")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Cc: Russell King <rmk+kernel@armlinux.org.uk>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: patches@armlinux.org.uk
    Acked-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    rddunlap authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    34b6fde View commit details
    Browse the repository at this point in the history
  87. fuse: fix fileattr op failure

    commit a679a61 upstream.
    
    The fileattr API conversion broke lsattr on ntfs3g.
    
    Previously the ioctl(... FS_IOC_GETFLAGS) returned an EINVAL error, but
    after the conversion the error returned by the fuse filesystem was not
    propagated back to the ioctl() system call, resulting in success being
    returned with bogus values.
    
    Fix by checking for outarg.result in fuse_priv_ioctl(), just as generic
    ioctl code does.
    
    Reported-by: Jean-Pierre André <jean-pierre.andre@wanadoo.fr>
    Fixes: 72227ea ("fuse: convert to fileattr")
    Cc: <stable@vger.kernel.org> # v5.13
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Miklos Szeredi authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    d71d62b View commit details
    Browse the repository at this point in the history
  88. fuse: fix pipe buffer lifetime for direct_io

    commit 0c4bcfd upstream.
    
    In FOPEN_DIRECT_IO mode, fuse_file_write_iter() calls
    fuse_direct_write_iter(), which normally calls fuse_direct_io(), which then
    imports the write buffer with fuse_get_user_pages(), which uses
    iov_iter_get_pages() to grab references to userspace pages instead of
    actually copying memory.
    
    On the filesystem device side, these pages can then either be read to
    userspace (via fuse_dev_read()), or splice()d over into a pipe using
    fuse_dev_splice_read() as pipe buffers with &nosteal_pipe_buf_ops.
    
    This is wrong because after fuse_dev_do_read() unlocks the FUSE request,
    the userspace filesystem can mark the request as completed, causing write()
    to return. At that point, the userspace filesystem should no longer have
    access to the pipe buffer.
    
    Fix by copying pages coming from the user address space to new pipe
    buffers.
    
    Reported-by: Jann Horn <jannh@google.com>
    Fixes: c302162 ("fuse: support splice() reading from fuse device")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Miklos Szeredi authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    58a9bdf View commit details
    Browse the repository at this point in the history
  89. staging: rtl8723bs: Fix access-point mode deadlock

    commit 8f43470 upstream.
    
    Commit 54659ca ("staging: rtl8723bs: remove possible deadlock when
    disconnect (v2)") split the locking of pxmitpriv->lock vs sleep_q/lock
    into 2 locks in attempt to fix a lockdep reported issue with the locking
    order of the sta_hash_lock vs pxmitpriv->lock.
    
    But in the end this turned out to not fully solve the sta_hash_lock issue
    so commit a7ac783 ("staging: rtl8723bs: remove a second possible
    deadlock") was added to fix this in another way.
    
    The original fix was kept as it was still seen as a good thing to have,
    but now it turns out that it creates a deadlock in access-point mode:
    
    [Feb20 23:47] ======================================================
    [  +0.074085] WARNING: possible circular locking dependency detected
    [  +0.074077] 5.16.0-1-amd64 tobetter#1 Tainted: G         C  E
    [  +0.064710] ------------------------------------------------------
    [  +0.074075] ksoftirqd/3/29 is trying to acquire lock:
    [  +0.060542] ffffb8b30062ab00 (&pxmitpriv->lock){+.-.}-{2:2}, at: rtw_xmit_classifier+0x8a/0x140 [r8723bs]
    [  +0.114921]
                  but task is already holding lock:
    [  +0.069908] ffffb8b3007ab704 (&psta->sleep_q.lock){+.-.}-{2:2}, at: wakeup_sta_to_xmit+0x3b/0x300 [r8723bs]
    [  +0.116976]
                  which lock already depends on the new lock.
    
    [  +0.098037]
                  the existing dependency chain (in reverse order) is:
    [  +0.089704]
                  -> tobetter#1 (&psta->sleep_q.lock){+.-.}-{2:2}:
    [  +0.077232]        _raw_spin_lock_bh+0x34/0x40
    [  +0.053261]        xmitframe_enqueue_for_sleeping_sta+0xc1/0x2f0 [r8723bs]
    [  +0.082572]        rtw_xmit+0x58b/0x940 [r8723bs]
    [  +0.056528]        _rtw_xmit_entry+0xba/0x350 [r8723bs]
    [  +0.062755]        dev_hard_start_xmit+0xf1/0x320
    [  +0.056381]        sch_direct_xmit+0x9e/0x360
    [  +0.052212]        __dev_queue_xmit+0xce4/0x1080
    [  +0.055334]        ip6_finish_output2+0x18f/0x6e0
    [  +0.056378]        ndisc_send_skb+0x2c8/0x870
    [  +0.052209]        ndisc_send_ns+0xd3/0x210
    [  +0.050130]        addrconf_dad_work+0x3df/0x5a0
    [  +0.055338]        process_one_work+0x274/0x5a0
    [  +0.054296]        worker_thread+0x52/0x3b0
    [  +0.050124]        kthread+0x16c/0x1a0
    [  +0.044925]        ret_from_fork+0x1f/0x30
    [  +0.049092]
                  -> #0 (&pxmitpriv->lock){+.-.}-{2:2}:
    [  +0.074101]        __lock_acquire+0x10f5/0x1d80
    [  +0.054298]        lock_acquire+0xd7/0x300
    [  +0.049088]        _raw_spin_lock_bh+0x34/0x40
    [  +0.053248]        rtw_xmit_classifier+0x8a/0x140 [r8723bs]
    [  +0.066949]        rtw_xmitframe_enqueue+0xa/0x20 [r8723bs]
    [  +0.066946]        rtl8723bs_hal_xmitframe_enqueue+0x14/0x50 [r8723bs]
    [  +0.078386]        wakeup_sta_to_xmit+0xa6/0x300 [r8723bs]
    [  +0.065903]        rtw_recv_entry+0xe36/0x1160 [r8723bs]
    [  +0.063809]        rtl8723bs_recv_tasklet+0x349/0x6c0 [r8723bs]
    [  +0.071093]        tasklet_action_common.constprop.0+0xe5/0x110
    [  +0.070966]        __do_softirq+0x16f/0x50a
    [  +0.050134]        __irq_exit_rcu+0xeb/0x140
    [  +0.051172]        irq_exit_rcu+0xa/0x20
    [  +0.047006]        common_interrupt+0xb8/0xd0
    [  +0.052214]        asm_common_interrupt+0x1e/0x40
    [  +0.056381]        finish_task_switch.isra.0+0x100/0x3a0
    [  +0.063670]        __schedule+0x3ad/0xd20
    [  +0.048047]        schedule+0x4e/0xc0
    [  +0.043880]        smpboot_thread_fn+0xc4/0x220
    [  +0.054298]        kthread+0x16c/0x1a0
    [  +0.044922]        ret_from_fork+0x1f/0x30
    [  +0.049088]
                  other info that might help us debug this:
    
    [  +0.095950]  Possible unsafe locking scenario:
    
    [  +0.070952]        CPU0                    CPU1
    [  +0.054282]        ----                    ----
    [  +0.054285]   lock(&psta->sleep_q.lock);
    [  +0.047004]                                lock(&pxmitpriv->lock);
    [  +0.074082]                                lock(&psta->sleep_q.lock);
    [  +0.077209]   lock(&pxmitpriv->lock);
    [  +0.043873]
                   *** DEADLOCK ***
    
    [  +0.070950] 1 lock held by ksoftirqd/3/29:
    [  +0.049082]  #0: ffffb8b3007ab704 (&psta->sleep_q.lock){+.-.}-{2:2}, at: wakeup_sta_to_xmit+0x3b/0x300 [r8723bs]
    
    Analysis shows that in hindsight the splitting of the lock was not
    a good idea, so revert this to fix the access-point mode deadlock.
    
    Note this is a straight-forward revert done with git revert, the commented
    out "/* spin_lock_bh(&psta_bmc->sleep_q.lock); */" lines were part of the
    code before the reverted changes.
    
    Fixes: 54659ca ("staging: rtl8723bs: remove possible deadlock when disconnect (v2)")
    Cc: stable <stable@vger.kernel.org>
    Cc: Fabio Aiuto <fabioaiuto83@gmail.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=215542
    Link: https://lore.kernel.org/r/20220302101637.26542-1-hdegoede@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jwrdegoede authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    eaa3d08 View commit details
    Browse the repository at this point in the history
  90. staging: gdm724x: fix use after free in gdm_lte_rx()

    commit fc7f750 upstream.
    
    The netif_rx_ni() function frees the skb so we can't dereference it to
    save the skb->len.
    
    Fixes: 61e1210 ("staging: gdm7240: adding LTE USB driver")
    Cc: stable <stable@vger.kernel.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/20220228074331.GA13685@kili
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Dan Carpenter authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    d39dc79 View commit details
    Browse the repository at this point in the history
  91. net: macb: Fix lost RX packet wakeup race in NAPI receive

    commit 0bf476f upstream.
    
    There is an oddity in the way the RSR register flags propagate to the
    ISR register (and the actual interrupt output) on this hardware: it
    appears that RSR register bits only result in ISR being asserted if the
    interrupt was actually enabled at the time, so enabling interrupts with
    RSR bits already set doesn't trigger an interrupt to be raised. There
    was already a partial fix for this race in the macb_poll function where
    it checked for RSR bits being set and re-triggered NAPI receive.
    However, there was a still a race window between checking RSR and
    actually enabling interrupts, where a lost wakeup could happen. It's
    necessary to check again after enabling interrupts to see if RSR was set
    just prior to the interrupt being enabled, and re-trigger receive in that
    case.
    
    This issue was noticed in a point-to-point UDP request-response protocol
    which periodically saw timeouts or abnormally high response times due to
    received packets not being processed in a timely fashion. In many
    applications, more packets arriving, including TCP retransmissions, would
    cause the original packet to be processed, thus masking the issue.
    
    Fixes: 02f7a34 ("net: macb: Re-enable RX interrupt only when RX is done")
    Cc: stable@vger.kernel.org
    Co-developed-by: Scott McNutt <scott.mcnutt@siriusxm.com>
    Signed-off-by: Scott McNutt <scott.mcnutt@siriusxm.com>
    Signed-off-by: Robert Hancock <robert.hancock@calian.com>
    Tested-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    robhancocksed authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    c049b0b View commit details
    Browse the repository at this point in the history
  92. riscv: alternative only works on !XIP_KERNEL

    commit c80ee64 upstream.
    
    The alternative mechanism needs runtime code patching, it can't work
    on XIP_KERNEL. And the errata workarounds are implemented via the
    alternative mechanism. So add !XIP_KERNEL dependency for alternative
    and erratas.
    
    Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
    Fixes: 44c9225 ("RISC-V: enable XIP")
    Cc: stable@vger.kernel.org
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    xhackerustc authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    f10316c View commit details
    Browse the repository at this point in the history
  93. mmc: meson: Fix usage of meson_mmc_post_req()

    commit f0d2f15 upstream.
    
    Currently meson_mmc_post_req() is called in meson_mmc_request() right
    after meson_mmc_start_cmd(). This could lead to DMA unmapping before the request
    is actually finished.
    
    To fix, don't call meson_mmc_post_req() until meson_mmc_request_done().
    
    Signed-off-by: Rong Chen <rong.chen@amlogic.com>
    Reviewed-by: Kevin Hilman <khilman@baylibre.com>
    Fixes: 79ed05e ("mmc: meson-gx: add support for descriptor chain mode")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20220216124239.4007667-1-rong.chen@amlogic.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Rong Chen authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    700b81b View commit details
    Browse the repository at this point in the history
  94. riscv: Fix auipc+jalr relocation range checks

    commit 0966d38 upstream.
    
    RISC-V can do PC-relative jumps with a 32bit range using the following
    two instructions:
    
    	auipc	t0, imm20	; t0 = PC + imm20 * 2^12
    	jalr	ra, t0, imm12	; ra = PC + 4, PC = t0 + imm12
    
    Crucially both the 20bit immediate imm20 and the 12bit immediate imm12
    are treated as two's-complement signed values. For this reason the
    immediates are usually calculated like this:
    
    	imm20 = (offset + 0x800) >> 12
    	imm12 = offset & 0xfff
    
    ..where offset is the signed offset from the auipc instruction. When
    the 11th bit of offset is 0 the addition of 0x800 doesn't change the top
    20 bits and imm12 considered positive. When the 11th bit is 1 the carry
    of the addition by 0x800 means imm20 is one higher, but since imm12 is
    then considered negative the two's complement representation means it
    all cancels out nicely.
    
    However, this addition by 0x800 (2^11) means an offset greater than or
    equal to 2^31 - 2^11 would overflow so imm20 is considered negative and
    result in a backwards jump. Similarly the lower range of offset is also
    moved down by 2^11 and hence the true 32bit range is
    
    	[-2^31 - 2^11, 2^31 - 2^11)
    
    Signed-off-by: Emil Renner Berthing <kernel@esmil.dk>
    Fixes: e2c0cdf ("RISC-V: User-facing API")
    Cc: stable@vger.kernel.org
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    esmil authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    4f46ec4 View commit details
    Browse the repository at this point in the history
  95. tracing/osnoise: Force quiescent states while tracing

    commit caf4c86 upstream.
    
    At the moment running osnoise on a nohz_full CPU or uncontested FIFO
    priority and a PREEMPT_RCU kernel might have the side effect of
    extending grace periods too much. This will entice RCU to force a
    context switch on the wayward CPU to end the grace period, all while
    introducing unwarranted noise into the tracer. This behaviour is
    unavoidable as overly extending grace periods might exhaust the system's
    memory.
    
    This same exact problem is what extended quiescent states (EQS) were
    created for, conversely, rcu_momentary_dyntick_idle() emulates them by
    performing a zero duration EQS. So let's make use of it.
    
    In the common case rcu_momentary_dyntick_idle() is fairly inexpensive:
    atomically incrementing a local per-CPU counter and doing a store. So it
    shouldn't affect osnoise's measurements (which has a 1us granularity),
    so we'll call it unanimously.
    
    The uncommon case involve calling rcu_momentary_dyntick_idle() after
    having the osnoise process:
    
     - Receive an expedited quiescent state IPI with preemption disabled or
       during an RCU critical section. (activates rdp->cpu_no_qs.b.exp
       code-path).
    
     - Being preempted within in an RCU critical section and having the
       subsequent outermost rcu_read_unlock() called with interrupts
       disabled. (t->rcu_read_unlock_special.b.blocked code-path).
    
    Neither of those are possible at the moment, and are unlikely to be in
    the future given the osnoise's loop design. On top of this, the noise
    generated by the situations described above is unavoidable, and if not
    exposed by rcu_momentary_dyntick_idle() will be eventually seen in
    subsequent rcu_read_unlock() calls or schedule operations.
    
    Link: https://lkml.kernel.org/r/20220307180740.577607-1-nsaenzju@redhat.com
    
    Cc: stable@vger.kernel.org
    Fixes: bce29ac ("trace: Add osnoise tracer")
    Signed-off-by: Nicolas Saenz Julienne <nsaenzju@redhat.com>
    Acked-by: Paul E. McKenney <paulmck@kernel.org>
    Acked-by: Daniel Bristot de Oliveira <bristot@kernel.org>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    vianpl authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    d76e755 View commit details
    Browse the repository at this point in the history
  96. tracing/osnoise: Do not unregister events twice

    commit f0cfe17 upstream.
    
    Nicolas reported that using:
    
     # trace-cmd record -e all -M 10 -p osnoise --poll
    
    Resulted in the following kernel warning:
    
     ------------[ cut here ]------------
     WARNING: CPU: 0 PID: 1217 at kernel/tracepoint.c:404 tracepoint_probe_unregister+0x280/0x370
     [...]
     CPU: 0 PID: 1217 Comm: trace-cmd Not tainted 5.17.0-rc6-next-20220307-nico+ tobetter#19
     RIP: 0010:tracepoint_probe_unregister+0x280/0x370
     [...]
     CR2: 00007ff919b29497 CR3: 0000000109da4005 CR4: 0000000000170ef0
     Call Trace:
      <TASK>
      osnoise_workload_stop+0x36/0x90
      tracing_set_tracer+0x108/0x260
      tracing_set_trace_write+0x94/0xd0
      ? __check_object_size.part.0+0x10a/0x150
      ? selinux_file_permission+0x104/0x150
      vfs_write+0xb5/0x290
      ksys_write+0x5f/0xe0
      do_syscall_64+0x3b/0x90
      entry_SYSCALL_64_after_hwframe+0x44/0xae
     RIP: 0033:0x7ff919a18127
     [...]
     ---[ end trace 0000000000000000 ]---
    
    The warning complains about an attempt to unregister an
    unregistered tracepoint.
    
    This happens on trace-cmd because it first stops tracing, and
    then switches the tracer to nop. Which is equivalent to:
    
      # cd /sys/kernel/tracing/
      # echo osnoise > current_tracer
      # echo 0 > tracing_on
      # echo nop > current_tracer
    
    The osnoise tracer stops the workload when no trace instance
    is actually collecting data. This can be caused both by
    disabling tracing or disabling the tracer itself.
    
    To avoid unregistering events twice, use the existing
    trace_osnoise_callback_enabled variable to check if the events
    (and the workload) are actually active before trying to
    deactivate them.
    
    Link: https://lore.kernel.org/all/c898d1911f7f9303b7e14726e7cc9678fbfb4a0e.camel@redhat.com/
    Link: https://lkml.kernel.org/r/938765e17d5a781c2df429a98f0b2e7cc317b022.1646823913.git.bristot@kernel.org
    
    Cc: stable@vger.kernel.org
    Cc: Marcelo Tosatti <mtosatti@redhat.com>
    Fixes: 2fac8d6 ("tracing/osnoise: Allow multiple instances of the same tracer")
    Reported-by: Nicolas Saenz Julienne <nsaenzju@redhat.com>
    Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Daniel Bristot de Oliveira authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    4e10787 View commit details
    Browse the repository at this point in the history
  97. arm64: dts: marvell: armada-37xx: Remap IO space to bus address 0x0

    commit a1cc169 upstream.
    
    Legacy and old PCI I/O based cards do not support 32-bit I/O addressing.
    
    Since commit 64f160e ("PCI: aardvark: Configure PCIe resources from
    'ranges' DT property") kernel can set different PCIe address on CPU and
    different on the bus for the one A37xx address mapping without any firmware
    support in case the bus address does not conflict with other A37xx mapping.
    
    So remap I/O space to the bus address 0x0 to enable support for old legacy
    I/O port based cards which have hardcoded I/O ports in low address space.
    
    Note that DDR on A37xx is mapped to bus address 0x0. And mapping of I/O
    space can be set to address 0x0 too because MEM space and I/O space are
    separate and so do not conflict.
    
    Remapping IO space on Turris Mox to different address is not possible to
    due bootloader bug.
    
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Reported-by: Arnd Bergmann <arnd@arndb.de>
    Fixes: 76f6386 ("arm64: dts: marvell: Add Aardvark PCIe support for Armada 3700")
    Cc: stable@vger.kernel.org # 64f160e ("PCI: aardvark: Configure PCIe resources from 'ranges' DT property")
    Cc: stable@vger.kernel.org # 514ef1e ("arm64: dts: marvell: armada-37xx: Extend PCIe MEM space")
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    pali authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    92258a3 View commit details
    Browse the repository at this point in the history
  98. arm64: Ensure execute-only permissions are not allowed without EPAN

    commit 6e2edd6 upstream.
    
    Commit 18107f8 ("arm64: Support execute-only permissions with
    Enhanced PAN") re-introduced execute-only permissions when EPAN is
    available. When EPAN is not available, arch_filter_pgprot() is supposed
    to change a PAGE_EXECONLY permission into PAGE_READONLY_EXEC. However,
    if BTI or MTE are present, such check does not detect the execute-only
    pgprot in the presence of PTE_GP (BTI) or MT_NORMAL_TAGGED (MTE),
    allowing the user to request PROT_EXEC with PROT_BTI or PROT_MTE.
    
    Remove the arch_filter_pgprot() function, change the default VM_EXEC
    permissions to PAGE_READONLY_EXEC and update the protection_map[] array
    at core_initcall() if EPAN is detected.
    
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Fixes: 18107f8 ("arm64: Support execute-only permissions with Enhanced PAN")
    Cc: <stable@vger.kernel.org> # 5.13.x
    Acked-by: Will Deacon <will@kernel.org>
    Reviewed-by: Vladimir Murzin <vladimir.murzin@arm.com>
    Tested-by: Vladimir Murzin <vladimir.murzin@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ctmarinas authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    8b2dc21 View commit details
    Browse the repository at this point in the history
  99. arm64: kasan: fix include error in MTE functions

    commit b859ebe upstream.
    
    Fix `error: expected string literal in 'asm'`.
    This happens when compiling an ebpf object file that includes
    `net/net_namespace.h` from linux kernel headers.
    
    Include trace:
         include/net/net_namespace.h:10
         include/linux/workqueue.h:9
         include/linux/timer.h:8
         include/linux/debugobjects.h:6
         include/linux/spinlock.h:90
         include/linux/workqueue.h:9
         arch/arm64/include/asm/spinlock.h:9
         arch/arm64/include/generated/asm/qrwlock.h:1
         include/asm-generic/qrwlock.h:14
         arch/arm64/include/asm/processor.h:33
         arch/arm64/include/asm/kasan.h:9
         arch/arm64/include/asm/mte-kasan.h:45
         arch/arm64/include/asm/mte-def.h:14
    
    Signed-off-by: Paul Semel <paul.semel@datadoghq.com>
    Fixes: 2cb3427 ("arm64: kasan: simplify and inline MTE functions")
    Cc: <stable@vger.kernel.org> # 5.12.x
    Link: https://lore.kernel.org/r/bacb5387-2992-97e4-0c48-1ed925905bee@gmail.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    paulsemel authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    cf04a86 View commit details
    Browse the repository at this point in the history
  100. swiotlb: rework "fix info leak with DMA_FROM_DEVICE"

    commit aa6f8dc upstream.
    
    Unfortunately, we ended up merging an old version of the patch "fix info
    leak with DMA_FROM_DEVICE" instead of merging the latest one. Christoph
    (the swiotlb maintainer), he asked me to create an incremental fix
    (after I have pointed this out the mix up, and asked him for guidance).
    So here we go.
    
    The main differences between what we got and what was agreed are:
    * swiotlb_sync_single_for_device is also required to do an extra bounce
    * We decided not to introduce DMA_ATTR_OVERWRITE until we have exploiters
    * The implantation of DMA_ATTR_OVERWRITE is flawed: DMA_ATTR_OVERWRITE
      must take precedence over DMA_ATTR_SKIP_CPU_SYNC
    
    Thus this patch removes DMA_ATTR_OVERWRITE, and makes
    swiotlb_sync_single_for_device() bounce unconditionally (that is, also
    when dir == DMA_TO_DEVICE) in order do avoid synchronising back stale
    data from the swiotlb buffer.
    
    Let me note, that if the size used with dma_sync_* API is less than the
    size used with dma_[un]map_*, under certain circumstances we may still
    end up with swiotlb not being transparent. In that sense, this is no
    perfect fix either.
    
    To get this bullet proof, we would have to bounce the entire
    mapping/bounce buffer. For that we would have to figure out the starting
    address, and the size of the mapping in
    swiotlb_sync_single_for_device(). While this does seem possible, there
    seems to be no firm consensus on how things are supposed to work.
    
    Signed-off-by: Halil Pasic <pasic@linux.ibm.com>
    Fixes: ddbd89d ("swiotlb: fix info leak with DMA_FROM_DEVICE")
    Cc: stable@vger.kernel.org
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    halil-pasic authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    62b27d9 View commit details
    Browse the repository at this point in the history
  101. virtio: unexport virtio_finalize_features

    commit 838d6d3 upstream.
    
    virtio_finalize_features is only used internally within virtio.
    No reason to export it.
    
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    mstsirkin authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    c6b1706 View commit details
    Browse the repository at this point in the history
  102. virtio: acknowledge all features before access

    commit 4fa59ed upstream.
    
    The feature negotiation was designed in a way that
    makes it possible for devices to know which config
    fields will be accessed by drivers.
    
    This is broken since commit 404123c ("virtio: allow drivers to
    validate features") with fallout in at least block and net.  We have a
    partial work-around in commit 2f9a174 ("virtio: write back
    F_VERSION_1 before validate") which at least lets devices find out which
    format should config space have, but this is a partial fix: guests
    should not access config space without acknowledging features since
    otherwise we'll never be able to change the config space format.
    
    To fix, split finalize_features from virtio_finalize_features and
    call finalize_features with all feature bits before validation,
    and then - if validation changed any bits - once again after.
    
    Since virtio_finalize_features no longer writes out features
    rename it to virtio_features_ok - since that is what it does:
    checks that features are ok with the device.
    
    As a side effect, this also reduces the amount of hypervisor accesses -
    we now only acknowledge features once unless we are clearing any
    features when validating (which is uncommon).
    
    IRC I think that this was more or less always the intent in the spec but
    unfortunately the way the spec is worded does not say this explicitly, I
    plan to address this at the spec level, too.
    
    Acked-by: Jason Wang <jasowang@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: 404123c ("virtio: allow drivers to validate features")
    Fixes: 2f9a174 ("virtio: write back F_VERSION_1 before validate")
    Cc: "Halil Pasic" <pasic@linux.ibm.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    mstsirkin authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    290902a View commit details
    Browse the repository at this point in the history
  103. net/mlx5: Fix offloading with ESWITCH_IPV4_TTL_MODIFY_ENABLE

    commit 39bab83 upstream.
    
    Only prio 1 is supported for nic mode when there is no ignore flow level
    support in firmware. But for switchdev mode, which supports fixed number
    of statically pre-allocated prios, this restriction is not relevant so
    it can be relaxed.
    
    Fixes: d671e10 ("net/mlx5: Fix tc max supported prio for nic mode")
    Signed-off-by: Dima Chumak <dchumak@nvidia.com>
    Reviewed-by: Roi Dayan <roid@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    chumakd authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    a0347a6 View commit details
    Browse the repository at this point in the history
  104. ARM: fix Thumb2 regression with Spectre BHB

    commit 6c7cb60 upstream.
    
    When building for Thumb2, the vectors make use of a local label. Sadly,
    the Spectre BHB code also uses a local label with the same number which
    results in the Thumb2 reference pointing at the wrong place. Fix this
    by changing the number used for the Spectre BHB local label.
    
    Fixes: b9baf5c ("ARM: Spectre-BHB workaround")
    Tested-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Russell King (Oracle) authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    c21b0de View commit details
    Browse the repository at this point in the history
  105. watch_queue: Fix filter limit check

    commit c993ee0 upstream.
    
    In watch_queue_set_filter(), there are a couple of places where we check
    that the filter type value does not exceed what the type_filter bitmap
    can hold.  One place calculates the number of bits by:
    
       if (tf[i].type >= sizeof(wfilter->type_filter) * 8)
    
    which is fine, but the second does:
    
       if (tf[i].type >= sizeof(wfilter->type_filter) * BITS_PER_LONG)
    
    which is not.  This can lead to a couple of out-of-bounds writes due to
    a too-large type:
    
     (1) __set_bit() on wfilter->type_filter
     (2) Writing more elements in wfilter->filters[] than we allocated.
    
    Fix this by just using the proper WATCH_TYPE__NR instead, which is the
    number of types we actually know about.
    
    The bug may cause an oops looking something like:
    
      BUG: KASAN: slab-out-of-bounds in watch_queue_set_filter+0x659/0x740
      Write of size 4 at addr ffff88800d2c66bc by task watch_queue_oob/611
      ...
      Call Trace:
       <TASK>
       dump_stack_lvl+0x45/0x59
       print_address_description.constprop.0+0x1f/0x150
       ...
       kasan_report.cold+0x7f/0x11b
       ...
       watch_queue_set_filter+0x659/0x740
       ...
       __x64_sys_ioctl+0x127/0x190
       do_syscall_64+0x43/0x90
       entry_SYSCALL_64_after_hwframe+0x44/0xae
    
      Allocated by task 611:
       kasan_save_stack+0x1e/0x40
       __kasan_kmalloc+0x81/0xa0
       watch_queue_set_filter+0x23a/0x740
       __x64_sys_ioctl+0x127/0x190
       do_syscall_64+0x43/0x90
       entry_SYSCALL_64_after_hwframe+0x44/0xae
    
      The buggy address belongs to the object at ffff88800d2c66a0
       which belongs to the cache kmalloc-32 of size 32
      The buggy address is located 28 bytes inside of
       32-byte region [ffff88800d2c66a0, ffff88800d2c66c0)
    
    Fixes: c73be61 ("pipe: Add general notification queue support")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    dhowells authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    b36588e View commit details
    Browse the repository at this point in the history
  106. watch_queue, pipe: Free watchqueue state after clearing pipe ring

    commit db8facf upstream.
    
    In free_pipe_info(), free the watchqueue state after clearing the pipe
    ring as each pipe ring descriptor has a release function, and in the
    case of a notification message, this is watch_queue_pipe_buf_release()
    which tries to mark the allocation bitmap that was previously released.
    
    Fix this by moving the put of the pipe's ref on the watch queue to after
    the ring has been cleared.  We still need to call watch_queue_clear()
    before doing that to make sure that the pipe is disconnected from any
    notification sources first.
    
    Fixes: c73be61 ("pipe: Add general notification queue support")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    dhowells authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    eef9afd View commit details
    Browse the repository at this point in the history
  107. watch_queue: Fix to release page in ->release()

    commit c1853fb upstream.
    
    When a pipe ring descriptor points to a notification message, the
    refcount on the backing page is incremented by the generic get function,
    but the release function, which marks the bitmap, doesn't drop the page
    ref.
    
    Fix this by calling generic_pipe_buf_release() at the end of
    watch_queue_pipe_buf_release().
    
    Fixes: c73be61 ("pipe: Add general notification queue support")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    dhowells authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    70bbc08 View commit details
    Browse the repository at this point in the history
  108. watch_queue: Fix to always request a pow-of-2 pipe ring size

    commit 96a4d89 upstream.
    
    The pipe ring size must always be a power of 2 as the head and tail
    pointers are masked off by AND'ing with the size of the ring - 1.
    watch_queue_set_size(), however, lets you specify any number of notes
    between 1 and 511.  This number is passed through to pipe_resize_ring()
    without checking/forcing its alignment.
    
    Fix this by rounding the number of slots required up to the nearest
    power of two.  The request is meant to guarantee that at least that many
    notifications can be generated before the queue is full, so rounding
    down isn't an option, but, alternatively, it may be better to give an
    error if we aren't allowed to allocate that much ring space.
    
    Fixes: c73be61 ("pipe: Add general notification queue support")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    dhowells authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    2f331b8 View commit details
    Browse the repository at this point in the history
  109. watch_queue: Fix the alloc bitmap size to reflect notes allocated

    commit 3b4c037 upstream.
    
    Currently, watch_queue_set_size() sets the number of notes available in
    wqueue->nr_notes according to the number of notes allocated, but sets
    the size of the bitmap to the unrounded number of notes originally asked
    for.
    
    Fix this by setting the bitmap size to the number of notes we're
    actually going to make available (ie. the number allocated).
    
    Fixes: c73be61 ("pipe: Add general notification queue support")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    dhowells authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    6cb5c7e View commit details
    Browse the repository at this point in the history
  110. watch_queue: Free the alloc bitmap when the watch_queue is torn down

    commit 7ea1a01 upstream.
    
    Free the watch_queue note allocation bitmap when the watch_queue is
    destroyed.
    
    Fixes: c73be61 ("pipe: Add general notification queue support")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    dhowells authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    d7e0519 View commit details
    Browse the repository at this point in the history
  111. watch_queue: Fix lack of barrier/sync/lock between post and read

    commit 2ed147f upstream.
    
    There's nothing to synchronise post_one_notification() versus
    pipe_read().  Whilst posting is done under pipe->rd_wait.lock, the
    reader only takes pipe->mutex which cannot bar notification posting as
    that may need to be made from contexts that cannot sleep.
    
    Fix this by setting pipe->head with a barrier in post_one_notification()
    and reading pipe->head with a barrier in pipe_read().
    
    If that's not sufficient, the rd_wait.lock will need to be taken,
    possibly in a ->confirm() op so that it only applies to notifications.
    The lock would, however, have to be dropped before copy_page_to_iter()
    is invoked.
    
    Fixes: c73be61 ("pipe: Add general notification queue support")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    dhowells authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    36198e3 View commit details
    Browse the repository at this point in the history
  112. watch_queue: Make comment about setting ->defunct more accurate

    commit 4edc076 upstream.
    
    watch_queue_clear() has a comment stating that setting ->defunct to true
    preventing new additions as well as preventing notifications.  Whilst
    the latter is true, the first bit is superfluous since at the time this
    function is called, the pipe cannot be accessed to add new event
    sources.
    
    Remove the "new additions" bit from the comment.
    
    Fixes: c73be61 ("pipe: Add general notification queue support")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    dhowells authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    ab36cca View commit details
    Browse the repository at this point in the history
  113. x86/boot: Fix memremap of setup_indirect structures

    commit 7228918 upstream.
    
    As documented, the setup_indirect structure is nested inside
    the setup_data structures in the setup_data list. The code currently
    accesses the fields inside the setup_indirect structure but only
    the sizeof(struct setup_data) is being memremapped. No crash
    occurred but this is just due to how the area is remapped under the
    covers.
    
    Properly memremap both the setup_data and setup_indirect structures
    in these cases before accessing them.
    
    Fixes: b3c72fc ("x86/boot: Introduce setup_indirect")
    Signed-off-by: Ross Philipson <ross.philipson@oracle.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/1645668456-22036-2-git-send-email-ross.philipson@oracle.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    rossphilipson authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    b46bfa5 View commit details
    Browse the repository at this point in the history
  114. x86/boot: Add setup_indirect support in early_memremap_is_setup_data()

    commit 445c147 upstream.
    
    The x86 boot documentation describes the setup_indirect structures and
    how they are used. Only one of the two functions in ioremap.c that needed
    to be modified to be aware of the introduction of setup_indirect
    functionality was updated. Adds comparable support to the other function
    where it was missing.
    
    Fixes: b3c72fc ("x86/boot: Introduce setup_indirect")
    Signed-off-by: Ross Philipson <ross.philipson@oracle.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/1645668456-22036-3-git-send-email-ross.philipson@oracle.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    rossphilipson authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    ba4b13a View commit details
    Browse the repository at this point in the history
  115. x86/module: Fix the paravirt vs alternative order

    commit 5adf349 upstream.
    
    Ever since commit
    
      4e62921 ("x86/paravirt: Add new features for paravirt patching")
    
    there is an ordering dependency between patching paravirt ops and
    patching alternatives, the module loader still violates this.
    
    Fixes: 4e62921 ("x86/paravirt: Add new features for paravirt patching")
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Miroslav Benes <mbenes@suse.cz>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220303112825.068773913@infradead.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Peter Zijlstra authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    173dc5e View commit details
    Browse the repository at this point in the history
  116. x86/sgx: Free backing memory after faulting the enclave page

    commit 08999b2 upstream.
    
    There is a limited amount of SGX memory (EPC) on each system.  When that
    memory is used up, SGX has its own swapping mechanism which is similar
    in concept but totally separate from the core mm/* code.  Instead of
    swapping to disk, SGX swaps from EPC to normal RAM.  That normal RAM
    comes from a shared memory pseudo-file and can itself be swapped by the
    core mm code.  There is a hierarchy like this:
    
    	EPC <-> shmem <-> disk
    
    After data is swapped back in from shmem to EPC, the shmem backing
    storage needs to be freed.  Currently, the backing shmem is not freed.
    This effectively wastes the shmem while the enclave is running.  The
    memory is recovered when the enclave is destroyed and the backing
    storage freed.
    
    Sort this out by freeing memory with shmem_truncate_range(), as soon as
    a page is faulted back to the EPC.  In addition, free the memory for
    PCMD pages as soon as all PCMD's in a page have been marked as unused
    by zeroing its contents.
    
    Cc: stable@vger.kernel.org
    Fixes: 1728ab5 ("x86/sgx: Add a page reclaimer")
    Reported-by: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Link: https://lkml.kernel.org/r/20220303223859.273187-1-jarkko@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jarkkojs authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    248c634 View commit details
    Browse the repository at this point in the history
  117. x86/traps: Mark do_int3() NOKPROBE_SYMBOL

    commit a365a65 upstream.
    
    Since kprobe_int3_handler() is called in do_int3(), probing do_int3()
    can cause a breakpoint recursion and crash the kernel. Therefore,
    do_int3() should be marked as NOKPROBE_SYMBOL.
    
    Fixes: 21e2829 ("x86/traps: Split int3 handler up")
    Signed-off-by: Li Huafei <lihuafei1@huawei.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220310120915.63349-1-lihuafei1@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Li Huafei authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    aa093e2 View commit details
    Browse the repository at this point in the history
  118. drm/panel: Select DRM_DP_HELPER for DRM_PANEL_EDP

    commit 3755d35 upstream.
    
    As reported in [1], DRM_PANEL_EDP depends on DRM_DP_HELPER. Select
    the option to fix the build failure. The error message is shown
    below.
    
      arm-linux-gnueabihf-ld: drivers/gpu/drm/panel/panel-edp.o: in function
        `panel_edp_probe': panel-edp.c:(.text+0xb74): undefined reference to
        `drm_panel_dp_aux_backlight'
      make[1]: *** [/builds/linux/Makefile:1222: vmlinux] Error 1
    
    The issue has been reported before, when DisplayPort helpers were
    hidden behind the option CONFIG_DRM_KMS_HELPER. [2]
    
    v2:
    	* fix and expand commit description (Arnd)
    
    Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
    Fixes: 9d6366e ("drm: fb_helper: improve CONFIG_FB dependency")
    Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Reviewed-by: Lyude Paul <lyude@redhat.com>
    Acked-by: Sam Ravnborg <sam@ravnborg.org>
    Link: https://lore.kernel.org/dri-devel/CA+G9fYvN0NyaVkRQmA1O6rX7H8PPaZrUAD7=RDy33QY9rUU-9g@mail.gmail.com/ # [1]
    Link: https://lore.kernel.org/all/20211117062704.14671-1-rdunlap@infradead.org/ # [2]
    Cc: Thomas Zimmermann <tzimmermann@suse.de>
    Cc: Lyude Paul <lyude@redhat.com>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Maxime Ripard <mripard@kernel.org>
    Cc: dri-devel@lists.freedesktop.org
    Link: https://patchwork.freedesktop.org/patch/msgid/20220203093922.20754-1-tzimmermann@suse.de
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Thomas Zimmermann authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    8185af3 View commit details
    Browse the repository at this point in the history
  119. perf parse: Fix event parser error for hybrid systems

    commit 91c9923 upstream.
    
    This bug happened on hybrid systems when both cpu_core and cpu_atom
    have the same event name such as "UOPS_RETIRED.MS" while their event
    terms are different, then during perf stat, the event for cpu_atom
    will parse fail and then no output for cpu_atom.
    
    UOPS_RETIRED.MS -> cpu_core/period=0x1e8483,umask=0x4,event=0xc2,frontend=0x8/
    UOPS_RETIRED.MS -> cpu_atom/period=0x1e8483,umask=0x1,event=0xc2/
    
    It is because event terms in the "head" of parse_events_multi_pmu_add
    will be changed to event terms for cpu_core after parsing UOPS_RETIRED.MS
    for cpu_core, then when parsing the same event for cpu_atom, it still
    uses the event terms for cpu_core, but event terms for cpu_atom are
    different with cpu_core, the event parses for cpu_atom will fail. This
    patch fixes it, the event terms should be parsed from the original
    event.
    
    This patch can work for the hybrid systems that have the same event
    in more than 2 PMUs. It also can work in non-hybrid systems.
    
    Before:
    
      # perf stat -v  -e  UOPS_RETIRED.MS  -a sleep 1
    
      Using CPUID GenuineIntel-6-97-1
      UOPS_RETIRED.MS -> cpu_core/period=0x1e8483,umask=0x4,event=0xc2,frontend=0x8/
      Control descriptor is not initialized
      UOPS_RETIRED.MS: 2737845 16068518485 16068518485
    
     Performance counter stats for 'system wide':
    
             2,737,845      cpu_core/UOPS_RETIRED.MS/
    
           1.002553850 seconds time elapsed
    
    After:
    
      # perf stat -v  -e  UOPS_RETIRED.MS  -a sleep 1
    
      Using CPUID GenuineIntel-6-97-1
      UOPS_RETIRED.MS -> cpu_core/period=0x1e8483,umask=0x4,event=0xc2,frontend=0x8/
      UOPS_RETIRED.MS -> cpu_atom/period=0x1e8483,umask=0x1,event=0xc2/
      Control descriptor is not initialized
      UOPS_RETIRED.MS: 1977555 16076950711 16076950711
      UOPS_RETIRED.MS: 568684 8038694234 8038694234
    
     Performance counter stats for 'system wide':
    
             1,977,555      cpu_core/UOPS_RETIRED.MS/
               568,684      cpu_atom/UOPS_RETIRED.MS/
    
           1.004758259 seconds time elapsed
    
    Fixes: fb08115 ("perf parse-events: Allow config on kernel PMU events")
    Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Zhengjun Xing <zhengjun.xing@linux.intel.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20220307151627.30049-1-zhengjun.xing@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ZhengjunXing authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    7c3ebd4 View commit details
    Browse the repository at this point in the history
  120. btrfs: make send work with concurrent block group relocation

    commit d96b342 upstream.
    
    We don't allow send and balance/relocation to run in parallel in order
    to prevent send failing or silently producing some bad stream. This is
    because while send is using an extent (specially metadata) or about to
    read a metadata extent and expecting it belongs to a specific parent
    node, relocation can run, the transaction used for the relocation is
    committed and the extent gets reallocated while send is still using the
    extent, so it ends up with a different content than expected. This can
    result in just failing to read a metadata extent due to failure of the
    validation checks (parent transid, level, etc), failure to find a
    backreference for a data extent, and other unexpected failures. Besides
    reallocation, there's also a similar problem of an extent getting
    discarded when it's unpinned after the transaction used for block group
    relocation is committed.
    
    The restriction between balance and send was added in commit 9e96749
    ("Btrfs: prevent send failures and crashes due to concurrent relocation"),
    kernel 5.3, while the more general restriction between send and relocation
    was added in commit 1cea5cf ("btrfs: ensure relocation never runs
    while we have send operations running"), kernel 5.14.
    
    Both send and relocation can be very long running operations. Relocation
    because it has to do a lot of IO and expensive backreference lookups in
    case there are many snapshots, and send due to read IO when operating on
    very large trees. This makes it inconvenient for users and tools to deal
    with scheduling both operations.
    
    For zoned filesystem we also have automatic block group relocation, so
    send can fail with -EAGAIN when users least expect it or send can end up
    delaying the block group relocation for too long. In the future we might
    also get the automatic block group relocation for non zoned filesystems.
    
    This change makes it possible for send and relocation to run in parallel.
    This is achieved the following way:
    
    1) For all tree searches, send acquires a read lock on the commit root
       semaphore;
    
    2) After each tree search, and before releasing the commit root semaphore,
       the leaf is cloned and placed in the search path (struct btrfs_path);
    
    3) After releasing the commit root semaphore, the changed_cb() callback
       is invoked, which operates on the leaf and writes commands to the pipe
       (or file in case send/receive is not used with a pipe). It's important
       here to not hold a lock on the commit root semaphore, because if we did
       we could deadlock when sending and receiving to the same filesystem
       using a pipe - the send task blocks on the pipe because it's full, the
       receive task, which is the only consumer of the pipe, triggers a
       transaction commit when attempting to create a subvolume or reserve
       space for a write operation for example, but the transaction commit
       blocks trying to write lock the commit root semaphore, resulting in a
       deadlock;
    
    4) Before moving to the next key, or advancing to the next change in case
       of an incremental send, check if a transaction used for relocation was
       committed (or is about to finish its commit). If so, release the search
       path(s) and restart the search, to where we were before, so that we
       don't operate on stale extent buffers. The search restarts are always
       possible because both the send and parent roots are RO, and no one can
       add, remove of update keys (change their offset) in RO trees - the
       only exception is deduplication, but that is still not allowed to run
       in parallel with send;
    
    5) Periodically check if there is contention on the commit root semaphore,
       which means there is a transaction commit trying to write lock it, and
       release the semaphore and reschedule if there is contention, so as to
       avoid causing any significant delays to transaction commits.
    
    This leaves some room for optimizations for send to have less path
    releases and re searching the trees when there's relocation running, but
    for now it's kept simple as it performs quite well (on very large trees
    with resulting send streams in the order of a few hundred gigabytes).
    
    Test case btrfs/187, from fstests, stresses relocation, send and
    deduplication attempting to run in parallel, but without verifying if send
    succeeds and if it produces correct streams. A new test case will be added
    that exercises relocation happening in parallel with send and then checks
    that send succeeds and the resulting streams are correct.
    
    A final note is that for now this still leaves the mutual exclusion
    between send operations and deduplication on files belonging to a root
    used by send operations. A solution for that will be slightly more complex
    but it will eventually be built on top of this change.
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Anand Jain <anand.jain@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    fdmanana authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    00a7429 View commit details
    Browse the repository at this point in the history
  121. riscv: dts: k210: fix broken IRQs on hart1

    commit 74583f1 upstream.
    
    Commit 67d9672 ("riscv: Update Canaan Kendryte K210 device tree")
    incorrectly removed two entries from the PLIC interrupt-controller node's
    interrupts-extended property.
    
    The PLIC driver cannot know the mapping between hart contexts and hart ids,
    so this information has to be provided by device tree, as specified by the
    PLIC device tree binding.
    
    The PLIC driver uses the interrupts-extended property, and initializes the
    hart context registers in the exact same order as provided by the
    interrupts-extended property.
    
    In other words, if we don't specify the S-mode interrupts, the PLIC driver
    will simply initialize the hart0 S-mode hart context with the hart1 M-mode
    configuration. It is therefore essential to specify the S-mode IRQs even
    though the system itself will only ever be running in M-mode.
    
    Re-add the S-mode interrupts, so that we get working IRQs on hart1 again.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 67d9672 ("riscv: Update Canaan Kendryte K210 device tree")
    Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    floatious authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    2777252 View commit details
    Browse the repository at this point in the history
  122. vhost: allow batching hint without size

    commit 95932ab upstream.
    
    Commit e2ae38c ("vhost: fix hung thread due to erroneous iotlb
    entries") tries to reject the IOTLB message whose size is zero. But
    the size is not necessarily meaningful, one example is the batching
    hint, so the commit breaks that.
    
    Fixing this be reject zero size message only if the message is used to
    update/invalidate the IOTLB.
    
    Fixes: e2ae38c ("vhost: fix hung thread due to erroneous iotlb entries")
    Reported-by: Eli Cohen <elic@nvidia.com>
    Cc: Anirudh Rayabharam <mail@anirudhrb.com>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Link: https://lore.kernel.org/r/20220310075211.4801-1-jasowang@redhat.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Tested-by: Eli Cohen <elic@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jasowang authored and gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    ad7aa68 View commit details
    Browse the repository at this point in the history
  123. Linux 5.16.15

    Link: https://lore.kernel.org/r/20220314112744.120491875@linuxfoundation.org
    Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Fox Chen <foxhlchen@gmail.com>
    Tested-by: Rudi Heitbaum <rudi@heitbaum.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    gregkh committed Mar 16, 2022
    Configuration menu
    Copy the full SHA
    3ea3a23 View commit details
    Browse the repository at this point in the history

Commits on Mar 18, 2022

  1. ODROID-COMMON: spi: spidev: Add support for SPI0 on the 40 pin header

    Signed-off-by: jkhgit <jkhpro1003@gmail.com>
    Change-Id: I093d2e2b925423b8c922e7f130267f15dac58ce3
    how2flow authored and tobetter committed Mar 18, 2022
    Configuration menu
    Copy the full SHA
    577bd37 View commit details
    Browse the repository at this point in the history
  2. ODROID-C4: spi/dtbo: add pinctrl for spi0

    Signed-off-by: steve.jeong <jkhpro1003@gmail.com>
    Change-Id: I09654bd0cb95482e8449db60a1e7d38ad0867406
    how2flow authored and tobetter committed Mar 18, 2022
    Configuration menu
    Copy the full SHA
    3459f5a View commit details
    Browse the repository at this point in the history
  3. ODROID-COMMON: touchscreen/goodix: translate GPIO number to IRQ

    Change-Id: I886fdc4672fe9e9126a48a0c9b77a01c736c9e07
    Signed-off-by: Dongjin Kim <tobetter@gmail.com>
    tobetter committed Mar 18, 2022
    Configuration menu
    Copy the full SHA
    f456033 View commit details
    Browse the repository at this point in the history
  4. ODROID-COMMON: Add LT8619C HDMI/Dual-mode DP receiver

    Signed-off-by: ckkim <changkon12@gmail.com>
    Signed-off-by: Dongjin Kim <tobetter@gmail.com>
    Change-Id: I82fee6b8bf8c308d7da0fa521333b6bc55d1c8f5
    ckkim authored and tobetter committed Mar 18, 2022
    Configuration menu
    Copy the full SHA
    d2bc1f0 View commit details
    Browse the repository at this point in the history
  5. ODROID-C4: arm64/dts: add new display device tree for ODROID-VU7C

    Signed-off-by: Dongjin Kim <tobetter@gmail.com>
    Change-Id: I56e7fdd82981d8006b8016dcf1f5e397915f6f95
    tobetter committed Mar 18, 2022
    Configuration menu
    Copy the full SHA
    ce9fa9e View commit details
    Browse the repository at this point in the history

Commits on Mar 19, 2022

  1. Revert "xfrm: state and policy should fail if XFRMA_IF_ID 0"

    commit a3d9001 upstream.
    
    This reverts commit 68ac0f3 because ID
    0 was meant to be used for configuring the policy/state without
    matching for a specific interface (e.g., Cilium is affected, see
    cilium/cilium#18789 and
    cilium/cilium#19019).
    
    Signed-off-by: Kai Lueke <kailueke@linux.microsoft.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    pothos authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    ceeeb36 View commit details
    Browse the repository at this point in the history
  2. arm64: dts: rockchip: fix dma-controller node names on rk356x

    [ Upstream commit 2ddd96a ]
    
    DMA-Cotrollers defined in rk356x.dtsi do not match the pattern in bindings.
    
    arch/arm64/boot/dts/rockchip/rk3568-evb1-v10.dt.yaml:
      dmac@fe530000: $nodename:0: 'dmac@fe530000' does not match '^dma-controller(@.*)?$'
    	From schema: Documentation/devicetree/bindings/dma/arm,pl330.yaml
    arch/arm64/boot/dts/rockchip/rk3568-evb1-v10.dt.yaml:
      dmac@fe550000: $nodename:0: 'dmac@fe550000' does not match '^dma-controller(@.*)?$'
    	From schema: Documentation/devicetree/bindings/dma/arm,pl330.yaml
    
    This Patch fixes it.
    
    Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
    Link: https://lore.kernel.org/r/20220123133615.135789-1-linux@fw-web.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    frank-w authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    fb57eb3 View commit details
    Browse the repository at this point in the history
  3. arm64: dts: rockchip: fix rk3399-puma-haikou USB OTG mode

    [ Upstream commit ed2c66a ]
    
    The micro USB3.0 port available on the Haikou evaluation kit for Puma
    RK3399-Q7 SoM supports dual-role model (aka drd or OTG) but its support
    was broken until now because of missing logic around the ID pin.
    
    This adds proper support for USB OTG on Puma Haikou by "connecting" the
    GPIO used for USB ID to the USB3 controller device.
    
    Cc: Quentin Schulz <foss+kernel@0leil.net>
    Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
    Link: https://lore.kernel.org/r/20220120125156.16217-1-quentin.schulz@theobroma-systems.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    QSchulz authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    315b0dd View commit details
    Browse the repository at this point in the history
  4. xfrm: Check if_id in xfrm_migrate

    [ Upstream commit c1aca30 ]
    
    This patch enables distinguishing SAs and SPs based on if_id during
    the xfrm_migrate flow. This ensures support for xfrm interfaces
    throughout the SA/SP lifecycle.
    
    When there are multiple existing SPs with the same direction,
    the same xfrm_selector and different endpoint addresses,
    xfrm_migrate might fail with ENODATA.
    
    Specifically, the code path for performing xfrm_migrate is:
      Stage 1: find policy to migrate with
        xfrm_migrate_policy_find(sel, dir, type, net)
      Stage 2: find and update state(s) with
        xfrm_migrate_state_find(mp, net)
      Stage 3: update endpoint address(es) of template(s) with
        xfrm_policy_migrate(pol, m, num_migrate)
    
    Currently "Stage 1" always returns the first xfrm_policy that
    matches, and "Stage 3" looks for the xfrm_tmpl that matches the
    old endpoint address. Thus if there are multiple xfrm_policy
    with same selector, direction, type and net, "Stage 1" might
    rertun a wrong xfrm_policy and "Stage 3" will fail with ENODATA
    because it cannot find a xfrm_tmpl with the matching endpoint
    address.
    
    The fix is to allow userspace to pass an if_id and add if_id
    to the matching rule in Stage 1 and Stage 2 since if_id is a
    unique ID for xfrm_policy and xfrm_state. For compatibility,
    if_id will only be checked if the attribute is set.
    
    Tested with additions to Android's kernel unit test suite:
    https://android-review.googlesource.com/c/kernel/tests/+/1668886
    
    Signed-off-by: Yan Yan <evitayan@google.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Yan Yan authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    42c9af6 View commit details
    Browse the repository at this point in the history
  5. xfrm: Fix xfrm migrate issues when address family changes

    [ Upstream commit e03c3bb ]
    
    xfrm_migrate cannot handle address family change of an xfrm_state.
    The symptons are the xfrm_state will be migrated to a wrong address,
    and sending as well as receiving packets wil be broken.
    
    This commit fixes it by breaking the original xfrm_state_clone
    method into two steps so as to update the props.family before
    running xfrm_init_state. As the result, xfrm_state's inner mode,
    outer mode, type and IP header length in xfrm_state_migrate can
    be updated with the new address family.
    
    Tested with additions to Android's kernel unit test suite:
    https://android-review.googlesource.com/c/kernel/tests/+/1885354
    
    Signed-off-by: Yan Yan <evitayan@google.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Yan Yan authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    3246f7d View commit details
    Browse the repository at this point in the history
  6. arm64: dts: rockchip: fix rk3399-puma eMMC HS400 signal integrity

    [ Upstream commit 62966cb ]
    
    There are signal integrity issues running the eMMC at 200MHz on Puma
    RK3399-Q7.
    
    Similar to the work-around found for RK3399 Gru boards, lowering the
    frequency to 100MHz made the eMMC much more stable, so let's lower the
    frequency to 100MHz.
    
    It might be possible to run at 150MHz as on RK3399 Gru boards but only
    100MHz was extensively tested.
    
    Cc: Quentin Schulz <foss+kernel@0leil.net>
    Signed-off-by: Jakob Unterwurzacher <jakob.unterwurzacher@theobroma-systems.com>
    Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
    Link: https://lore.kernel.org/r/20220119134948.1444965-1-quentin.schulz@theobroma-systems.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    jakob-tsd authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    98296a6 View commit details
    Browse the repository at this point in the history
  7. arm64: dts: rockchip: align pl330 node name with dtschema

    [ Upstream commit 8fd9415 ]
    
    Fixes dtbs_check warnings like:
    
      dmac@ff240000: $nodename:0: 'dmac@ff240000' does not match '^dma-controller(@.*)?$'
    
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Link: https://lore.kernel.org/r/20220129175429.298836-1-krzysztof.kozlowski@canonical.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    krzk authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    f53ad80 View commit details
    Browse the repository at this point in the history
  8. arm64: dts: rockchip: reorder rk3399 hdmi clocks

    [ Upstream commit 2e8a8b5 ]
    
    The binding specifies the clock order to "cec", "grf", "vpll". Reorder
    the clocks accordingly.
    
    Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
    Link: https://lore.kernel.org/r/20220126145549.617165-19-s.hauer@pengutronix.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    saschahauer authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    921b659 View commit details
    Browse the repository at this point in the history
  9. arm64: dts: agilex: use the compatible "intel,socfpga-agilex-hsotg"

    [ Upstream commit 268a491 ]
    
    The DWC2 USB controller on the Agilex platform does not support clock
    gating, so use the chip specific "intel,socfpga-agilex-hsotg"
    compatible.
    
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Dinh Nguyen authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    71239c2 View commit details
    Browse the repository at this point in the history
  10. ARM: dts: rockchip: reorder rk322x hmdi clocks

    [ Upstream commit be4e65b ]
    
    The binding specifies the clock order to "iahb", "isfr", "cec". Reorder
    the clocks accordingly.
    
    Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
    Link: https://lore.kernel.org/r/20220210142353.3420859-1-s.hauer@pengutronix.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    saschahauer authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    5523fef View commit details
    Browse the repository at this point in the history
  11. ARM: dts: rockchip: fix a typo on rk3288 crypto-controller

    [ Upstream commit 3916c36 ]
    
    crypto-controller had a typo, fix it.
    In the same time, rename it to just crypto
    
    Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
    Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Link: https://lore.kernel.org/r/20220209120355.1985707-1-clabbe@baylibre.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    montjoie authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    6d4b077 View commit details
    Browse the repository at this point in the history
  12. mac80211: refuse aggregations sessions before authorized

    [ Upstream commit a6bce78 ]
    
    If an MFP station isn't authorized, the receiver will (or
    at least should) drop the action frame since it's a robust
    management frame, but if we're not authorized we haven't
    installed keys yet. Refuse attempts to start a session as
    they'd just time out.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Link: https://lore.kernel.org/r/20220203201528.ff4d5679dce9.I34bb1f2bc341e161af2d6faf74f91b332ba11285@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    jmberg-intel authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    8c44807 View commit details
    Browse the repository at this point in the history
  13. MIPS: smp: fill in sibling and core maps earlier

    [ Upstream commit f2703de ]
    
    After enabling CONFIG_SCHED_CORE (landed during 5.14 cycle),
    2-core 2-thread-per-core interAptiv (CPS-driven) started emitting
    the following:
    
    [    0.025698] CPU1 revision is: 0001a120 (MIPS interAptiv (multi))
    [    0.048183] ------------[ cut here ]------------
    [    0.048187] WARNING: CPU: 1 PID: 0 at kernel/sched/core.c:6025 sched_core_cpu_starting+0x198/0x240
    [    0.048220] Modules linked in:
    [    0.048233] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 5.17.0-rc3+ tobetter#35 b7b319f24073fd9a3c2aa7ad15fb7993eec0b26f
    [    0.048247] Stack : 817f0000 00000004 327804c8 810eb050 00000000 00000004 00000000 c314fdd1
    [    0.048278]         830cbd64 819c0000 81800000 817f0000 83070bf4 00000001 830cbd08 00000000
    [    0.048307]         00000000 00000000 815fcbc4 00000000 00000000 00000000 00000000 00000000
    [    0.048334]         00000000 00000000 00000000 00000000 817f0000 00000000 00000000 817f6f34
    [    0.048361]         817f0000 818a3c00 817f0000 00000004 00000000 00000000 4dc33260 0018c933
    [    0.048389]         ...
    [    0.048396] Call Trace:
    [    0.048399] [<8105a7bc>] show_stack+0x3c/0x140
    [    0.048424] [<8131c2a0>] dump_stack_lvl+0x60/0x80
    [    0.048440] [<8108b5c0>] __warn+0xc0/0xf4
    [    0.048454] [<8108b658>] warn_slowpath_fmt+0x64/0x10c
    [    0.048467] [<810bd418>] sched_core_cpu_starting+0x198/0x240
    [    0.048483] [<810c6514>] sched_cpu_starting+0x14/0x80
    [    0.048497] [<8108c0f8>] cpuhp_invoke_callback_range+0x78/0x140
    [    0.048510] [<8108d914>] notify_cpu_starting+0x94/0x140
    [    0.048523] [<8106593c>] start_secondary+0xbc/0x280
    [    0.048539]
    [    0.048543] ---[ end trace 0000000000000000 ]---
    [    0.048636] Synchronize counters for CPU 1: done.
    
    ...for each but CPU 0/boot.
    Basic debug printks right before the mentioned line say:
    
    [    0.048170] CPU: 1, smt_mask:
    
    So smt_mask, which is sibling mask obviously, is empty when entering
    the function.
    This is critical, as sched_core_cpu_starting() calculates
    core-scheduling parameters only once per CPU start, and it's crucial
    to have all the parameters filled in at that moment (at least it
    uses cpu_smt_mask() which in fact is `&cpu_sibling_map[cpu]` on
    MIPS).
    
    A bit of debugging led me to that set_cpu_sibling_map() performing
    the actual map calculation, was being invocated after
    notify_cpu_start(), and exactly the latter function starts CPU HP
    callback round (sched_core_cpu_starting() is basically a CPU HP
    callback).
    While the flow is same on ARM64 (maps after the notifier, although
    before calling set_cpu_online()), x86 started calculating sibling
    maps earlier than starting the CPU HP callbacks in Linux 4.14 (see
    [0] for the reference). Neither me nor my brief tests couldn't find
    any potential caveats in calculating the maps right after performing
    delay calibration, but the WARN splat is now gone.
    The very same debug prints now yield exactly what I expected from
    them:
    
    [    0.048433] CPU: 1, smt_mask: 0-1
    
    [0] https://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git/commit/?id=76ce7cfe35ef
    
    Signed-off-by: Alexander Lobakin <alobakin@pm.me>
    Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    solbjorn authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    94647ae View commit details
    Browse the repository at this point in the history
  14. ARM: 9178/1: fix unmet dependency on BITREVERSE for HAVE_ARCH_BITREVERSE

    [ Upstream commit 11c57c3 ]
    
    Resending this to properly add it to the patch tracker - thanks for letting
    me know, Arnd :)
    
    When ARM is enabled, and BITREVERSE is disabled,
    Kbuild gives the following warning:
    
    WARNING: unmet direct dependencies detected for HAVE_ARCH_BITREVERSE
      Depends on [n]: BITREVERSE [=n]
      Selected by [y]:
      - ARM [=y] && (CPU_32v7M [=n] || CPU_32v7 [=y]) && !CPU_32v6 [=n]
    
    This is because ARM selects HAVE_ARCH_BITREVERSE
    without selecting BITREVERSE, despite
    HAVE_ARCH_BITREVERSE depending on BITREVERSE.
    
    This unmet dependency bug was found by Kismet,
    a static analysis tool for Kconfig. Please advise if this
    is not the appropriate solution.
    
    Signed-off-by: Julian Braha <julianbraha@gmail.com>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    julianbraha authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    107e8e7 View commit details
    Browse the repository at this point in the history
  15. Bluetooth: hci_core: Fix leaking sent_cmd skb

    [ Upstream commit dd3b1dc ]
    
    sent_cmd memory is not freed before freeing hci_dev causing it to leak
    it contents.
    
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Vudentz authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    9473d06 View commit details
    Browse the repository at this point in the history
  16. can: rcar_canfd: rcar_canfd_channel_probe(): register the CAN device …

    …when fully ready
    
    [ Upstream commit c5048a7 ]
    
    Register the CAN device only when all the necessary initialization is
    completed. This patch makes sure all the data structures and locks are
    initialized before registering the CAN device.
    
    Link: https://lore.kernel.org/all/20220221225935.12300-1-prabhakar.mahadev-lad.rj@bp.renesas.com
    Reported-by: Pavel Machek <pavel@denx.de>
    Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
    Reviewed-by: Pavel Machek <pavel@denx.de>
    Reviewed-by: Ulrich Hecht <uli+renesas@fpond.eu>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    prabhakarlad authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    508216f View commit details
    Browse the repository at this point in the history
  17. atm: firestream: check the return value of ioremap() in fs_init()

    [ Upstream commit d4e26aa ]
    
    The function ioremap() in fs_init() can fail, so its return value should
    be checked.
    
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    XidianGeneral authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    b1cbbe4 View commit details
    Browse the repository at this point in the history
  18. netfilter: egress: silence egress hook lockdep splats

    [ Upstream commit 17a8f31 ]
    
    Netfilter assumes its called with rcu_read_lock held, but in egress
    hook case it may be called with BH readlock.
    
    This triggers lockdep splat.
    
    In order to avoid to change all rcu_dereference() to
    rcu_dereference_check(..., rcu_read_lock_bh_held()), wrap nf_hook_slow
    with read lock/unlock pair.
    
    Reported-by: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Florian Westphal authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    7ddd419 View commit details
    Browse the repository at this point in the history
  19. Input: goodix - use the new soc_intel_is_byt() helper

    [ Upstream commit d176708 ]
    
    Use the new soc_intel_is_byt() helper from linux/platform_data/x86/soc.h.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20220131143539.109142-5-hdegoede@redhat.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    jwrdegoede authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    547549b View commit details
    Browse the repository at this point in the history
  20. Input: goodix - workaround Cherry Trail devices with a bogus ACPI Int…

    …errupt() resource
    
    [ Upstream commit d982992 ]
    
    ACPI/x86 devices with a Cherry Trail SoC should have a GpioInt + a regular
    GPIO ACPI resource in their ACPI tables.
    
    Some CHT devices have a bug, where the also is bogus interrupt resource
    (likely copied from a previous Bay Trail based generation of the device).
    
    The i2c-core-acpi code will assign the bogus, non-working, interrupt
    resource to client->irq. Add a workaround to fix this up.
    
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=2043960
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20220228111613.363336-1-hdegoede@redhat.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    jwrdegoede authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    720d3f6 View commit details
    Browse the repository at this point in the history
  21. iwlwifi: don't advertise TWT support

    [ Upstream commit 1db5fcb ]
    
    Some APs misbehave when TWT is used and cause our firmware to crash.
    We don't know a reasonable way to detect and work around this problem
    in the FW yet.  To prevent these crashes, disable TWT in the driver by
    stopping to advertise TWT support.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=215523
    Signed-off-by: Golan Ben Ami <golan.ben.ami@intel.com>
    [reworded the commit message]
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Link: https://lore.kernel.org/r/20220301072926.153969-1-luca@coelho.fi
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Golan Ben Ami authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    f1cb634 View commit details
    Browse the repository at this point in the history
  22. drm/vrr: Set VRR capable prop only if it is attached to connector

    [ Upstream commit 6292972 ]
    
    VRR capable property is not attached by default to the connector
    It is attached only if VRR is supported.
    So if the driver tries to call drm core set prop function without
    it being attached that causes NULL dereference.
    
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: dri-devel@lists.freedesktop.org
    Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220225013055.9282-1-manasi.d.navare@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Manasi Navare authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    85271e9 View commit details
    Browse the repository at this point in the history
  23. nl80211: Update bss channel on channel switch for P2P_CLIENT

    [ Upstream commit e50b88c ]
    
    The wdev channel information is updated post channel switch only for
    the station mode and not for the other modes. Due to this, the P2P client
    still points to the old value though it moved to the new channel
    when the channel change is induced from the P2P GO.
    
    Update the bss channel after CSA channel switch completion for P2P client
    interface as well.
    
    Signed-off-by: Sreeramya Soratkal <quic_ssramya@quicinc.com>
    Link: https://lore.kernel.org/r/1646114600-31479-1-git-send-email-quic_ssramya@quicinc.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Sreeramya Soratkal authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    020419e View commit details
    Browse the repository at this point in the history
  24. tcp: make tcp_read_sock() more robust

    [ Upstream commit e3d5ea2 ]
    
    If recv_actor() returns an incorrect value, tcp_read_sock()
    might loop forever.
    
    Instead, issue a one time warning and make sure to make progress.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Acked-by: Jakub Sitnicki <jakub@cloudflare.com>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/r/20220302161723.3910001-2-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Eric Dumazet authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    09253fa View commit details
    Browse the repository at this point in the history
  25. sfc: extend the locking on mcdi->seqno

    [ Upstream commit f1fb205 ]
    
    seqno could be read as a stale value outside of the lock. The lock is
    already acquired to protect the modification of seqno against a possible
    race condition. Place the reading of this value also inside this locking
    to protect it against a possible race condition.
    
    Signed-off-by: Niels Dossche <dossche.niels@gmail.com>
    Acked-by: Martin Habets <habetsm.xilinx@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    nielsdos authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    1c30164 View commit details
    Browse the repository at this point in the history
  26. bnx2: Fix an error message

    [ Upstream commit 8ccffe9 ]
    
    Fix an error message and report the correct failing function.
    
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    tititiou36 authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    0419fec View commit details
    Browse the repository at this point in the history
  27. kselftest/vm: fix tests build with old libc

    [ Upstream commit b773827 ]
    
    The error message when I build vm tests on debian10 (GLIBC 2.28):
    
        userfaultfd.c: In function `userfaultfd_pagemap_test':
        userfaultfd.c:1393:37: error: `MADV_PAGEOUT' undeclared (first use
        in this function); did you mean `MADV_RANDOM'?
          if (madvise(area_dst, test_pgsize, MADV_PAGEOUT))
                                             ^~~~~~~~~~~~
                                             MADV_RANDOM
    
    This patch includes these newer definitions from UAPI linux/mman.h, is
    useful to fix tests build on systems without these definitions in glibc
    sys/mman.h.
    
    Link: https://lkml.kernel.org/r/20220227055330.43087-2-zhouchengming@bytedance.com
    Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
    Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Chengming Zhou authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    77f2a54 View commit details
    Browse the repository at this point in the history
  28. ice: Fix race condition during interface enslave

    commit 5cb1ebd upstream.
    
    Commit 5dbbbd0 ("ice: Avoid RTNL lock when re-creating
    auxiliary device") changes a process of re-creation of aux device
    so ice_plug_aux_dev() is called from ice_service_task() context.
    This unfortunately opens a race window that can result in dead-lock
    when interface has left LAG and immediately enters LAG again.
    
    Reproducer:
    ```
    #!/bin/sh
    
    ip link add lag0 type bond mode 1 miimon 100
    ip link set lag0
    
    for n in {1..10}; do
            echo Cycle: $n
            ip link set ens7f0 master lag0
            sleep 1
            ip link set ens7f0 nomaster
    done
    ```
    
    This results in:
    [20976.208697] Workqueue: ice ice_service_task [ice]
    [20976.213422] Call Trace:
    [20976.215871]  __schedule+0x2d1/0x830
    [20976.219364]  schedule+0x35/0xa0
    [20976.222510]  schedule_preempt_disabled+0xa/0x10
    [20976.227043]  __mutex_lock.isra.7+0x310/0x420
    [20976.235071]  enum_all_gids_of_dev_cb+0x1c/0x100 [ib_core]
    [20976.251215]  ib_enum_roce_netdev+0xa4/0xe0 [ib_core]
    [20976.256192]  ib_cache_setup_one+0x33/0xa0 [ib_core]
    [20976.261079]  ib_register_device+0x40d/0x580 [ib_core]
    [20976.266139]  irdma_ib_register_device+0x129/0x250 [irdma]
    [20976.281409]  irdma_probe+0x2c1/0x360 [irdma]
    [20976.285691]  auxiliary_bus_probe+0x45/0x70
    [20976.289790]  really_probe+0x1f2/0x480
    [20976.298509]  driver_probe_device+0x49/0xc0
    [20976.302609]  bus_for_each_drv+0x79/0xc0
    [20976.306448]  __device_attach+0xdc/0x160
    [20976.310286]  bus_probe_device+0x9d/0xb0
    [20976.314128]  device_add+0x43c/0x890
    [20976.321287]  __auxiliary_device_add+0x43/0x60
    [20976.325644]  ice_plug_aux_dev+0xb2/0x100 [ice]
    [20976.330109]  ice_service_task+0xd0c/0xed0 [ice]
    [20976.342591]  process_one_work+0x1a7/0x360
    [20976.350536]  worker_thread+0x30/0x390
    [20976.358128]  kthread+0x10a/0x120
    [20976.365547]  ret_from_fork+0x1f/0x40
    ...
    [20976.438030] task:ip              state:D stack:    0 pid:213658 ppid:213627 flags:0x00004084
    [20976.446469] Call Trace:
    [20976.448921]  __schedule+0x2d1/0x830
    [20976.452414]  schedule+0x35/0xa0
    [20976.455559]  schedule_preempt_disabled+0xa/0x10
    [20976.460090]  __mutex_lock.isra.7+0x310/0x420
    [20976.464364]  device_del+0x36/0x3c0
    [20976.467772]  ice_unplug_aux_dev+0x1a/0x40 [ice]
    [20976.472313]  ice_lag_event_handler+0x2a2/0x520 [ice]
    [20976.477288]  notifier_call_chain+0x47/0x70
    [20976.481386]  __netdev_upper_dev_link+0x18b/0x280
    [20976.489845]  bond_enslave+0xe05/0x1790 [bonding]
    [20976.494475]  do_setlink+0x336/0xf50
    [20976.502517]  __rtnl_newlink+0x529/0x8b0
    [20976.543441]  rtnl_newlink+0x43/0x60
    [20976.546934]  rtnetlink_rcv_msg+0x2b1/0x360
    [20976.559238]  netlink_rcv_skb+0x4c/0x120
    [20976.563079]  netlink_unicast+0x196/0x230
    [20976.567005]  netlink_sendmsg+0x204/0x3d0
    [20976.570930]  sock_sendmsg+0x4c/0x50
    [20976.574423]  ____sys_sendmsg+0x1eb/0x250
    [20976.586807]  ___sys_sendmsg+0x7c/0xc0
    [20976.606353]  __sys_sendmsg+0x57/0xa0
    [20976.609930]  do_syscall_64+0x5b/0x1a0
    [20976.613598]  entry_SYSCALL_64_after_hwframe+0x65/0xca
    
    1. Command 'ip link ... set nomaster' causes that ice_plug_aux_dev()
       is called from ice_service_task() context, aux device is created
       and associated device->lock is taken.
    2. Command 'ip link ... set master...' calls ice's notifier under
       RTNL lock and that notifier calls ice_unplug_aux_dev(). That
       function tries to take aux device->lock but this is already taken
       by ice_plug_aux_dev() in step 1
    3. Later ice_plug_aux_dev() tries to take RTNL lock but this is already
       taken in step 2
    4. Dead-lock
    
    The patch fixes this issue by following changes:
    - Bit ICE_FLAG_PLUG_AUX_DEV is kept to be set during ice_plug_aux_dev()
      call in ice_service_task()
    - The bit is checked in ice_clear_rdma_cap() and only if it is not set
      then ice_unplug_aux_dev() is called. If it is set (in other words
      plugging of aux device was requested and ice_plug_aux_dev() is
      potentially running) then the function only clears the bit
    - Once ice_plug_aux_dev() call (in ice_service_task) is finished
      the bit ICE_FLAG_PLUG_AUX_DEV is cleared but it is also checked
      whether it was already cleared by ice_clear_rdma_cap(). If so then
      aux device is unplugged.
    
    Signed-off-by: Ivan Vecera <ivecera@redhat.com>
    Co-developed-by: Petr Oros <poros@redhat.com>
    Signed-off-by: Petr Oros <poros@redhat.com>
    Reviewed-by: Dave Ertman <david.m.ertman@intel.com>
    Link: https://lore.kernel.org/r/20220310171641.3863659-1-ivecera@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Ivan Vecera authored and gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    e1014fc View commit details
    Browse the repository at this point in the history
  29. Linux 5.16.16

    Link: https://lore.kernel.org/r/20220317124526.768423926@linuxfoundation.org
    Tested-by: Fox Chen <foxhlchen@gmail.com>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Rudi Heitbaum <rudi@heitbaum.com>
    Tested-by: Luna Jernberg <droidbittin@gmail.com>
    Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    gregkh committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    9aed648 View commit details
    Browse the repository at this point in the history

Commits on Mar 21, 2022

  1. Merge tag 'v5.16.16' into odroid-5.16.y

    This is the 5.16.16 stable release
    
    Change-Id: Id68bf8047dd2204de272589e99e217e78e32187a
    tobetter committed Mar 21, 2022
    Configuration menu
    Copy the full SHA
    cf14137 View commit details
    Browse the repository at this point in the history

Commits on Oct 26, 2022

  1. Fix build error of pwm-gpio

    See issue tobetter#39: legacy drivers were deprecated in tobetter@0829c35
    ginkage authored Oct 26, 2022
    Configuration menu
    Copy the full SHA
    bb6e90b View commit details
    Browse the repository at this point in the history