óÐÉÓÏË ÉÚÍÅÎÅÎÉÊ × Linux 5.18.10

 
ACPI: video: Change how we determine if brightness key-presses are handled [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Jun 24 13:23:34 2022 +0200

    ACPI: video: Change how we determine if brightness key-presses are handled
    
    commit 3a0cf7ab8df3878a7e2f3d29275b785cf4e7afb6 upstream.
    
    Some systems have an ACPI video bus but not ACPI video devices with
    backlight capability. On these devices brightness key-presses are
    (logically) not reported through the ACPI video bus.
    
    Change how acpi_video_handles_brightness_key_presses() determines if
    brightness key-presses are handled by the ACPI video driver to avoid
    vendor specific drivers/platform/x86 drivers filtering out their
    brightness key-presses even though they are the only ones reporting
    these presses.
    
    Fixes: ed83c9171829 ("platform/x86: panasonic-laptop: Resolve hotkey double trigger bug")
    Reported-and-tested-by: Stefan Seyfried <seife+kernel@b1-systems.com>
    Reported-and-tested-by: Kenneth Chan <kenneth.t.chan@gmail.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20220624112340.10130-2-hdegoede@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
caif_virtio: fix race between virtio_device_ready() and ndo_open() [+ + +]
Author: Jason Wang <jasowang@redhat.com>
Date:   Mon Jun 20 13:11:14 2022 +0800

    caif_virtio: fix race between virtio_device_ready() and ndo_open()
    
    commit 11a37eb66812ce6a06b79223ad530eb0e1d7294d upstream.
    
    We currently depend on probe() calling virtio_device_ready() -
    which happens after netdev
    registration. Since ndo_open() can be called immediately
    after register_netdev, this means there exists a race between
    ndo_open() and virtio_device_ready(): the driver may start to use the
    device (e.g. TX) before DRIVER_OK which violates the spec.
    
    Fix this by switching to use register_netdevice() and protect the
    virtio_device_ready() with rtnl_lock() to make sure ndo_open() can
    only be called after virtio_device_ready().
    
    Fixes: 0d2e1a2926b18 ("caif_virtio: Introduce caif over virtio")
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Message-Id: <20220620051115.3142-3-jasowang@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ceph: wait on async create before checking caps for syncfs [+ + +]
Author: Jeff Layton <jlayton@kernel.org>
Date:   Mon Jun 6 19:31:42 2022 -0400

    ceph: wait on async create before checking caps for syncfs
    
    commit 8692969e9164c15474b356b9898e5b9b21a85643 upstream.
    
    Currently, we'll call ceph_check_caps, but if we're still waiting
    on the reply, we'll end up spinning around on the same inode in
    flush_dirty_session_caps. Wait for the async create reply before
    flushing caps.
    
    Cc: stable@vger.kernel.org
    URL: https://tracker.ceph.com/issues/55823
    Fixes: fbed7045f552 ("ceph: wait for async create reply before sending any cap messages")
    Signed-off-by: Jeff Layton <jlayton@kernel.org>
    Reviewed-by: Xiubo Li <xiubli@redhat.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
cifs: fix minor compile warning [+ + +]
Author: Steve French <stfrench@microsoft.com>
Date:   Sun May 22 21:25:24 2022 -0500

    cifs: fix minor compile warning
    
    commit 93ed91c020aa4f021600a633f1f87790a5e50b91 upstream.
    
    Add ifdef around nodfs variable from patch:
      "cifs: don't call cifs_dfs_query_info_nonascii_quirk() if nodfs was set"
    which is unused when CONFIG_DFS_UPCALL is not set.
    
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Cc: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
cpufreq: amd-pstate: Add resume and suspend callbacks [+ + +]
Author: Jinzhou Su <Jinzhou.Su@amd.com>
Date:   Thu Jun 23 11:15:09 2022 +0800

    cpufreq: amd-pstate: Add resume and suspend callbacks
    
    commit b376471fb47d4905e72fe73e9eeed228f8f2f230 upstream.
    
    When system resumes from S3, the CPPC enable register will be
    cleared and reset to 0.
    
    So enable the CPPC interface by writing 1 to this register on
    system resume and disable it during system suspend.
    
    Signed-off-by: Jinzhou Su <Jinzhou.Su@amd.com>
    Signed-off-by: Jinzhou Su <Jinzhou.Su@amd.com>
    Acked-by: Huang Rui <ray.huang@amd.com>
    [ rjw: Subject and changelog edits ]
    Cc: All applicable <stable@vger.kernel.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

cpufreq: qcom-hw: Don't do lmh things without a throttle interrupt [+ + +]
Author: Stephen Boyd <swboyd@chromium.org>
Date:   Thu Jun 16 15:45:31 2022 -0700

    cpufreq: qcom-hw: Don't do lmh things without a throttle interrupt
    
    commit 668a7a12ded7077d4fd7ad1305667e559907e5bb upstream.
    
    Offlining cpu6 and cpu7 and then onlining cpu6 hangs on
    sc7180-trogdor-lazor because the throttle interrupt doesn't exist.
    Similarly, things go sideways when suspend/resume runs. That's because
    the qcom_cpufreq_hw_cpu_online() and qcom_cpufreq_hw_lmh_exit()
    functions are calling genirq APIs with an interrupt value of '-6', i.e.
    -ENXIO, and that isn't good.
    
    Check the value of the throttle interrupt like we already do in other
    functions in this file and bail out early from lmh code to fix the hang.
    
    Reported-by: Rob Clark <robdclark@chromium.org>
    Cc: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
    Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
    Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Fixes: a1eb080a0447 ("cpufreq: qcom-hw: provide online/offline operations")
    Signed-off-by: Stephen Boyd <swboyd@chromium.org>
    Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dm raid: fix accesses beyond end of raid member array [+ + +]
Author: Heinz Mauelshagen <heinzm@redhat.com>
Date:   Tue Jun 28 00:37:22 2022 +0200

    dm raid: fix accesses beyond end of raid member array
    
    commit 332bd0778775d0cf105c4b9e03e460b590749916 upstream.
    
    On dm-raid table load (using raid_ctr), dm-raid allocates an array
    rs->devs[rs->raid_disks] for the raid device members. rs->raid_disks
    is defined by the number of raid metadata and image tupples passed
    into the target's constructor.
    
    In the case of RAID layout changes being requested, that number can be
    different from the current number of members for existing raid sets as
    defined in their superblocks. Example RAID layout changes include:
    - raid1 legs being added/removed
    - raid4/5/6/10 number of stripes changed (stripe reshaping)
    - takeover to higher raid level (e.g. raid5 -> raid6)
    
    When accessing array members, rs->raid_disks must be used in control
    loops instead of the potentially larger value in rs->md.raid_disks.
    Otherwise it will cause memory access beyond the end of the rs->devs
    array.
    
    Fix this by changing code that is prone to out-of-bounds access.
    Also fix validate_raid_redundancy() to validate all devices that are
    added. Also, use braces to help clean up raid_iterate_devices().
    
    The out-of-bounds memory accesses was discovered using KASAN.
    
    This commit was verified to pass all LVM2 RAID tests (with KASAN
    enabled).
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Heinz Mauelshagen <heinzm@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dm raid: fix KASAN warning in raid5_add_disks [+ + +]
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Wed Jun 29 13:40:57 2022 -0400

    dm raid: fix KASAN warning in raid5_add_disks
    
    commit 617b365872a247480e9dcd50a32c8d1806b21861 upstream.
    
    There's a KASAN warning in raid5_add_disk when running the LVM testsuite.
    The warning happens in the test
    lvconvert-raid-reshape-linear_to_raid6-single-type.sh. We fix the warning
    by verifying that rdev->saved_raid_disk is within limits.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drivers: cpufreq: Add missing of_node_put() in qoriq-cpufreq.c [+ + +]
Author: Liang He <windhl@126.com>
Date:   Wed Jun 15 17:48:07 2022 +0800

    drivers: cpufreq: Add missing of_node_put() in qoriq-cpufreq.c
    
    [ Upstream commit 4ff5a9b6d95f3524bf6d27147df497eb21968300 ]
    
    In qoriq_cpufreq_probe(), of_find_matching_node() will return a
    node pointer with refcount incremented. We should use of_node_put()
    when it is not used anymore.
    
    Fixes: 157f527639da ("cpufreq: qoriq: convert to a platform driver")
    [ Viresh: Fixed Author's name in commit log ]
    Signed-off-by: Liang He <windhl@126.com>
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdgpu: fix adev variable used in amdgpu_device_gpu_recover() [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Thu Jun 16 16:52:01 2022 -0400

    drm/amdgpu: fix adev variable used in amdgpu_device_gpu_recover()
    
    commit bbba251577b27422ebe173e1bd006424d6a8cfb3 upstream.
    
    Use the correct adev variable for the drm_fb_helper in
    amdgpu_device_gpu_recover().  Noticed by inspection.
    
    Fixes: 087451f372bf ("drm/amdgpu: use generic fb helpers instead of setting up AMD own's.")
    Reviewed-by: Guchun Chen <guchun.chen@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drm/amdgpu: To flush tlb for MMHUB of RAVEN series [+ + +]
Author: Ruili Ji <ruiliji2@amd.com>
Date:   Wed Jun 22 14:20:22 2022 +0800

    drm/amdgpu: To flush tlb for MMHUB of RAVEN series
    
    commit 5cb0e3fb2c54eabfb3f932a1574bff1774946bc0 upstream.
    
    amdgpu: [mmhub0] no-retry page fault (src_id:0 ring:40 vmid:8 pasid:32769, for process test_basic pid 3305 thread test_basic pid 3305)
    amdgpu: in page starting at address 0x00007ff990003000 from IH client 0x12 (VMC)
    amdgpu: VM_L2_PROTECTION_FAULT_STATUS:0x00840051
    amdgpu: Faulty UTCL2 client ID: MP1 (0x0)
    amdgpu: MORE_FAULTS: 0x1
    amdgpu: WALKER_ERROR: 0x0
    amdgpu: PERMISSION_FAULTS: 0x5
    amdgpu: MAPPING_ERROR: 0x0
    amdgpu: RW: 0x1
    
    When memory is allocated by kfd, no one triggers the tlb flush for MMHUB0.
    There is page fault from MMHUB0.
    
    v2:fix indentation
    v3:change subject and fix indentation
    
    Signed-off-by: Ruili Ji <ruiliji2@amd.com>
    Reviewed-by: Philip Yang <philip.yang@amd.com>
    Reviewed-by: Aaron Liu <aaron.liu@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/fourcc: fix integer type usage in uapi header [+ + +]
Author: Carlos Llamas <cmllamas@google.com>
Date:   Tue Jun 21 20:39:21 2022 +0000

    drm/fourcc: fix integer type usage in uapi header
    
    [ Upstream commit 20b8264394b33adb1640a485a62a84bc1388b6a3 ]
    
    Kernel uapi headers are supposed to use __[us]{8,16,32,64} types defined
    by <linux/types.h> as opposed to 'uint32_t' and similar. See [1] for the
    relevant discussion about this topic. In this particular case, the usage
    of 'uint64_t' escaped headers_check as these macros are not being called
    here. However, the following program triggers a compilation error:
    
      #include <drm/drm_fourcc.h>
    
      int main()
      {
            unsigned long x = AMD_FMT_MOD_CLEAR(RB);
            return 0;
      }
    
    gcc error:
      drm.c:5:27: error: ‘uint64_t’ undeclared (first use in this function)
          5 |         unsigned long x = AMD_FMT_MOD_CLEAR(RB);
            |                           ^~~~~~~~~~~~~~~~~
    
    This patch changes AMD_FMT_MOD_{SET,CLEAR} macros to use the correct
    integer types, which fixes the above issue.
    
      [1] https://lkml.org/lkml/2019/6/5/18
    
    Fixes: 8ba16d599374 ("drm/fourcc: Add AMD DRM modifiers.")
    Signed-off-by: Carlos Llamas <cmllamas@google.com>
    Reviewed-by: Simon Ser <contact@emersion.fr>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/i915/dgfx: Disable d3cold at gfx root port [+ + +]
Author: Anshuman Gupta <anshuman.gupta@intel.com>
Date:   Thu Jun 16 17:52:49 2022 +0530

    drm/i915/dgfx: Disable d3cold at gfx root port
    
    [ Upstream commit 7d23a80dc9720a378707edc03a7275d5a372355f ]
    
    Currently i915 disables d3cold for i915 pci dev.
    This blocks D3 for i915 gfx pci upstream bridge (VSP).
    Let's disable d3cold at gfx root port to make sure that
    i915 gfx VSP can transition to D3 to save some power.
    
    We don't need to disable/enable d3cold in rpm, s2idle
    suspend/resume handlers. Disabling/Enabling d3cold at
    gfx root port in probe/remove phase is sufficient.
    
    Fixes: 1a085e23411d ("drm/i915: Disable D3Cold in s2idle and runtime pm")
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com>
    Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
    Acked-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220616122249.5007-1-anshuman.gupta@intel.com
    (cherry picked from commit 138c2fca6f408f397ea8fbbbf33203f244d96e01)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/i915/gem: add missing else [+ + +]
Author: katrinzhou <katrinzhou@tencent.com>
Date:   Tue Jun 21 13:49:26 2022 +0100

    drm/i915/gem: add missing else
    
    [ Upstream commit 9efdd519d001ee3e761f6ff80d5eb123387421c1 ]
    
    Add missing else in set_proto_ctx_param() to fix coverity issue.
    
    Addresses-Coverity: ("Unused value")
    Fixes: d4433c7600f7 ("drm/i915/gem: Use the proto-context to handle create parameters (v5)")
    Suggested-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Signed-off-by: katrinzhou <katrinzhou@tencent.com>
    [tursulin: fixup alignment]
    Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220621124926.615884-1-tvrtko.ursulin@linux.intel.com
    (cherry picked from commit 7482a65664c16cc88eb84d2b545a1fed887378a1)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm/dpu: Increment vsync_cnt before waking up userspace [+ + +]
Author: Stephen Boyd <swboyd@chromium.org>
Date:   Tue Jun 21 19:38:55 2022 -0700

    drm/msm/dpu: Increment vsync_cnt before waking up userspace
    
    [ Upstream commit c28d76d360f9f7af1f910342bde27939873bc45e ]
    
    The 'vsync_cnt' is used to count the number of frames for a crtc.
    Unfortunately, we increment the count after waking up userspace via
    dpu_crtc_vblank_callback() calling drm_crtc_handle_vblank().
    drm_crtc_handle_vblank() wakes up userspace processes that have called
    drm_wait_vblank_ioctl(), and if that ioctl is expecting the count to
    increase it won't.
    
    Increment the count before calling into the drm APIs so that we don't
    have to worry about ordering the increment with anything else in drm.
    This fixes a software video decode test that fails to see frame counts
    increase on Trogdor boards.
    
    Cc: Mark Yacoub <markyacoub@chromium.org>
    Cc: Jessica Zhang <quic_jesszhan@quicinc.com>
    Fixes: 885455d6bf82 ("drm/msm: Change dpu_crtc_get_vblank_counter to use vsync count.")
    Signed-off-by: Stephen Boyd <swboyd@chromium.org>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Tested-by: Jessica Zhang <quic_jesszhan@quicinc.com> # Trogdor (sc7180)
    Patchwork: https://patchwork.freedesktop.org/patch/490531/
    Link: https://lore.kernel.org/r/20220622023855.2970913-1-swboyd@chromium.org
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm/gem: Fix error return on fence id alloc fail [+ + +]
Author: Rob Clark <robdclark@chromium.org>
Date:   Fri Jun 24 11:45:28 2022 -0700

    drm/msm/gem: Fix error return on fence id alloc fail
    
    [ Upstream commit 08de214138cdea438a0dfcb10d355a6650c6017c ]
    
    This was a typo, we didn't actually want to return zero.
    
    Fixes: a61acbbe9cf8 ("drm/msm: Track "seqno" fences by idr")
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/491145/
    Link: https://lore.kernel.org/r/20220624184528.4036837-1-robdclark@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
epic100: fix use after free on rmmod [+ + +]
Author: Tong Zhang <ztong0001@gmail.com>
Date:   Sun Jun 26 21:33:48 2022 -0700

    epic100: fix use after free on rmmod
    
    commit 8ee9d82cd0a45e7d050ade598c9f33032a0f2891 upstream.
    
    epic_close() calls epic_rx() and uses dma buffer, but in epic_remove_one()
    we already freed the dma buffer. To fix this issue, reorder function calls
    like in the .probe function.
    
    BUG: KASAN: use-after-free in epic_rx+0xa6/0x7e0 [epic100]
    Call Trace:
     epic_rx+0xa6/0x7e0 [epic100]
     epic_close+0xec/0x2f0 [epic100]
     unregister_netdev+0x18/0x20
     epic_remove_one+0xaa/0xf0 [epic100]
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Yilun Wu <yiluwu@cs.stonybrook.edu>
    Signed-off-by: Tong Zhang <ztong0001@gmail.com>
    Reviewed-by: Francois Romieu <romieu@fr.zoreil.com>
    Link: https://lore.kernel.org/r/20220627043351.25615-1-ztong0001@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
fanotify: refine the validation checks on non-dir inode mask [+ + +]
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Mon Jun 27 20:47:19 2022 +0300

    fanotify: refine the validation checks on non-dir inode mask
    
    commit 8698e3bab4dd7968666e84e111d0bfd17c040e77 upstream.
    
    Commit ceaf69f8eadc ("fanotify: do not allow setting dirent events in
    mask of non-dir") added restrictions about setting dirent events in the
    mask of a non-dir inode mark, which does not make any sense.
    
    For backward compatibility, these restictions were added only to new
    (v5.17+) APIs.
    
    It also does not make any sense to set the flags FAN_EVENT_ON_CHILD or
    FAN_ONDIR in the mask of a non-dir inode.  Add these flags to the
    dir-only restriction of the new APIs as well.
    
    Move the check of the dir-only flags for new APIs into the helper
    fanotify_events_supported(), which is only called for FAN_MARK_ADD,
    because there is no need to error on an attempt to remove the dir-only
    flags from non-dir inode.
    
    Fixes: ceaf69f8eadc ("fanotify: do not allow setting dirent events in mask of non-dir")
    Link: https://lore.kernel.org/linux-fsdevel/20220627113224.kr2725conevh53u4@quack3.lan/
    Link: https://lore.kernel.org/r/20220627174719.2838175-1-amir73il@gmail.com
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
hwmon: (ibmaem) don't call platform_device_del() if platform_device_add() fails [+ + +]
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Fri Jul 1 15:41:53 2022 +0800

    hwmon: (ibmaem) don't call platform_device_del() if platform_device_add() fails
    
    [ Upstream commit d0e51022a025ca5350fafb8e413a6fe5d4baf833 ]
    
    If platform_device_add() fails, it no need to call platform_device_del(), split
    platform_device_unregister() into platform_device_del/put(), so platform_device_put()
    can be called separately.
    
    Fixes: 8808a793f052 ("ibmaem: new driver for power/energy/temp meters in IBM System X hardware")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20220701074153.4021556-1-yangyingliang@huawei.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hwmon: (occ) Prevent power cap command overwriting poll response [+ + +]
Author: Eddie James <eajames@linux.ibm.com>
Date:   Tue Jun 28 15:30:29 2022 -0500

    hwmon: (occ) Prevent power cap command overwriting poll response
    
    commit 1bbb2809040a1f9c7c53c9f06c21aa83275ed27b upstream.
    
    Currently, the response to the power cap command overwrites the
    first eight bytes of the poll response, since the commands use
    the same buffer. This means that user's get the wrong data between
    the time of sending the power cap and the next poll response update.
    Fix this by specifying a different buffer for the power cap command
    response.
    
    Fixes: 5b5513b88002 ("hwmon: Add On-Chip Controller (OCC) hwmon driver")
    Signed-off-by: Eddie James <eajames@linux.ibm.com>
    Link: https://lore.kernel.org/r/20220628203029.51747-1-eajames@linux.ibm.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
io_uring: ensure that send/sendmsg and recv/recvmsg check sqe->ioprio [+ + +]
Author: Jens Axboe <axboe@kernel.dk>
Date:   Thu Jun 30 14:38:45 2022 -0600

    io_uring: ensure that send/sendmsg and recv/recvmsg check sqe->ioprio
    
    commit 73911426aaaadbae54fa72359b33a7b6a56947db upstream.
    
    All other opcodes correctly check if this is set and -EINVAL if it is
    and they don't support that field, for some reason the these were
    forgotten.
    
    This was unified a bit differently in the upstream tree, but had the
    same effect as making sure we error on this field. Rather than have
    a painful backport of the upstream commit, just fixup the mentioned
    opcodes.
    
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ipv6/sit: fix ipip6_tunnel_get_prl return value [+ + +]
Author: katrinzhou <katrinzhou@tencent.com>
Date:   Tue Jun 28 11:50:30 2022 +0800

    ipv6/sit: fix ipip6_tunnel_get_prl return value
    
    commit adabdd8f6acabc0c3fdbba2e7f5a2edd9c5ef22d upstream.
    
    When kcalloc fails, ipip6_tunnel_get_prl() should return -ENOMEM.
    Move the position of label "out" to return correctly.
    
    Addresses-Coverity: ("Unused value")
    Fixes: 300aaeeaab5f ("[IPV6] SIT: Add SIOCGETPRL ioctl to get/dump PRL.")
    Signed-off-by: katrinzhou <katrinzhou@tencent.com>
    Reviewed-by: Eric Dumazet<edumazet@google.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20220628035030.1039171-1-zys.zljxml@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ipv6: fix lockdep splat in in6_dump_addrs() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Jun 28 12:12:48 2022 +0000

    ipv6: fix lockdep splat in in6_dump_addrs()
    
    commit 4e43e64d0f1332fcc503babad4dc31aead7131ca upstream.
    
    As reported by syzbot, we should not use rcu_dereference()
    when rcu_read_lock() is not held.
    
    WARNING: suspicious RCU usage
    5.19.0-rc2-syzkaller #0 Not tainted
    
    net/ipv6/addrconf.c:5175 suspicious rcu_dereference_check() usage!
    
    other info that might help us debug this:
    
    rcu_scheduler_active = 2, debug_locks = 1
    1 lock held by syz-executor326/3617:
     #0: ffffffff8d5848e8 (rtnl_mutex){+.+.}-{3:3}, at: netlink_dump+0xae/0xc20 net/netlink/af_netlink.c:2223
    
    stack backtrace:
    CPU: 0 PID: 3617 Comm: syz-executor326 Not tainted 5.19.0-rc2-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
     in6_dump_addrs+0x12d1/0x1790 net/ipv6/addrconf.c:5175
     inet6_dump_addr+0x9c1/0xb50 net/ipv6/addrconf.c:5300
     netlink_dump+0x541/0xc20 net/netlink/af_netlink.c:2275
     __netlink_dump_start+0x647/0x900 net/netlink/af_netlink.c:2380
     netlink_dump_start include/linux/netlink.h:245 [inline]
     rtnetlink_rcv_msg+0x73e/0xc90 net/core/rtnetlink.c:6046
     netlink_rcv_skb+0x153/0x420 net/netlink/af_netlink.c:2501
     netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
     netlink_unicast+0x543/0x7f0 net/netlink/af_netlink.c:1345
     netlink_sendmsg+0x917/0xe10 net/netlink/af_netlink.c:1921
     sock_sendmsg_nosec net/socket.c:714 [inline]
     sock_sendmsg+0xcf/0x120 net/socket.c:734
     ____sys_sendmsg+0x6eb/0x810 net/socket.c:2492
     ___sys_sendmsg+0xf3/0x170 net/socket.c:2546
     __sys_sendmsg net/socket.c:2575 [inline]
     __do_sys_sendmsg net/socket.c:2584 [inline]
     __se_sys_sendmsg net/socket.c:2582 [inline]
     __x64_sys_sendmsg+0x132/0x220 net/socket.c:2582
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x46/0xb0
    
    Fixes: 88e2ca308094 ("mld: convert ifmcaddr6 to RCU")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Taehee Yoo <ap420073@gmail.com>
    Link: https://lore.kernel.org/r/20220628121248.858695-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ipv6: take care of disable_policy when restoring routes [+ + +]
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Thu Jun 23 14:00:15 2022 +0200

    ipv6: take care of disable_policy when restoring routes
    
    commit 3b0dc529f56b5f2328244130683210be98f16f7f upstream.
    
    When routes corresponding to addresses are restored by
    fixup_permanent_addr(), the dst_nopolicy parameter was not set.
    The typical use case is a user that configures an address on a down
    interface and then put this interface up.
    
    Let's take care of this flag in addrconf_f6i_alloc(), so that every callers
    benefit ont it.
    
    CC: stable@kernel.org
    CC: David Forster <dforster@brocade.com>
    Fixes: df789fe75206 ("ipv6: Provide ipv6 version of "disable_policy" sysctl")
    Reported-by: Siwar Zitouni <siwar.zitouni@6wind.com>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20220623120015.32640-1-nicolas.dichtel@6wind.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ksmbd: check invalid FileOffset and BeyondFinalZero in FSCTL_ZERO_DATA [+ + +]
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Sun Jun 19 22:37:17 2022 +0900

    ksmbd: check invalid FileOffset and BeyondFinalZero in FSCTL_ZERO_DATA
    
    commit b5e5f9dfc915ff05b41dff56181e1dae101712bd upstream.
    
    FileOffset should not be greater than BeyondFinalZero in FSCTL_ZERO_DATA.
    And don't call ksmbd_vfs_zero_data() if length is zero.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Hyunchul Lee <hyc.lee@gmail.com>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ksmbd: set the range of bytes to zero without extending file size in FSCTL_ZERO_DATA [+ + +]
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Sun Jun 19 22:35:48 2022 +0900

    ksmbd: set the range of bytes to zero without extending file size in FSCTL_ZERO_DATA
    
    commit 18e39fb960e6a908ac5230b57e3d0d6c25232368 upstream.
    
    generic/091, 263 test failed since commit f66f8b94e7f2 ("cifs: when
    extending a file with falloc we should make files not-sparse").
    FSCTL_ZERO_DATA sets the range of bytes to zero without extending file
    size. The VFS_FALLOCATE_FL_KEEP_SIZE flag should be used even on
    non-sparse files.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Hyunchul Lee <hyc.lee@gmail.com>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ksmbd: use vfs_llseek instead of dereferencing NULL [+ + +]
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Sat Jun 25 13:01:08 2022 +0200

    ksmbd: use vfs_llseek instead of dereferencing NULL
    
    commit 067baa9a37b32b95fdeabccde4b0cb6a2cf95f96 upstream.
    
    By not checking whether llseek is NULL, this might jump to NULL. Also,
    it doesn't check FMODE_LSEEK. Fix this by using vfs_llseek(), which
    always does the right thing.
    
    Fixes: f44158485826 ("cifsd: add file operations")
    Cc: stable@vger.kernel.org
    Cc: linux-cifs@vger.kernel.org
    Cc: Ronnie Sahlberg <lsahlber@redhat.com>
    Cc: Hyunchul Lee <hyc.lee@gmail.com>
    Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Reviewed-by: Namjae Jeon <linkinjeon@kernel.org>
    Acked-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
lib/sbitmap: Fix invalid loop in __sbitmap_queue_get_batch() [+ + +]
Author: wuchi <wuchi.zero@gmail.com>
Date:   Sun Jun 5 22:58:35 2022 +0800

    lib/sbitmap: Fix invalid loop in __sbitmap_queue_get_batch()
    
    commit fbb564a557809466c171b95f8d593a0972450ff2 upstream.
    
    1. Getting next index before continue branch.
    2. Checking free bits when setting the target bits. Otherwise,
    it may reuse the busying bits.
    
    Signed-off-by: wuchi <wuchi.zero@gmail.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    Link: https://lore.kernel.org/r/20220605145835.26916-1-wuchi.zero@gmail.com
    Fixes: 9672b0d43782 ("sbitmap: add __sbitmap_queue_get_batch()")
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 5.18.10 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Jul 7 17:55:01 2022 +0200

    Linux 5.18.10
    
    Link: https://lore.kernel.org/r/20220705115618.410217782@linuxfoundation.org
    Tested-by: Ronald Warsow <rwarsow@gmx.de
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Tested-by: Fenil Jain <fkjainco@gmail.com>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Rudi Heitbaum <rudi@heitbaum.com>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
linux/dim: Fix divide by 0 in RDMA DIM [+ + +]
Author: Tao Liu <thomas.liu@ucloud.cn>
Date:   Mon Jun 27 22:00:04 2022 +0800

    linux/dim: Fix divide by 0 in RDMA DIM
    
    commit 0fe3dbbefb74a8575f61d7801b08dbc50523d60d upstream.
    
    Fix a divide 0 error in rdma_dim_stats_compare() when prev->cpe_ratio ==
    0.
    
    CallTrace:
      Hardware name: H3C R4900 G3/RS33M2C9S, BIOS 2.00.37P21 03/12/2020
      task: ffff880194b78000 task.stack: ffffc90006714000
      RIP: 0010:backport_rdma_dim+0x10e/0x240 [mlx_compat]
      RSP: 0018:ffff880c10e83ec0 EFLAGS: 00010202
      RAX: 0000000000002710 RBX: ffff88096cd7f780 RCX: 0000000000000064
      RDX: 0000000000000000 RSI: 0000000000000002 RDI: 0000000000000001
      RBP: 0000000000000001 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000000 R12: 000000001d7c6c09
      R13: ffff88096cd7f780 R14: ffff880b174fe800 R15: 0000000000000000
      FS:  0000000000000000(0000) GS:ffff880c10e80000(0000)
      knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00000000a0965b00 CR3: 000000000200a003 CR4: 00000000007606e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      PKRU: 55555554
      Call Trace:
       <IRQ>
       ib_poll_handler+0x43/0x80 [ib_core]
       irq_poll_softirq+0xae/0x110
       __do_softirq+0xd1/0x28c
       irq_exit+0xde/0xf0
       do_IRQ+0x54/0xe0
       common_interrupt+0x8f/0x8f
       </IRQ>
       ? cpuidle_enter_state+0xd9/0x2a0
       ? cpuidle_enter_state+0xc7/0x2a0
       ? do_idle+0x170/0x1d0
       ? cpu_startup_entry+0x6f/0x80
       ? start_secondary+0x1b9/0x210
       ? secondary_startup_64+0xa5/0xb0
      Code: 0f 87 e1 00 00 00 8b 4c 24 14 44 8b 43 14 89 c8 4d 63 c8 44 29 c0 99 31 d0 29 d0 31 d2 48 98 48 8d 04 80 48 8d 04 80 48 c1 e0 02 <49> f7 f1 48 83 f8 0a 0f 86 c1 00 00 00 44 39 c1 7f 10 48 89 df
      RIP: backport_rdma_dim+0x10e/0x240 [mlx_compat] RSP: ffff880c10e83ec0
    
    Fixes: f4915455dcf0 ("linux/dim: Implement RDMA adaptive moderation (DIM)")
    Link: https://lore.kernel.org/r/20220627140004.3099-1-thomas.liu@ucloud.cn
    Signed-off-by: Tao Liu <thomas.liu@ucloud.cn>
    Reviewed-by: Max Gurtovoy <mgurtovoy@nvidia.com>
    Acked-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mlxsw: spectrum_router: Fix rollback in tunnel next hop init [+ + +]
Author: Petr Machata <petrm@nvidia.com>
Date:   Wed Jun 29 10:02:05 2022 +0300

    mlxsw: spectrum_router: Fix rollback in tunnel next hop init
    
    commit 665030fd0c1ed9f505932e6e73e7a2c788787a0a upstream.
    
    In mlxsw_sp_nexthop6_init(), a next hop is always added to the router
    linked list, and mlxsw_sp_nexthop_type_init() is invoked afterwards. When
    that function results in an error, the next hop will not have been removed
    from the linked list. As the error is propagated upwards and the caller
    frees the next hop object, the linked list ends up holding an invalid
    object.
    
    A similar issue comes up with mlxsw_sp_nexthop4_init(), where rollback
    block does exist, however does not include the linked list removal.
    
    Both IPv6 and IPv4 next hops have a similar issue with next-hop counter
    rollbacks. As these were introduced in the same patchset as the next hop
    linked list, include the cleanup in this patch.
    
    Fixes: dbe4598c1e92 ("mlxsw: spectrum_router: Keep nexthops in a linked list")
    Fixes: a5390278a5eb ("mlxsw: spectrum: Add support for setting counters on nexthops")
    Signed-off-by: Petr Machata <petrm@nvidia.com>
    Reviewed-by: Amit Cohen <amcohen@nvidia.com>
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Link: https://lore.kernel.org/r/20220629070205.803952-1-idosch@nvidia.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mptcp: fix conflict with [+ + +]
Author: Ossama Othman <ossama.othman@intel.com>
Date:   Mon Jun 27 18:02:42 2022 -0700

    mptcp: fix conflict with <netinet/in.h>
    
    commit 06e445f740c1a0fe5d16b3dff8a4ef18e124e54e upstream.
    
    Including <linux/mptcp.h> before the C library <netinet/in.h> header
    causes symbol redefinition errors at compile-time due to duplicate
    declarations and definitions in the <linux/in.h> header included by
    <linux/mptcp.h>.
    
    Explicitly include <netinet/in.h> before <linux/in.h> in
    <linux/mptcp.h> when __KERNEL__ is not defined so that the C library
    compatibility logic in <linux/libc-compat.h> is enabled when including
    <linux/mptcp.h> in user space code.
    
    Fixes: c11c5906bc0a ("mptcp: add MPTCP_SUBFLOW_ADDRS getsockopt support")
    Signed-off-by: Ossama Othman <ossama.othman@intel.com>
    Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: fix race on unaccepted mptcp sockets [+ + +]
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Mon Jun 27 18:02:40 2022 -0700

    mptcp: fix race on unaccepted mptcp sockets
    
    commit 6aeed9045071f2252ff4e98fc13d1e304f33e5b0 upstream.
    
    When the listener socket owning the relevant request is closed,
    it frees the unaccepted subflows and that causes later deletion
    of the paired MPTCP sockets.
    
    The mptcp socket's worker can run in the time interval between such delete
    operations. When that happens, any access to msk->first will cause an UaF
    access, as the subflow cleanup did not cleared such field in the mptcp
    socket.
    
    Address the issue explicitly traversing the listener socket accept
    queue at close time and performing the needed cleanup on the pending
    msk.
    
    Note that the locking is a bit tricky, as we need to acquire the msk
    socket lock, while still owning the subflow socket one.
    
    Fixes: 86e39e04482b ("mptcp: keep track of local endpoint still available for each msk")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net/dsa/hirschmann: Add missing of_node_get() in hellcreek_led_setup() [+ + +]
Author: Liang He <windhl@126.com>
Date:   Wed Jun 22 12:06:21 2022 +0800

    net/dsa/hirschmann: Add missing of_node_get() in hellcreek_led_setup()
    
    commit 16d584d2fc8f4ea36203af45a76becd7093586f1 upstream.
    
    of_find_node_by_name() will decrease the refcount of its first arg and
    we need a of_node_get() to keep refcount balance.
    
    Fixes: 7d9ee2e8ff15 ("net: dsa: hellcreek: Add PTP status LEDs")
    Signed-off-by: Liang He <windhl@126.com>
    Link: https://lore.kernel.org/r/20220622040621.4094304-1-windhl@126.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net/sched: act_api: Notify user space if any actions were flushed before error [+ + +]
Author: Victor Nogueira <victor@mojatatu.com>
Date:   Thu Jun 23 11:07:41 2022 -0300

    net/sched: act_api: Notify user space if any actions were flushed before error
    
    commit 76b39b94382f9e0a639e1c70c3253de248cc4c83 upstream.
    
    If during an action flush operation one of the actions is still being
    referenced, the flush operation is aborted and the kernel returns to
    user space with an error. However, if the kernel was able to flush, for
    example, 3 actions and failed on the fourth, the kernel will not notify
    user space that it deleted 3 actions before failing.
    
    This patch fixes that behaviour by notifying user space of how many
    actions were deleted before flush failed and by setting extack with a
    message describing what happened.
    
    Fixes: 55334a5db5cd ("net_sched: act: refuse to remove bound action outside")
    Signed-off-by: Victor Nogueira <victor@mojatatu.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net: asix: fix "can't send until first packet is send" issue [+ + +]
Author: Oleksij Rempel <linux@rempel-privat.de>
Date:   Fri Jun 24 09:51:38 2022 +0200

    net: asix: fix "can't send until first packet is send" issue
    
    commit 805206e66fab4ba1e0ebd19402006d62cd1d4902 upstream.
    
    If cable is attached after probe sequence, the usbnet framework would
    not automatically start processing RX packets except at least one
    packet was transmitted.
    
    On systems with any kind of address auto configuration this issue was
    not detected, because some packets are send immediately after link state
    is changed to "running".
    
    With this patch we will notify usbnet about link status change provided by the
    PHYlib.
    
    Fixes: e532a096be0e ("net: usb: asix: ax88772: add phylib support")
    Reported-by: Anton Lundin <glance@acc.umu.se>
    Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Tested-by: Anton Lundin <glance@acc.umu.se>
    Link: https://lore.kernel.org/r/20220624075139.3139300-1-o.rempel@pengutronix.de
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: bonding: fix possible NULL deref in rlb code [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Jun 27 10:28:13 2022 +0000

    net: bonding: fix possible NULL deref in rlb code
    
    commit ab84db251c04d38b8dc7ee86e13d4050bedb1c88 upstream.
    
    syzbot has two reports involving the same root cause.
    
    bond_alb_initialize() must not set bond->alb_info.rlb_enabled
    if a memory allocation error is detected.
    
    Report 1:
    
    general protection fault, probably for non-canonical address 0xdffffc0000000002: 0000 [#1] PREEMPT SMP KASAN
    KASAN: null-ptr-deref in range [0x0000000000000010-0x0000000000000017]
    CPU: 0 PID: 12276 Comm: kworker/u4:10 Not tainted 5.19.0-rc3-syzkaller-00132-g3b89b511ea0c #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: netns cleanup_net
    RIP: 0010:rlb_clear_slave+0x10e/0x690 drivers/net/bonding/bond_alb.c:393
    Code: 8e fc 83 fb ff 0f 84 74 02 00 00 e8 cc 2a 8e fc 48 8b 44 24 08 89 dd 48 c1 e5 06 4c 8d 34 28 49 8d 7e 14 48 89 f8 48 c1 e8 03 <42> 0f b6 14 20 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85
    RSP: 0018:ffffc90018a8f678 EFLAGS: 00010203
    RAX: 0000000000000002 RBX: 0000000000000000 RCX: 0000000000000000
    RDX: ffff88803375bb00 RSI: ffffffff84ec4ac4 RDI: 0000000000000014
    RBP: 0000000000000000 R08: 0000000000000005 R09: 00000000ffffffff
    R10: 0000000000000000 R11: 0000000000000000 R12: dffffc0000000000
    R13: ffff8880ac889000 R14: 0000000000000000 R15: ffff88815a668c80
    FS: 0000000000000000(0000) GS:ffff8880b9a00000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00005597077e10b0 CR3: 0000000026668000 CR4: 00000000003506f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
    <TASK>
    bond_alb_deinit_slave+0x43c/0x6b0 drivers/net/bonding/bond_alb.c:1663
    __bond_release_one.cold+0x383/0xd53 drivers/net/bonding/bond_main.c:2370
    bond_slave_netdev_event drivers/net/bonding/bond_main.c:3778 [inline]
    bond_netdev_event+0x993/0xad0 drivers/net/bonding/bond_main.c:3889
    notifier_call_chain+0xb5/0x200 kernel/notifier.c:87
    call_netdevice_notifiers_info+0xb5/0x130 net/core/dev.c:1945
    call_netdevice_notifiers_extack net/core/dev.c:1983 [inline]
    call_netdevice_notifiers net/core/dev.c:1997 [inline]
    unregister_netdevice_many+0x948/0x18b0 net/core/dev.c:10839
    default_device_exit_batch+0x449/0x590 net/core/dev.c:11333
    ops_exit_list+0x125/0x170 net/core/net_namespace.c:167
    cleanup_net+0x4ea/0xb00 net/core/net_namespace.c:594
    process_one_work+0x996/0x1610 kernel/workqueue.c:2289
    worker_thread+0x665/0x1080 kernel/workqueue.c:2436
    kthread+0x2e9/0x3a0 kernel/kthread.c:376
    ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:302
    </TASK>
    
    Report 2:
    
    general protection fault, probably for non-canonical address 0xdffffc0000000006: 0000 [#1] PREEMPT SMP KASAN
    KASAN: null-ptr-deref in range [0x0000000000000030-0x0000000000000037]
    CPU: 1 PID: 5206 Comm: syz-executor.1 Not tainted 5.18.0-syzkaller-12108-g58f9d52ff689 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:rlb_req_update_slave_clients+0x109/0x2f0 drivers/net/bonding/bond_alb.c:502
    Code: 5d 18 8f fc 41 80 3e 00 0f 85 a5 01 00 00 89 d8 48 c1 e0 06 49 03 84 24 68 01 00 00 48 8d 78 30 49 89 c7 48 89 fa 48 c1 ea 03 <80> 3c 2a 00 0f 85 98 01 00 00 4d 39 6f 30 75 83 e8 22 18 8f fc 49
    RSP: 0018:ffffc9000300ee80 EFLAGS: 00010206
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffc90016c11000
    RDX: 0000000000000006 RSI: ffffffff84eb6bf3 RDI: 0000000000000030
    RBP: dffffc0000000000 R08: 0000000000000005 R09: 00000000ffffffff
    R10: 0000000000000000 R11: 0000000000000000 R12: ffff888027c80c80
    R13: ffff88807d7ff800 R14: ffffed1004f901bd R15: 0000000000000000
    FS:  00007f6f46c58700(0000) GS:ffff8880b9b00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000020010000 CR3: 00000000516cc000 CR4: 00000000003506e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     alb_fasten_mac_swap+0x886/0xa80 drivers/net/bonding/bond_alb.c:1070
     bond_alb_handle_active_change+0x624/0x1050 drivers/net/bonding/bond_alb.c:1765
     bond_change_active_slave+0xfa1/0x29b0 drivers/net/bonding/bond_main.c:1173
     bond_select_active_slave+0x23f/0xa50 drivers/net/bonding/bond_main.c:1253
     bond_enslave+0x3b34/0x53b0 drivers/net/bonding/bond_main.c:2159
     do_set_master+0x1c8/0x220 net/core/rtnetlink.c:2577
     rtnl_newlink_create net/core/rtnetlink.c:3380 [inline]
     __rtnl_newlink+0x13ac/0x17e0 net/core/rtnetlink.c:3580
     rtnl_newlink+0x64/0xa0 net/core/rtnetlink.c:3593
     rtnetlink_rcv_msg+0x43a/0xc90 net/core/rtnetlink.c:6089
     netlink_rcv_skb+0x153/0x420 net/netlink/af_netlink.c:2501
     netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
     netlink_unicast+0x543/0x7f0 net/netlink/af_netlink.c:1345
     netlink_sendmsg+0x917/0xe10 net/netlink/af_netlink.c:1921
     sock_sendmsg_nosec net/socket.c:714 [inline]
     sock_sendmsg+0xcf/0x120 net/socket.c:734
     ____sys_sendmsg+0x6eb/0x810 net/socket.c:2492
     ___sys_sendmsg+0xf3/0x170 net/socket.c:2546
     __sys_sendmsg net/socket.c:2575 [inline]
     __do_sys_sendmsg net/socket.c:2584 [inline]
     __se_sys_sendmsg net/socket.c:2582 [inline]
     __x64_sys_sendmsg+0x132/0x220 net/socket.c:2582
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x46/0xb0
    RIP: 0033:0x7f6f45a89109
    Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f6f46c58168 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 00007f6f45b9c030 RCX: 00007f6f45a89109
    RDX: 0000000000000000 RSI: 0000000020000080 RDI: 0000000000000006
    RBP: 00007f6f45ae308d R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    R13: 00007ffed99029af R14: 00007f6f46c58300 R15: 0000000000022000
     </TASK>
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Jay Vosburgh <j.vosburgh@gmail.com>
    Cc: Veaceslav Falico <vfalico@gmail.com>
    Cc: Andy Gospodarek <andy@greyhouse.net>
    Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com>
    Link: https://lore.kernel.org/r/20220627102813.126264-1-edumazet@google.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: bonding: fix use-after-free after 802.3ad slave unbind [+ + +]
Author: Yevhen Orlov <yevhen.orlov@plvision.eu>
Date:   Wed Jun 29 04:29:14 2022 +0300

    net: bonding: fix use-after-free after 802.3ad slave unbind
    
    commit 050133e1aa2cb49bb17be847d48a4431598ef562 upstream.
    
    commit 0622cab0341c ("bonding: fix 802.3ad aggregator reselection"),
    resolve case, when there is several aggregation groups in the same bond.
    bond_3ad_unbind_slave will invalidate (clear) aggregator when
    __agg_active_ports return zero. So, ad_clear_agg can be executed even, when
    num_of_ports!=0. Than bond_3ad_unbind_slave can be executed again for,
    previously cleared aggregator. NOTE: at this time bond_3ad_unbind_slave
    will not update slave ports list, because lag_ports==NULL. So, here we
    got slave ports, pointing to freed aggregator memory.
    
    Fix with checking actual number of ports in group (as was before
    commit 0622cab0341c ("bonding: fix 802.3ad aggregator reselection") ),
    before ad_clear_agg().
    
    The KASAN logs are as follows:
    
    [  767.617392] ==================================================================
    [  767.630776] BUG: KASAN: use-after-free in bond_3ad_state_machine_handler+0x13dc/0x1470
    [  767.638764] Read of size 2 at addr ffff00011ba9d430 by task kworker/u8:7/767
    [  767.647361] CPU: 3 PID: 767 Comm: kworker/u8:7 Tainted: G           O 5.15.11 #15
    [  767.655329] Hardware name: DNI AmazonGo1 A7040 board (DT)
    [  767.660760] Workqueue: lacp_1 bond_3ad_state_machine_handler
    [  767.666468] Call trace:
    [  767.668930]  dump_backtrace+0x0/0x2d0
    [  767.672625]  show_stack+0x24/0x30
    [  767.675965]  dump_stack_lvl+0x68/0x84
    [  767.679659]  print_address_description.constprop.0+0x74/0x2b8
    [  767.685451]  kasan_report+0x1f0/0x260
    [  767.689148]  __asan_load2+0x94/0xd0
    [  767.692667]  bond_3ad_state_machine_handler+0x13dc/0x1470
    
    Fixes: 0622cab0341c ("bonding: fix 802.3ad aggregator reselection")
    Co-developed-by: Maksym Glubokiy <maksym.glubokiy@plvision.eu>
    Signed-off-by: Maksym Glubokiy <maksym.glubokiy@plvision.eu>
    Signed-off-by: Yevhen Orlov <yevhen.orlov@plvision.eu>
    Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com>
    Link: https://lore.kernel.org/r/20220629012914.361-1-yevhen.orlov@plvision.eu
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: dp83822: disable false carrier interrupt [+ + +]
Author: Enguerrand de Ribaucourt <enguerrand.de-ribaucourt@savoirfairelinux.com>
Date:   Thu Jun 23 15:46:44 2022 +0200

    net: dp83822: disable false carrier interrupt
    
    commit c96614eeab663646f57f67aa591e015abd8bd0ba upstream.
    
    When unplugging an Ethernet cable, false carrier events were produced by
    the PHY at a very high rate. Once the false carrier counter full, an
    interrupt was triggered every few clock cycles until the cable was
    replugged. This resulted in approximately 10k/s interrupts.
    
    Since the false carrier counter (FCSCR) is never used, we can safely
    disable this interrupt.
    
    In addition to improving performance, this also solved MDIO read
    timeouts I was randomly encountering with an i.MX8 fec MAC because of
    the interrupt flood. The interrupt count and MDIO timeout fix were
    tested on a v5.4.110 kernel.
    
    Fixes: 87461f7a58ab ("net: phy: DP83822 initial driver submission")
    Signed-off-by: Enguerrand de Ribaucourt <enguerrand.de-ribaucourt@savoirfairelinux.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: dp83822: disable rx error interrupt [+ + +]
Author: Enguerrand de Ribaucourt <enguerrand.de-ribaucourt@savoirfairelinux.com>
Date:   Thu Jun 23 15:46:45 2022 +0200

    net: dp83822: disable rx error interrupt
    
    commit 0e597e2affb90d6ea48df6890d882924acf71e19 upstream.
    
    Some RX errors, notably when disconnecting the cable, increase the RCSR
    register. Once half full (0x7fff), an interrupt flood is generated. I
    measured ~3k/s interrupts even after the RX errors transfer was
    stopped.
    
    Since we don't read and clear the RCSR register, we should disable this
    interrupt.
    
    Fixes: 87461f7a58ab ("net: phy: DP83822 initial driver submission")
    Signed-off-by: Enguerrand de Ribaucourt <enguerrand.de-ribaucourt@savoirfairelinux.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: dsa: bcm_sf2: force pause link settings [+ + +]
Author: Doug Berger <opendmb@gmail.com>
Date:   Wed Jun 22 20:02:04 2022 -0700

    net: dsa: bcm_sf2: force pause link settings
    
    commit 7c97bc0128b2eecc703106112679a69d446d1a12 upstream.
    
    The pause settings reported by the PHY should also be applied to the GMII port
    status override otherwise the switch will not generate pause frames towards the
    link partner despite the advertisement saying otherwise.
    
    Fixes: 246d7f773c13 ("net: dsa: add Broadcom SF2 switch driver")
    Signed-off-by: Doug Berger <opendmb@gmail.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/20220623030204.1966851-1-f.fainelli@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: dsa: felix: fix race between reading PSFP stats and port stats [+ + +]
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Wed Jun 29 21:30:07 2022 +0300

    net: dsa: felix: fix race between reading PSFP stats and port stats
    
    commit 58bf4db695287c4bb2a5fc9fc12c78fdd4c36894 upstream.
    
    Both PSFP stats and the port stats read by ocelot_check_stats_work() are
    indirectly read through the same mechanism - write to STAT_CFG:STAT_VIEW,
    read from SYS:STAT:CNT[n].
    
    It's just that for port stats, we write STAT_VIEW with the index of the
    port, and for PSFP stats, we write STAT_VIEW with the filter index.
    
    So if we allow them to run concurrently, ocelot_check_stats_work() may
    change the view from vsc9959_psfp_counters_get(), and vice versa.
    
    Fixes: 7d4b564d6add ("net: dsa: felix: support psfp filter on vsc9959")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Link: https://lore.kernel.org/r/20220629183007.3808130-1-vladimir.oltean@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: fix IFF_TX_SKB_NO_LINEAR definition [+ + +]
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Jun 23 16:32:32 2022 +0300

    net: fix IFF_TX_SKB_NO_LINEAR definition
    
    commit 3b89b511ea0c705cc418440e2abf9d692a556d84 upstream.
    
    The "1<<31" shift has a sign extension bug so IFF_TX_SKB_NO_LINEAR is
    0xffffffff80000000 instead of 0x0000000080000000.
    
    Fixes: c2ff53d8049f ("net: Add priv_flags for allow tx skb without linear")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
    Link: https://lore.kernel.org/r/YrRrcGttfEVnf85Q@kili
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: ipv6: unexport __init-annotated seg6_hmac_net_init() [+ + +]
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Tue Jun 28 11:31:34 2022 +0800

    net: ipv6: unexport __init-annotated seg6_hmac_net_init()
    
    commit 53ad46169fe2996fe1b623ba6c9c4fa33847876f upstream.
    
    As of commit 5801f064e351 ("net: ipv6: unexport __init-annotated seg6_hmac_init()"),
    EXPORT_SYMBOL and __init is a bad combination because the .init.text
    section is freed up after the initialization. Hence, modules cannot
    use symbols annotated __init. The access to a freed symbol may end up
    with kernel panic.
    
    This remove the EXPORT_SYMBOL to fix modpost warning:
    
    WARNING: modpost: vmlinux.o(___ksymtab+seg6_hmac_net_init+0x0): Section mismatch in reference from the variable __ksymtab_seg6_hmac_net_init to the function .init.text:seg6_hmac_net_init()
    The symbol seg6_hmac_net_init is exported and annotated __init
    Fix this by removing the __init annotation of seg6_hmac_net_init or drop the export.
    
    Fixes: bf355b8d2c30 ("ipv6: sr: add core files for SR HMAC support")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Link: https://lore.kernel.org/r/20220628033134.21088-1-yuehaibing@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: phy: ax88772a: fix lost pause advertisement configuration [+ + +]
Author: Oleksij Rempel <linux@rempel-privat.de>
Date:   Tue Jun 28 13:43:49 2022 +0200

    net: phy: ax88772a: fix lost pause advertisement configuration
    
    commit fa152f626b24ec2ca3489100d8c5c0a0bce4e2ef upstream.
    
    In case of asix_ax88772a_link_change_notify() workaround, we run soft
    reset which will automatically clear MII_ADVERTISE configuration. The
    PHYlib framework do not know about changed configuration state of the
    PHY, so we need use phy_init_hw() to reinit PHY configuration.
    
    Fixes: dde258469257 ("net: usb/phy: asix: add support for ax88772A/C PHYs")
    Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/20220628114349.3929928-1-o.rempel@pengutronix.de
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: phy: Don't trigger state machine while in suspend [+ + +]
Author: Lukas Wunner <lukas@wunner.de>
Date:   Tue Jun 28 12:15:08 2022 +0200

    net: phy: Don't trigger state machine while in suspend
    
    commit 1758bde2e4aa5ff188d53e7d9d388bbb7e12eebb upstream.
    
    Upon system sleep, mdio_bus_phy_suspend() stops the phy_state_machine(),
    but subsequent interrupts may retrigger it:
    
    They may have been left enabled to facilitate wakeup and are not
    quiesced until the ->suspend_noirq() phase.  Unwanted interrupts may
    hence occur between mdio_bus_phy_suspend() and dpm_suspend_noirq(),
    as well as between dpm_resume_noirq() and mdio_bus_phy_resume().
    
    Retriggering the phy_state_machine() through an interrupt is not only
    undesirable for the reason given in mdio_bus_phy_suspend() (freezing it
    midway with phydev->lock held), but also because the PHY may be
    inaccessible after it's suspended:  Accesses to USB-attached PHYs are
    blocked once usb_suspend_both() clears the can_submit flag and PHYs on
    PCI network cards may become inaccessible upon suspend as well.
    
    Amend phy_interrupt() to avoid triggering the state machine if the PHY
    is suspended.  Signal wakeup instead if the attached net_device or its
    parent has been configured as a wakeup source.  (Those conditions are
    identical to mdio_bus_phy_may_suspend().)  Postpone handling of the
    interrupt until the PHY has resumed.
    
    Before stopping the phy_state_machine() in mdio_bus_phy_suspend(),
    wait for a concurrent phy_interrupt() to run to completion.  That is
    necessary because phy_interrupt() may have checked the PHY's suspend
    status before the system sleep transition commenced and it may thus
    retrigger the state machine after it was stopped.
    
    Likewise, after re-enabling interrupt handling in mdio_bus_phy_resume(),
    wait for a concurrent phy_interrupt() to complete to ensure that
    interrupts which it postponed are properly rerun.
    
    The issue was exposed by commit 1ce8b37241ed ("usbnet: smsc95xx: Forward
    PHY interrupts to PHY driver to avoid polling"), but has existed since
    forever.
    
    Fixes: 541cd3ee00a4 ("phylib: Fix deadlock on resume")
    Link: https://lore.kernel.org/netdev/a5315a8a-32c2-962f-f696-de9a26d30091@samsung.com/
    Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: stable@vger.kernel.org # v2.6.33+
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/b7f386d04e9b5b0e2738f0125743e30676f309ef.1656410895.git.lukas@wunner.de
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: rose: fix UAF bugs caused by timer handler [+ + +]
Author: Duoming Zhou <duoming@zju.edu.cn>
Date:   Wed Jun 29 08:26:40 2022 +0800

    net: rose: fix UAF bugs caused by timer handler
    
    commit 9cc02ede696272c5271a401e4f27c262359bc2f6 upstream.
    
    There are UAF bugs in rose_heartbeat_expiry(), rose_timer_expiry()
    and rose_idletimer_expiry(). The root cause is that del_timer()
    could not stop the timer handler that is running and the refcount
    of sock is not managed properly.
    
    One of the UAF bugs is shown below:
    
        (thread 1)          |        (thread 2)
                            |  rose_bind
                            |  rose_connect
                            |    rose_start_heartbeat
    rose_release            |    (wait a time)
      case ROSE_STATE_0     |
      rose_destroy_socket   |  rose_heartbeat_expiry
        rose_stop_heartbeat |
        sock_put(sk)        |    ...
      sock_put(sk) // FREE  |
                            |    bh_lock_sock(sk) // USE
    
    The sock is deallocated by sock_put() in rose_release() and
    then used by bh_lock_sock() in rose_heartbeat_expiry().
    
    Although rose_destroy_socket() calls rose_stop_heartbeat(),
    it could not stop the timer that is running.
    
    The KASAN report triggered by POC is shown below:
    
    BUG: KASAN: use-after-free in _raw_spin_lock+0x5a/0x110
    Write of size 4 at addr ffff88800ae59098 by task swapper/3/0
    ...
    Call Trace:
     <IRQ>
     dump_stack_lvl+0xbf/0xee
     print_address_description+0x7b/0x440
     print_report+0x101/0x230
     ? irq_work_single+0xbb/0x140
     ? _raw_spin_lock+0x5a/0x110
     kasan_report+0xed/0x120
     ? _raw_spin_lock+0x5a/0x110
     kasan_check_range+0x2bd/0x2e0
     _raw_spin_lock+0x5a/0x110
     rose_heartbeat_expiry+0x39/0x370
     ? rose_start_heartbeat+0xb0/0xb0
     call_timer_fn+0x2d/0x1c0
     ? rose_start_heartbeat+0xb0/0xb0
     expire_timers+0x1f3/0x320
     __run_timers+0x3ff/0x4d0
     run_timer_softirq+0x41/0x80
     __do_softirq+0x233/0x544
     irq_exit_rcu+0x41/0xa0
     sysvec_apic_timer_interrupt+0x8c/0xb0
     </IRQ>
     <TASK>
     asm_sysvec_apic_timer_interrupt+0x1b/0x20
    RIP: 0010:default_idle+0xb/0x10
    RSP: 0018:ffffc9000012fea0 EFLAGS: 00000202
    RAX: 000000000000bcae RBX: ffff888006660f00 RCX: 000000000000bcae
    RDX: 0000000000000001 RSI: ffffffff843a11c0 RDI: ffffffff843a1180
    RBP: dffffc0000000000 R08: dffffc0000000000 R09: ffffed100da36d46
    R10: dfffe9100da36d47 R11: ffffffff83cf0950 R12: 0000000000000000
    R13: 1ffff11000ccc1e0 R14: ffffffff8542af28 R15: dffffc0000000000
    ...
    Allocated by task 146:
     __kasan_kmalloc+0xc4/0xf0
     sk_prot_alloc+0xdd/0x1a0
     sk_alloc+0x2d/0x4e0
     rose_create+0x7b/0x330
     __sock_create+0x2dd/0x640
     __sys_socket+0xc7/0x270
     __x64_sys_socket+0x71/0x80
     do_syscall_64+0x43/0x90
     entry_SYSCALL_64_after_hwframe+0x46/0xb0
    
    Freed by task 152:
     kasan_set_track+0x4c/0x70
     kasan_set_free_info+0x1f/0x40
     ____kasan_slab_free+0x124/0x190
     kfree+0xd3/0x270
     __sk_destruct+0x314/0x460
     rose_release+0x2fa/0x3b0
     sock_close+0xcb/0x230
     __fput+0x2d9/0x650
     task_work_run+0xd6/0x160
     exit_to_user_mode_loop+0xc7/0xd0
     exit_to_user_mode_prepare+0x4e/0x80
     syscall_exit_to_user_mode+0x20/0x40
     do_syscall_64+0x4f/0x90
     entry_SYSCALL_64_after_hwframe+0x46/0xb0
    
    This patch adds refcount of sock when we use functions
    such as rose_start_heartbeat() and so on to start timer,
    and decreases the refcount of sock when timer is finished
    or deleted by functions such as rose_stop_heartbeat()
    and so on. As a result, the UAF bugs could be mitigated.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Duoming Zhou <duoming@zju.edu.cn>
    Tested-by: Duoming Zhou <duoming@zju.edu.cn>
    Link: https://lore.kernel.org/r/20220629002640.5693-1-duoming@zju.edu.cn
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: sparx5: Add handling of host MDB entries [+ + +]
Author: Casper Andersson <casper.casan@gmail.com>
Date:   Tue May 3 11:39:22 2022 +0200

    net: sparx5: Add handling of host MDB entries
    
    [ Upstream commit 1c1ed5a48411e1686997157c21633653fbe045c6 ]
    
    Handle adding and removing MDB entries for host
    
    Signed-off-by: Casper Andersson <casper.casan@gmail.com>
    Link: https://lore.kernel.org/r/20220503093922.1630804-1-casper.casan@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: sparx5: mdb add/del handle non-sparx5 devices [+ + +]
Author: Casper Andersson <casper.casan@gmail.com>
Date:   Thu Jun 30 14:22:26 2022 +0200

    net: sparx5: mdb add/del handle non-sparx5 devices
    
    [ Upstream commit 9c5de246c1dbe785268fc2e83c88624b92e4ec93 ]
    
    When adding/deleting mdb entries on other net_devices, eg., tap
    interfaces, it should not crash.
    
    Fixes: 3bacfccdcb2d ("net: sparx5: Add mdb handlers")
    Signed-off-by: Casper Andersson <casper.casan@gmail.com>
    Reviewed-by: Steen Hegelund <Steen.Hegelund@microchip.com>
    Link: https://lore.kernel.org/r/20220630122226.316812-1-casper.casan@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: tun: avoid disabling NAPI twice [+ + +]
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Wed Jun 29 11:19:10 2022 -0700

    net: tun: avoid disabling NAPI twice
    
    commit ff1fa2081d173b01cebe2fbf0a2d0f1cee9ce4b5 upstream.
    
    Eric reports that syzbot made short work out of my speculative
    fix. Indeed when queue gets detached its tfile->tun remains,
    so we would try to stop NAPI twice with a detach(), close()
    sequence.
    
    Alternative fix would be to move tun_napi_disable() to
    tun_detach_all() and let the NAPI run after the queue
    has been detached.
    
    Fixes: a8fc8cb5692a ("net: tun: stop NAPI when detaching queues")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Reported-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20220629181911.372047-1-kuba@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: tun: stop NAPI when detaching queues [+ + +]
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Wed Jun 22 21:21:05 2022 -0700

    net: tun: stop NAPI when detaching queues
    
    commit a8fc8cb5692aebb9c6f7afd4265366d25dcd1d01 upstream.
    
    While looking at a syzbot report I noticed the NAPI only gets
    disabled before it's deleted. I think that user can detach
    the queue before destroying the device and the NAPI will never
    be stopped.
    
    Fixes: 943170998b20 ("tun: enable NAPI for TUN/TAP driver")
    Acked-by: Petar Penkov <ppenkov@aviatrix.com>
    Link: https://lore.kernel.org/r/20220623042105.2274812-1-kuba@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: tun: unlink NAPI from device on destruction [+ + +]
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Wed Jun 22 21:20:39 2022 -0700

    net: tun: unlink NAPI from device on destruction
    
    commit 3b9bc84d311104906d2b4995a9a02d7b7ddab2db upstream.
    
    Syzbot found a race between tun file and device destruction.
    NAPIs live in struct tun_file which can get destroyed before
    the netdev so we have to del them explicitly. The current
    code is missing deleting the NAPI if the queue was detached
    first.
    
    Fixes: 943170998b20 ("tun: enable NAPI for TUN/TAP driver")
    Reported-by: syzbot+b75c138e9286ac742647@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20220623042039.2274708-1-kuba@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: usb: asix: do not force pause frames support [+ + +]
Author: Oleksij Rempel <linux@rempel-privat.de>
Date:   Fri Jun 24 09:51:39 2022 +0200

    net: usb: asix: do not force pause frames support
    
    commit ce95ab775f8d8e89a038c0e5611a7381a2ef8e43 upstream.
    
    We should respect link partner capabilities and not force flow control
    support on every link. Even more, in current state the MAC driver do not
    advertises pause support so we should not keep flow control enabled at
    all.
    
    Fixes: e532a096be0e ("net: usb: asix: ax88772: add phylib support")
    Reported-by: Anton Lundin <glance@acc.umu.se>
    Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Tested-by: Anton Lundin <glance@acc.umu.se>
    Link: https://lore.kernel.org/r/20220624075139.3139300-2-o.rempel@pengutronix.de
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: usb: ax88179_178a: Fix packet receiving [+ + +]
Author: Jose Alonso <joalonsof@gmail.com>
Date:   Tue Jun 28 12:13:02 2022 -0300

    net: usb: ax88179_178a: Fix packet receiving
    
    commit f8ebb3ac881b17712e1d5967c97ab1806b16d3d6 upstream.
    
    This patch corrects packet receiving in ax88179_rx_fixup.
    
    - problem observed:
      ifconfig shows allways a lot of 'RX Errors' while packets
      are received normally.
    
      This occurs because ax88179_rx_fixup does not recognise properly
      the usb urb received.
      The packets are normally processed and at the end, the code exits
      with 'return 0', generating RX Errors.
      (pkt_cnt==-2 and ptk_hdr over field rx_hdr trying to identify
       another packet there)
    
      This is a usb urb received by "tcpdump -i usbmon2 -X" on a
      little-endian CPU:
      0x0000:  eeee f8e3 3b19 87a0 94de 80e3 daac 0800
               ^         packet 1 start (pkt_len = 0x05ec)
               ^^^^      IP alignment pseudo header
                    ^    ethernet packet start
               last byte ethernet packet   v
               padding (8-bytes aligned)     vvvv vvvv
      0x05e0:  c92d d444 1420 8a69 83dd 272f e82b 9811
      0x05f0:  eeee f8e3 3b19 87a0 94de 80e3 daac 0800
      ...      ^ packet 2
      0x0be0:  eeee f8e3 3b19 87a0 94de 80e3 daac 0800
      ...
      0x1130:  9d41 9171 8a38 0ec5 eeee f8e3 3b19 87a0
      ...
      0x1720:  8cfc 15ff 5e4c e85c eeee f8e3 3b19 87a0
      ...
      0x1d10:  ecfa 2a3a 19ab c78c eeee f8e3 3b19 87a0
      ...
      0x2070:  eeee f8e3 3b19 87a0 94de 80e3 daac 0800
      ...      ^ packet 7
      0x2120:  7c88 4ca5 5c57 7dcc 0d34 7577 f778 7e0a
      0x2130:  f032 e093 7489 0740 3008 ec05 0000 0080
                                   ====1==== ====2====
               hdr_off             ^
               pkt_len = 0x05ec         ^^^^
               AX_RXHDR_*=0x00830  ^^^^   ^
               pkt_len = 0                        ^^^^
               AX_RXHDR_DROP_ERR=0x80000000  ^^^^   ^
      0x2140:  3008 ec05 0000 0080 3008 5805 0000 0080
      0x2150:  3008 ec05 0000 0080 3008 ec05 0000 0080
      0x2160:  3008 5803 0000 0080 3008 c800 0000 0080
               ===11==== ===12==== ===13==== ===14====
      0x2170:  0000 0000 0e00 3821
                         ^^^^ ^^^^ rx_hdr
                         ^^^^      pkt_cnt=14
                              ^^^^ hdr_off=0x2138
               ^^^^ ^^^^           padding
    
      The dump shows that pkt_cnt is the number of entrys in the
      per-packet metadata. It is "2 * packet count".
      Each packet have two entrys. The first have a valid
      value (pkt_len and AX_RXHDR_*) and the second have a
      dummy-header 0x80000000 (pkt_len=0 with AX_RXHDR_DROP_ERR).
      Why exists dummy-header for each packet?!?
      My guess is that this was done probably to align the
      entry for each packet to 64-bits and maintain compatibility
      with old firmware.
      There is also a padding (0x00000000) before the rx_hdr to
      align the end of rx_hdr to 64-bit.
      Note that packets have a alignment of 64-bits (8-bytes).
    
      This patch assumes that the dummy-header and the last
      padding are optional. So it preserves semantics and
      recognises the same valid packets as the current code.
    
      This patch was made using only the dumpfile information and
      tested with only one device:
      0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
    
    Fixes: 57bc3d3ae8c1 ("net: usb: ax88179_178a: Fix out-of-bounds accesses in RX fixup")
    Fixes: e2ca90c276e1 ("ax88179_178a: ASIX AX88179_178A USB 3.0/2.0 to gigabit ethernet adapter driver")
    Signed-off-by: Jose Alonso <joalonsof@gmail.com>
    Acked-by: Paolo Abeni <pabeni@redhat.com>
    Link: https://lore.kernel.org/r/d6970bb04bf67598af4d316eaeb1792040b18cfd.camel@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
netfilter: nft_dynset: restore set element counter when failing to update [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Tue Jun 21 14:01:41 2022 +0200

    netfilter: nft_dynset: restore set element counter when failing to update
    
    commit 05907f10e235680cc7fb196810e4ad3215d5e648 upstream.
    
    This patch fixes a race condition.
    
    nft_rhash_update() might fail for two reasons:
    
    - Element already exists in the hashtable.
    - Another packet won race to insert an entry in the hashtable.
    
    In both cases, new() has already bumped the counter via atomic_add_unless(),
    therefore, decrement the set element counter.
    
    Fixes: 22fe54d5fefc ("netfilter: nf_tables: add support for dynamic set updates")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nfc: nfcmrvl: Fix irq_of_parse_and_map() return value [+ + +]
Author: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Date:   Mon Jun 27 14:40:48 2022 +0200

    nfc: nfcmrvl: Fix irq_of_parse_and_map() return value
    
    commit 5a478a653b4cca148d5c89832f007ec0809d7e6d upstream.
    
    The irq_of_parse_and_map() returns 0 on failure, not a negative ERRNO.
    
    Reported-by: Lv Ruyi <lv.ruyi@zte.com.cn>
    Fixes: caf6e49bf6d0 ("NFC: nfcmrvl: add spi driver")
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Link: https://lore.kernel.org/r/20220627124048.296253-1-krzysztof.kozlowski@linaro.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
NFC: nxp-nci: Don't issue a zero length i2c_master_read() [+ + +]
Author: Michael Walle <michael@walle.cc>
Date:   Mon Jun 27 19:06:42 2022 +0200

    NFC: nxp-nci: Don't issue a zero length i2c_master_read()
    
    commit eddd95b9423946aaacb55cac6a9b2cea8ab944fc upstream.
    
    There are packets which doesn't have a payload. In that case, the second
    i2c_master_read() will have a zero length. But because the NFC
    controller doesn't have any data left, it will NACK the I2C read and
    -ENXIO will be returned. In case there is no payload, just skip the
    second i2c master read.
    
    Fixes: 6be88670fc59 ("NFC: nxp-nci_i2c: Add I2C support to NXP NCI driver")
    Signed-off-by: Michael Walle <michael@walle.cc>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
NFS: restore module put when manager exits. [+ + +]
Author: NeilBrown <neilb@suse.de>
Date:   Thu Jun 23 14:47:34 2022 +1000

    NFS: restore module put when manager exits.
    
    commit 080abad71e99d2becf38c978572982130b927a28 upstream.
    
    Commit f49169c97fce ("NFSD: Remove svc_serv_ops::svo_module") removed
    calls to module_put_and_kthread_exit() from threads that acted as SUNRPC
    servers and had a related svc_serv_ops structure.  This was correct.
    
    It ALSO removed the module_put_and_kthread_exit() call from
    nfs4_run_state_manager() which is NOT a SUNRPC service.
    
    Consequently every time the NFSv4 state manager runs the module count
    increments and won't be decremented.  So the nfsv4 module cannot be
    unloaded.
    
    So restore the module_put_and_kthread_exit() call.
    
    Fixes: f49169c97fce ("NFSD: Remove svc_serv_ops::svo_module")
    Signed-off-by: NeilBrown <neilb@suse.de>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
NFSD: restore EINVAL error translation in nfsd_commit() [+ + +]
Author: Alexey Khoroshilov <khoroshilov@ispras.ru>
Date:   Sat Jun 25 23:52:43 2022 +0300

    NFSD: restore EINVAL error translation in nfsd_commit()
    
    commit 8a9ffb8c857c2c99403bd6483a5a005fed5c0773 upstream.
    
    commit 555dbf1a9aac ("nfsd: Replace use of rwsem with errseq_t")
    incidentally broke translation of -EINVAL to nfserr_notsupp.
    The patch restores that.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Fixes: 555dbf1a9aac ("nfsd: Replace use of rwsem with errseq_t")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
NFSv4: Add an fattr allocation to _nfs4_discover_trunking() [+ + +]
Author: Scott Mayhew <smayhew@redhat.com>
Date:   Mon Jun 27 17:31:29 2022 -0400

    NFSv4: Add an fattr allocation to _nfs4_discover_trunking()
    
    commit 4f40a5b5544618b096d1611a18219dd91fd57f80 upstream.
    
    This was missed in c3ed222745d9 ("NFSv4: Fix free of uninitialized
    nfs4_label on referral lookup.") and causes a panic when mounting
    with '-o trunkdiscovery':
    
    PID: 1604   TASK: ffff93dac3520000  CPU: 3   COMMAND: "mount.nfs"
     #0 [ffffb79140f738f8] machine_kexec at ffffffffaec64bee
     #1 [ffffb79140f73950] __crash_kexec at ffffffffaeda67fd
     #2 [ffffb79140f73a18] crash_kexec at ffffffffaeda76ed
     #3 [ffffb79140f73a30] oops_end at ffffffffaec2658d
     #4 [ffffb79140f73a50] general_protection at ffffffffaf60111e
        [exception RIP: nfs_fattr_init+0x5]
        RIP: ffffffffc0c18265  RSP: ffffb79140f73b08  RFLAGS: 00010246
        RAX: 0000000000000000  RBX: ffff93dac304a800  RCX: 0000000000000000
        RDX: ffffb79140f73bb0  RSI: ffff93dadc8cbb40  RDI: d03ee11cfaf6bd50
        RBP: ffffb79140f73be8   R8: ffffffffc0691560   R9: 0000000000000006
        R10: ffff93db3ffd3df8  R11: 0000000000000000  R12: ffff93dac4040000
        R13: ffff93dac2848e00  R14: ffffb79140f73b60  R15: ffffb79140f73b30
        ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
     #5 [ffffb79140f73b08] _nfs41_proc_get_locations at ffffffffc0c73d53 [nfsv4]
     #6 [ffffb79140f73bf0] nfs4_proc_get_locations at ffffffffc0c83e90 [nfsv4]
     #7 [ffffb79140f73c60] nfs4_discover_trunking at ffffffffc0c83fb7 [nfsv4]
     #8 [ffffb79140f73cd8] nfs_probe_fsinfo at ffffffffc0c0f95f [nfs]
     #9 [ffffb79140f73da0] nfs_probe_server at ffffffffc0c1026a [nfs]
        RIP: 00007f6254fce26e  RSP: 00007ffc69496ac8  RFLAGS: 00000246
        RAX: ffffffffffffffda  RBX: 0000000000000000  RCX: 00007f6254fce26e
        RDX: 00005600220a82a0  RSI: 00005600220a64d0  RDI: 00005600220a6520
        RBP: 00007ffc69496c50   R8: 00005600220a8710   R9: 003035322e323231
        R10: 0000000000000000  R11: 0000000000000246  R12: 00007ffc69496c50
        R13: 00005600220a8440  R14: 0000000000000010  R15: 0000560020650ef9
        ORIG_RAX: 00000000000000a5  CS: 0033  SS: 002b
    
    Fixes: c3ed222745d9 ("NFSv4: Fix free of uninitialized nfs4_label on referral lookup.")
    Signed-off-by: Scott Mayhew <smayhew@redhat.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nvdimm: Fix badblocks clear off-by-one error [+ + +]
Author: Chris Ye <chris.ye@intel.com>
Date:   Tue May 31 17:09:54 2022 -0700

    nvdimm: Fix badblocks clear off-by-one error
    
    commit ef9102004a87cb3f8b26e000a095a261fc0467d3 upstream.
    
    nvdimm_clear_badblocks_region() validates badblock clearing requests
    against the span of the region, however it compares the inclusive
    badblock request range to the exclusive region range. Fix up the
    off-by-one error.
    
    Fixes: 23f498448362 ("libnvdimm: rework region badblocks clearing")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Chris Ye <chris.ye@intel.com>
    Reviewed-by: Vishal Verma <vishal.l.verma@intel.com>
    Link: https://lore.kernel.org/r/165404219489.2445897.9792886413715690399.stgit@dwillia2-xfh
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nvme-pci: add NVME_QUIRK_BOGUS_NID for ADATA IM2P33F8ABR1 [+ + +]
Author: Lamarque Vieira Souza <lamarque@petrosoftdesign.com>
Date:   Wed Jun 29 21:30:53 2022 -0300

    nvme-pci: add NVME_QUIRK_BOGUS_NID for ADATA IM2P33F8ABR1
    
    commit e1c70d79346356bb1ede3f79436df80917845ab9 upstream.
    
    ADATA IM2P33F8ABR1 reports bogus eui64 values that appear to be the same
    across all drives. Quirk them out so they are not marked as "non globally
    unique" duplicates.
    
    Co-developed-by: Felipe de Jesus Araujo da Conceição <felipe.conceicao@petrosoftdesign.com>
    Signed-off-by: Felipe de Jesus Araujo da Conceição <felipe.conceicao@petrosoftdesign.com>
    Signed-off-by: Lamarque V. Souza <lamarque.souza@petrosoftdesign.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Christoph Hellwig <hch@lst.de>

nvme-pci: add NVME_QUIRK_BOGUS_NID for ADATA XPG SX6000LNP (AKA SPECTRIX S40G) [+ + +]
Author: Pablo Greco <pgreco@centosproject.org>
Date:   Sat Jun 25 09:15:02 2022 -0300

    nvme-pci: add NVME_QUIRK_BOGUS_NID for ADATA XPG SX6000LNP (AKA SPECTRIX S40G)
    
    commit 1629de0e0373e04d68e88e6d9d3071fbf70b7ea8 upstream.
    
    ADATA XPG SPECTRIX S40G drives report bogus eui64 values that appear to
    be the same across drives in one system. Quirk them out so they are
    not marked as "non globally unique" duplicates.
    
    Before:
    [    2.258919] nvme nvme1: pci function 0000:06:00.0
    [    2.264898] nvme nvme2: pci function 0000:05:00.0
    [    2.323235] nvme nvme1: failed to set APST feature (2)
    [    2.326153] nvme nvme2: failed to set APST feature (2)
    [    2.333935] nvme nvme1: allocated 64 MiB host memory buffer.
    [    2.336492] nvme nvme2: allocated 64 MiB host memory buffer.
    [    2.339611] nvme nvme1: 7/0/0 default/read/poll queues
    [    2.341805] nvme nvme2: 7/0/0 default/read/poll queues
    [    2.346114]  nvme1n1: p1
    [    2.347197] nvme nvme2: globally duplicate IDs for nsid 1
    After:
    [    2.427715] nvme nvme1: pci function 0000:06:00.0
    [    2.427771] nvme nvme2: pci function 0000:05:00.0
    [    2.488154] nvme nvme2: failed to set APST feature (2)
    [    2.489895] nvme nvme1: failed to set APST feature (2)
    [    2.498773] nvme nvme2: allocated 64 MiB host memory buffer.
    [    2.500587] nvme nvme1: allocated 64 MiB host memory buffer.
    [    2.504113] nvme nvme2: 7/0/0 default/read/poll queues
    [    2.507026] nvme nvme1: 7/0/0 default/read/poll queues
    [    2.509467] nvme nvme2: Ignoring bogus Namespace Identifiers
    [    2.512804] nvme nvme1: Ignoring bogus Namespace Identifiers
    [    2.513698]  nvme1n1: p1
    
    Signed-off-by: Pablo Greco <pgreco@centosproject.org>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nvmet-tcp: fix regression in data_digest calculation [+ + +]
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Fri Jun 24 00:49:53 2022 +0300

    nvmet-tcp: fix regression in data_digest calculation
    
    commit ed0691cf55140ce0f3fb100225645d902cce904b upstream.
    
    Data digest calculation iterates over command mapped iovec. However
    since commit bac04454ef9f we unmap the iovec before we handle the data
    digest, and since commit 69b85e1f1d1d we clear nr_mapped when we unmap
    the iov.
    
    Instead of open-coding the command iov traversal, simply call
    crypto_ahash_digest with the command sg that is already allocated (we
    already do that for the send path). Rename nvmet_tcp_send_ddgst to
    nvmet_tcp_calc_ddgst and call it from send and recv paths.
    
    Fixes: 69b85e1f1d1d ("nvmet-tcp: add an helper to free the cmd buffers")
    Fixes: bac04454ef9f ("nvmet-tcp: fix kmap leak when data digest in use")
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nvmet: add a clear_ids attribute for passthru targets [+ + +]
Author: Alan Adamson <alan.adamson@oracle.com>
Date:   Mon Jun 27 16:25:43 2022 -0700

    nvmet: add a clear_ids attribute for passthru targets
    
    commit 34ad61514c4c3657df21a058f9961c3bb2f84ff2 upstream.
    
    If the clear_ids attribute is set to true, the EUI/GUID/UUID is cleared
    for the passthru target.  By default, loop targets will set clear_ids to
    true.
    
    This resolves an issue where a connect to a passthru target fails when
    using a trtype of 'loop' because EUI/GUID/UUID is not unique.
    
    Fixes: 2079f41ec6ff ("nvme: check that EUI/GUID/UUID are globally unique")
    Signed-off-by: Alan Adamson <alan.adamson@oracle.com>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
parisc/unaligned: Fix emulate_ldw() breakage [+ + +]
Author: Helge Deller <deller@gmx.de>
Date:   Mon Jun 27 01:39:11 2022 +0200

    parisc/unaligned: Fix emulate_ldw() breakage
    
    commit 96b80fcd2705fc50ebe1f7f3ce204e861b3099ab upstream.
    
    The commit e8aa7b17fe41 broke the 32-bit load-word unalignment exception
    handler because it calculated the wrong amount of bits by which the value
    should be shifted. This patch fixes it.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Fixes: e8aa7b17fe41 ("parisc/unaligned: Rewrite inline assembly of emulate_ldw()")
    Cc: stable@vger.kernel.org   # v5.18
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
parisc: Fix vDSO signal breakage on 32-bit kernel [+ + +]
Author: Helge Deller <deller@gmx.de>
Date:   Fri Jul 1 09:00:41 2022 +0200

    parisc: Fix vDSO signal breakage on 32-bit kernel
    
    commit aa78fa905b4431c432071a878da99c2b37fc0e79 upstream.
    
    Addition of vDSO support for parisc in kernel v5.18 suddenly broke glibc
    signal testcases on a 32-bit kernel.
    
    The trampoline code (sigtramp.S) which is mapped into userspace includes
    an offset to the context data on the stack, which is used by gdb and
    glibc to get access to registers.
    
    In a 32-bit kernel we used by mistake the offset into the compat context
    (which is valid on a 64-bit kernel only) instead of the offset into the
    "native" 32-bit context.
    
    Reported-by: John David Anglin <dave.anglin@bell.net>
    Tested-by: John David Anglin <dave.anglin@bell.net>
    Fixes:  df24e1783e6e ("parisc: Add vDSO support")
    CC: stable@vger.kernel.org # 5.18
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
platform/x86: ideapad-laptop: Add allow_v4_dytc module parameter [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Jun 23 13:59:14 2022 +0200

    platform/x86: ideapad-laptop: Add allow_v4_dytc module parameter
    
    [ Upstream commit a27a1e35f5c87463ba7c12d5b7d7cbafbefc9213 ]
    
    Add an allow_v4_dytc module parameter to allow users to easily test if
    DYTC version 4 platform-profiles work on their laptop.
    
    Fixes: 599482c58ebd ("platform/x86: ideapad-laptop: Add platform support for Ideapad 5 Pro 16ACH6-82L5")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=213297
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20220623115914.103001-1-hdegoede@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

platform/x86: ideapad-laptop: Add Ideapad 5 15ITL05 to ideapad_dytc_v4_allow_table[] [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Jun 27 15:08:50 2022 +0200

    platform/x86: ideapad-laptop: Add Ideapad 5 15ITL05 to ideapad_dytc_v4_allow_table[]
    
    commit 8853e8ce9b576e0a3aad8381e19a117964d445fa upstream.
    
    The Ideapad 5 15ITL05 uses DYTC version 4 for platform-profile
    control. This has been tested successfully with the ideapad-laptop
    DYTC version 5 code; Add the Ideapad 5 15ITL05 to the
    ideapad_dytc_v4_allow_table[].
    
    Fixes: 599482c58ebd ("platform/x86: ideapad-laptop: Add platform support for Ideapad 5 Pro 16ACH6-82L5")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=213297
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20220627130850.313537-1-hdegoede@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

platform/x86: panasonic-laptop: de-obfuscate button codes [+ + +]
Author: Stefan Seyfried <seife+kernel@b1-systems.com>
Date:   Fri Jun 24 13:23:35 2022 +0200

    platform/x86: panasonic-laptop: de-obfuscate button codes
    
    [ Upstream commit 65a3e6c8d3f7c346813a05f3d76fc46b640d76d6 ]
    
    In the definition of panasonic_keymap[] the key codes are given in
    decimal, later checks are done with hexadecimal values, which does
    not help in understanding the code.
    Additionally use two helper variables to shorten the code and make
    the logic more obvious.
    
    Fixes: ed83c9171829 ("platform/x86: panasonic-laptop: Resolve hotkey double trigger bug")
    Signed-off-by: Stefan Seyfried <seife+kernel@b1-systems.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20220624112340.10130-3-hdegoede@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

platform/x86: panasonic-laptop: don't report duplicate brightness key-presses [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Jun 24 13:23:38 2022 +0200

    platform/x86: panasonic-laptop: don't report duplicate brightness key-presses
    
    [ Upstream commit 1f2c9de83a50447a2d7166f6273ab0c0e97cd68e ]
    
    The brightness key-presses might also get reported by the ACPI video bus,
    check for this and in this case don't report the presses to avoid reporting
    2 presses for a single key-press.
    
    Fixes: ed83c9171829 ("platform/x86: panasonic-laptop: Resolve hotkey double trigger bug")
    Reported-and-tested-by: Stefan Seyfried <seife+kernel@b1-systems.com>
    Reported-and-tested-by: Kenneth Chan <kenneth.t.chan@gmail.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20220624112340.10130-6-hdegoede@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

platform/x86: panasonic-laptop: filter out duplicate volume up/down/mute keypresses [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Jun 24 13:23:39 2022 +0200

    platform/x86: panasonic-laptop: filter out duplicate volume up/down/mute keypresses
    
    [ Upstream commit aacb455dfe01b7a24a792a2fbe7a04112ce8321d ]
    
    On some Panasonic models the volume up/down/mute keypresses get
    reported both through the Panasonic ACPI HKEY interface as well as
    through the atkbd device.
    
    Filter out the atkbd scan-codes for these to avoid reporting presses
    twice.
    
    Note normally we would leave the filtering of these to userspace by mapping
    the scan-codes to KEY_UNKNOWN through /lib/udev/hwdb.d/60-keyboard.hwdb.
    However in this case that would cause regressions since we were filtering
    the Panasonic ACPI HKEY events before, so filter these in the kernel.
    
    Fixes: ed83c9171829 ("platform/x86: panasonic-laptop: Resolve hotkey double trigger bug")
    Reported-and-tested-by: Stefan Seyfried <seife+kernel@b1-systems.com>
    Reported-and-tested-by: Kenneth Chan <kenneth.t.chan@gmail.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20220624112340.10130-7-hdegoede@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

platform/x86: panasonic-laptop: revert "Resolve hotkey double trigger bug" [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Jun 24 13:23:37 2022 +0200

    platform/x86: panasonic-laptop: revert "Resolve hotkey double trigger bug"
    
    [ Upstream commit 83a5ddc3dc561c40d948b85553514aaba99123d8 ]
    
    In hindsight blindly throwing away most of the key-press events is not
    a good idea. So revert commit ed83c9171829 ("platform/x86:
    panasonic-laptop: Resolve hotkey double trigger bug").
    
    Fixes: ed83c9171829 ("platform/x86: panasonic-laptop: Resolve hotkey double trigger bug")
    Reported-and-tested-by: Stefan Seyfried <seife+kernel@b1-systems.com>
    Reported-and-tested-by: Kenneth Chan <kenneth.t.chan@gmail.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20220624112340.10130-5-hdegoede@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

platform/x86: panasonic-laptop: sort includes alphabetically [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Jun 24 13:23:36 2022 +0200

    platform/x86: panasonic-laptop: sort includes alphabetically
    
    [ Upstream commit fe4326c8d18dc8a54affdc9ab269ad92dafef659 ]
    
    Sort includes alphabetically, small cleanup patch in preparation of
    further changes.
    
    Fixes: ed83c9171829 ("platform/x86: panasonic-laptop: Resolve hotkey double trigger bug")
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20220624112340.10130-4-hdegoede@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

platform/x86: thinkpad_acpi: Fix a memory leak of EFCH MMIO resource [+ + +]
Author: Jean Delvare <jdelvare@suse.de>
Date:   Tue Jun 21 15:55:11 2022 +0200

    platform/x86: thinkpad_acpi: Fix a memory leak of EFCH MMIO resource
    
    commit d2f33f0c3ad7b0d5262d9b986f1353265fad7a08 upstream.
    
    Unlike release_mem_region(), a call to release_resource() does not
    free the resource, so it has to be freed explicitly to avoid a memory
    leak.
    
    Signed-off-by: Jean Delvare <jdelvare@suse.de>
    Fixes: 455cd867b85b ("platform/x86: thinkpad_acpi: Add a s2idle resume quirk for a number of laptops")
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Cc: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
    Cc: Hans de Goede <hdegoede@redhat.com>
    Cc: Mark Gross <markgross@kernel.org>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Link: https://lore.kernel.org/r/20220621155511.5b266395@endymion.delvare
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
PM / devfreq: exynos-ppmu: Fix refcount leak in of_get_devfreq_events [+ + +]
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Thu May 26 12:28:56 2022 +0400

    PM / devfreq: exynos-ppmu: Fix refcount leak in of_get_devfreq_events
    
    commit f44b799603a9b5d2e375b0b2d54dd0b791eddfc2 upstream.
    
    of_get_child_by_name() returns a node pointer with refcount
    incremented, we should use of_node_put() on it when done.
    This function only calls of_node_put() in normal path,
    missing it in error paths.
    Add missing of_node_put() to avoid refcount leak.
    
    Fixes: f262f28c1470 ("PM / devfreq: event: Add devfreq_event class")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
powerpc/book3e: Fix PUD allocation size in map_kernel_page() [+ + +]
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Thu Jun 23 10:56:17 2022 +0200

    powerpc/book3e: Fix PUD allocation size in map_kernel_page()
    
    commit 986481618023e18e187646b0fff05a3c337531cb upstream.
    
    Commit 2fb4706057bc ("powerpc: add support for folded p4d page tables")
    erroneously changed PUD setup to a mix of PMD and PUD. Fix it.
    
    While at it, use PTE_TABLE_SIZE instead of PAGE_SIZE for PTE tables
    in order to avoid any confusion.
    
    Fixes: 2fb4706057bc ("powerpc: add support for folded p4d page tables")
    Cc: stable@vger.kernel.org # v5.8+
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Acked-by: Mike Rapoport <rppt@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/95ddfd6176d53e6c85e13bd1c358359daa56775f.1655974558.git.christophe.leroy@csgroup.eu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
powerpc/bpf: Fix use of user_pt_regs in uapi [+ + +]
Author: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Date:   Tue Jun 28 00:41:19 2022 +0530

    powerpc/bpf: Fix use of user_pt_regs in uapi
    
    commit b21bd5a4b130f8370861478d2880985daace5913 upstream.
    
    Trying to build a .c file that includes <linux/bpf_perf_event.h>:
      $ cat test_bpf_headers.c
      #include <linux/bpf_perf_event.h>
    
    throws the below error:
      /usr/include/linux/bpf_perf_event.h:14:28: error: field ‘regs’ has incomplete type
         14 |         bpf_user_pt_regs_t regs;
            |                            ^~~~
    
    This is because we typedef bpf_user_pt_regs_t to 'struct user_pt_regs'
    in arch/powerpc/include/uaps/asm/bpf_perf_event.h, but 'struct
    user_pt_regs' is not exposed to userspace.
    
    Powerpc has both pt_regs and user_pt_regs structures. However, unlike
    arm64 and s390, we expose user_pt_regs to userspace as just 'pt_regs'.
    As such, we should typedef bpf_user_pt_regs_t to 'struct pt_regs' for
    userspace.
    
    Within the kernel though, we want to typedef bpf_user_pt_regs_t to
    'struct user_pt_regs'.
    
    Remove arch/powerpc/include/uapi/asm/bpf_perf_event.h so that the
    uapi/asm-generic version of the header is exposed to userspace.
    Introduce arch/powerpc/include/asm/bpf_perf_event.h so that we can
    typedef bpf_user_pt_regs_t to 'struct user_pt_regs' for use within the
    kernel.
    
    Note that this was not showing up with the bpf selftest build since
    tools/include/uapi/asm/bpf_perf_event.h didn't include the powerpc
    variant.
    
    Fixes: a6460b03f945ee ("powerpc/bpf: Fix broken uapi for BPF_PROG_TYPE_PERF_EVENT")
    Cc: stable@vger.kernel.org # v4.20+
    Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    [mpe: Use typical naming for header include guard]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220627191119.142867-1-naveen.n.rao@linux.vnet.ibm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
powerpc/memhotplug: Add add_pages override for PPC [+ + +]
Author: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Date:   Wed Jun 29 10:39:25 2022 +0530

    powerpc/memhotplug: Add add_pages override for PPC
    
    commit ac790d09885d36143076e7e02825c541e8eee899 upstream.
    
    With commit ffa0b64e3be5 ("powerpc: Fix virt_addr_valid() for 64-bit Book3E & 32-bit")
    the kernel now validate the addr against high_memory value. This results
    in the below BUG_ON with dax pfns.
    
    [  635.798741][T26531] kernel BUG at mm/page_alloc.c:5521!
    1:mon> e
    cpu 0x1: Vector: 700 (Program Check) at [c000000007287630]
        pc: c00000000055ed48: free_pages.part.0+0x48/0x110
        lr: c00000000053ca70: tlb_finish_mmu+0x80/0xd0
        sp: c0000000072878d0
       msr: 800000000282b033
      current = 0xc00000000afabe00
      paca    = 0xc00000037ffff300   irqmask: 0x03   irq_happened: 0x05
        pid   = 26531, comm = 50-landscape-sy
    kernel BUG at :5521!
    Linux version 5.19.0-rc3-14659-g4ec05be7c2e1 (kvaneesh@ltc-boston8) (gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #625 SMP Thu Jun 23 00:35:43 CDT 2022
    1:mon> t
    [link register   ] c00000000053ca70 tlb_finish_mmu+0x80/0xd0
    [c0000000072878d0] c00000000053ca54 tlb_finish_mmu+0x64/0xd0 (unreliable)
    [c000000007287900] c000000000539424 exit_mmap+0xe4/0x2a0
    [c0000000072879e0] c00000000019fc1c mmput+0xcc/0x210
    [c000000007287a20] c000000000629230 begin_new_exec+0x5e0/0xf40
    [c000000007287ae0] c00000000070b3cc load_elf_binary+0x3ac/0x1e00
    [c000000007287c10] c000000000627af0 bprm_execve+0x3b0/0xaf0
    [c000000007287cd0] c000000000628414 do_execveat_common.isra.0+0x1e4/0x310
    [c000000007287d80] c00000000062858c sys_execve+0x4c/0x60
    [c000000007287db0] c00000000002c1b0 system_call_exception+0x160/0x2c0
    [c000000007287e10] c00000000000c53c system_call_common+0xec/0x250
    
    The fix is to make sure we update high_memory on memory hotplug.
    This is similar to what x86 does in commit 3072e413e305 ("mm/memory_hotplug: introduce add_pages")
    
    Fixes: ffa0b64e3be5 ("powerpc: Fix virt_addr_valid() for 64-bit Book3E & 32-bit")
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Reviewed-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220629050925.31447-1-aneesh.kumar@linux.ibm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
powerpc/prom_init: Fix kernel config grep [+ + +]
Author: Liam Howlett <liam.howlett@oracle.com>
Date:   Fri Jun 24 01:17:58 2022 +0000

    powerpc/prom_init: Fix kernel config grep
    
    commit 6886da5f49e6d86aad76807a93f3eef5e4f01b10 upstream.
    
    When searching for config options, use the KCONFIG_CONFIG shell variable
    so that builds using non-standard config locations work.
    
    Fixes: 26deb04342e3 ("powerpc: prepare string/mem functions for KASAN")
    Cc: stable@vger.kernel.org # v5.2+
    Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220624011745.4060795-1-Liam.Howlett@oracle.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
RDMA/cm: Fix memory leak in ib_cm_insert_listen [+ + +]
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Tue Jun 21 09:25:44 2022 +0400

    RDMA/cm: Fix memory leak in ib_cm_insert_listen
    
    commit 2990f223ffa7bb25422956b9f79f9176a5b38346 upstream.
    
    cm_alloc_id_priv() allocates resource for the cm_id_priv. When
    cm_init_listen() fails it doesn't free it, leading to memory leak.
    
    Add the missing error unwind.
    
    Fixes: 98f67156a80f ("RDMA/cm: Simplify establishing a listen cm_id")
    Link: https://lore.kernel.org/r/20220621052546.4821-1-linmq006@gmail.com
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
RDMA/qedr: Fix reporting QP timeout attribute [+ + +]
Author: Kamal Heib <kamalheib1@gmail.com>
Date:   Wed May 25 16:20:29 2022 +0300

    RDMA/qedr: Fix reporting QP timeout attribute
    
    commit 118f767413ada4eef7825fbd4af7c0866f883441 upstream.
    
    Make sure to save the passed QP timeout attribute when the QP gets modified,
    so when calling query QP the right value is reported and not the
    converted value that is required by the firmware. This issue was found
    while running the pyverbs tests.
    
    Fixes: cecbcddf6461 ("qedr: Add support for QP verbs")
    Link: https://lore.kernel.org/r/20220525132029.84813-1-kamalheib1@gmail.com
    Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
    Acked-by: Michal Kalderon <michal.kalderon@marvell.com>
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "drm/amdgpu/display: set vblank_disable_immediate for DC" [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Jun 20 18:29:39 2022 -0400

    Revert "drm/amdgpu/display: set vblank_disable_immediate for DC"
    
    commit a775e4e4941bf2f326aa36c58f67bd6c96cac717 upstream.
    
    This reverts commit 92020e81ddbeac351ea4a19bcf01743f32b9c800.
    
    This causes stuttering and timeouts with DMCUB for some users
    so revert it until we understand why and safely enable it
    to save power.
    
    Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1887
    Acked-by: Harry Wentland <harry.wentland@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
s390/archrandom: simplify back to earlier design and initialize earlier [+ + +]
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Sat Jun 11 00:20:23 2022 +0200

    s390/archrandom: simplify back to earlier design and initialize earlier
    
    commit e4f74400308cb8abde5fdc9cad609c2aba32110c upstream.
    
    s390x appears to present two RNG interfaces:
    - a "TRNG" that gathers entropy using some hardware function; and
    - a "DRBG" that takes in a seed and expands it.
    
    Previously, the TRNG was wired up to arch_get_random_{long,int}(), but
    it was observed that this was being called really frequently, resulting
    in high overhead. So it was changed to be wired up to arch_get_random_
    seed_{long,int}(), which was a reasonable decision. Later on, the DRBG
    was then wired up to arch_get_random_{long,int}(), with a complicated
    buffer filling thread, to control overhead and rate.
    
    Fortunately, none of the performance issues matter much now. The RNG
    always attempts to use arch_get_random_seed_{long,int}() first, which
    means a complicated implementation of arch_get_random_{long,int}() isn't
    really valuable or useful to have around. And it's only used when
    reseeding, which means it won't hit the high throughput complications
    that were faced before.
    
    So this commit returns to an earlier design of just calling the TRNG in
    arch_get_random_seed_{long,int}(), and returning false in arch_get_
    random_{long,int}().
    
    Part of what makes the simplification possible is that the RNG now seeds
    itself using the TRNG at bootup. But this only works if the TRNG is
    detected early in boot, before random_init() is called. So this commit
    also causes that check to happen in setup_arch().
    
    Cc: stable@vger.kernel.org
    Cc: Harald Freudenberger <freude@linux.ibm.com>
    Cc: Ingo Franzki <ifranzki@linux.ibm.com>
    Cc: Juergen Christ <jchrist@linux.ibm.com>
    Cc: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Link: https://lore.kernel.org/r/20220610222023.378448-1-Jason@zx2c4.com
    Reviewed-by: Harald Freudenberger <freude@linux.ibm.com>
    Acked-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
s390: remove unneeded 'select BUILD_BIN2C' [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Tue Jun 14 02:09:00 2022 +0900

    s390: remove unneeded 'select BUILD_BIN2C'
    
    commit 25deecb21c18ee29e3be8ac6177b2a9504c33d2d upstream.
    
    Since commit 4c0f032d4963 ("s390/purgatory: Omit use of bin2c"),
    s390 builds the purgatory without using bin2c.
    
    Remove 'select BUILD_BIN2C' to avoid the unneeded build of bin2c.
    
    Fixes: 4c0f032d4963 ("s390/purgatory: Omit use of bin2c")
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Link: https://lore.kernel.org/r/20220613170902.1775211-1-masahiroy@kernel.org
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
selftests net: fix kselftest net fatal error [+ + +]
Author: Coleman Dietsch <dietschc@csp.edu>
Date:   Tue Jun 28 12:47:44 2022 -0500

    selftests net: fix kselftest net fatal error
    
    commit 7b92aa9e613508cbaa29dd35bf27db4c35628b10 upstream.
    
    The incorrect path is causing the following error when trying to run net
    kselftests:
    
    In file included from bpf/nat6to4.c:43:
    ../../../lib/bpf/bpf_helpers.h:11:10: fatal error: 'bpf_helper_defs.h' file not found
             ^~~~~~~~~~~~~~~~~~~
    1 error generated.
    
    Fixes: cf67838c4422 ("selftests net: fix bpf build error")
    Signed-off-by: Coleman Dietsch <dietschc@csp.edu>
    Link: https://lore.kernel.org/r/20220628174744.7908-1-dietschc@csp.edu
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
selftests/net: pass ipv6_args to udpgso_bench's IPv6 TCP test [+ + +]
Author: Dimitris Michailidis <d.michailidis@fungible.com>
Date:   Wed Jun 22 17:02:34 2022 -0700

    selftests/net: pass ipv6_args to udpgso_bench's IPv6 TCP test
    
    commit b968080808f7f28b89aa495b7402ba48eb17ee93 upstream.
    
    udpgso_bench.sh has been running its IPv6 TCP test with IPv4 arguments
    since its initial conmit. Looks like a typo.
    
    Fixes: 3a687bef148d ("selftests: udp gso benchmark")
    Cc: willemb@google.com
    Signed-off-by: Dimitris Michailidis <dmichail@fungible.com>
    Acked-by: Willem de Bruijn <willemb@google.com>
    Link: https://lore.kernel.org/r/20220623000234.61774-1-dmichail@fungible.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
selftests: mptcp: Initialize variables to quiet gcc 12 warnings [+ + +]
Author: Mat Martineau <mathew.j.martineau@linux.intel.com>
Date:   Mon Jun 27 18:02:43 2022 -0700

    selftests: mptcp: Initialize variables to quiet gcc 12 warnings
    
    commit fd37c2ecb21f7aee04ccca5f561469f07d00063c upstream.
    
    In a few MPTCP selftest tools, gcc 12 complains that the 'sock' variable
    might be used uninitialized. This is a false positive because the only
    code path that could lead to uninitialized access is where getaddrinfo()
    fails, but the local xgetaddrinfo() wrapper exits if such a failure
    occurs.
    
    Initialize the 'sock' variable anyway to allow the tools to build with
    gcc 12.
    
    Fixes: 048d19d444be ("mptcp: add basic kselftest for mptcp")
    Acked-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

selftests: mptcp: more stable diag tests [+ + +]
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Mon Jun 27 18:02:41 2022 -0700

    selftests: mptcp: more stable diag tests
    
    commit 42fb6cddec3b306c9f6ef136b6438e0de1836431 upstream.
    
    The mentioned test-case still use an hard-coded-len sleep to
    wait for a relative large number of connection to be established.
    
    On very slow VM and with debug build such timeout could be exceeded,
    causing failures in our CI.
    
    Address the issue polling for the expected condition several times,
    up to an unreasonable high amount of time. On reasonably fast system
    the self-tests will be faster then before, on very slow one we will
    still catch the correct condition.
    
    Fixes: df62f2ec3df6 ("selftests/mptcp: add diag interface tests")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
SUNRPC: Fix READ_PLUS crasher [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Thu Jun 30 16:48:18 2022 -0400

    SUNRPC: Fix READ_PLUS crasher
    
    commit a23dd544debcda4ee4a549ec7de59e85c3c8345c upstream.
    
    Looks like there are still cases when "space_left - frag1bytes" can
    legitimately exceed PAGE_SIZE. Ensure that xdr->end always remains
    within the current encode buffer.
    
    Reported-by: Bruce Fields <bfields@fieldses.org>
    Reported-by: Zorro Lang <zlang@redhat.com>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=216151
    Fixes: 6c254bf3b637 ("SUNRPC: Fix the calculation of xdr->end in xdr_get_next_encode_buffer()")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tcp: add a missing nf_reset_ct() in 3WHS handling [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Jun 23 05:04:36 2022 +0000

    tcp: add a missing nf_reset_ct() in 3WHS handling
    
    commit 6f0012e35160cd08a53e46e3b3bbf724b92dfe68 upstream.
    
    When the third packet of 3WHS connection establishment
    contains payload, it is added into socket receive queue
    without the XFRM check and the drop of connection tracking
    context.
    
    This means that if the data is left unread in the socket
    receive queue, conntrack module can not be unloaded.
    
    As most applications usually reads the incoming data
    immediately after accept(), bug has been hiding for
    quite a long time.
    
    Commit 68822bdf76f1 ("net: generalize skb freeing
    deferral to per-cpu lists") exposed this bug because
    even if the application reads this data, the skb
    with nfct state could stay in a per-cpu cache for
    an arbitrary time, if said cpu no longer process RX softirqs.
    
    Many thanks to Ilya Maximets for reporting this issue,
    and for testing various patches:
    https://lore.kernel.org/netdev/20220619003919.394622-1-i.maximets@ovn.org/
    
    Note that I also added a missing xfrm4_policy_check() call,
    although this is probably not a big issue, as the SYN
    packet should have been dropped earlier.
    
    Fixes: b59c270104f0 ("[NETFILTER]: Keep conntrack reference until IPsec policy checks are done")
    Reported-by: Ilya Maximets <i.maximets@ovn.org>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Florian Westphal <fw@strlen.de>
    Cc: Pablo Neira Ayuso <pablo@netfilter.org>
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Tested-by: Ilya Maximets <i.maximets@ovn.org>
    Reviewed-by: Ilya Maximets <i.maximets@ovn.org>
    Link: https://lore.kernel.org/r/20220623050436.1290307-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tipc: move bc link creation back to tipc_node_create [+ + +]
Author: Xin Long <lucien.xin@gmail.com>
Date:   Fri Jun 24 12:24:31 2022 -0400

    tipc: move bc link creation back to tipc_node_create
    
    commit cb8092d70a6f5f01ec1490fce4d35efed3ed996c upstream.
    
    Shuang Li reported a NULL pointer dereference crash:
    
      [] BUG: kernel NULL pointer dereference, address: 0000000000000068
      [] RIP: 0010:tipc_link_is_up+0x5/0x10 [tipc]
      [] Call Trace:
      []  <IRQ>
      []  tipc_bcast_rcv+0xa2/0x190 [tipc]
      []  tipc_node_bc_rcv+0x8b/0x200 [tipc]
      []  tipc_rcv+0x3af/0x5b0 [tipc]
      []  tipc_udp_recv+0xc7/0x1e0 [tipc]
    
    It was caused by the 'l' passed into tipc_bcast_rcv() is NULL. When it
    creates a node in tipc_node_check_dest(), after inserting the new node
    into hashtable in tipc_node_create(), it creates the bc link. However,
    there is a gap between this insert and bc link creation, a bc packet
    may come in and get the node from the hashtable then try to dereference
    its bc link, which is NULL.
    
    This patch is to fix it by moving the bc link creation before inserting
    into the hashtable.
    
    Note that for a preliminary node becoming "real", the bc link creation
    should also be called before it's rehashed, as we don't create it for
    preliminary nodes.
    
    Fixes: 4cbf8ac2fe5a ("tipc: enable creating a "preliminary" node")
    Reported-by: Shuang Li <shuali@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tunnels: do not assume mac header is set in skb_tunnel_check_pmtu() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Jun 24 15:30:20 2022 +0000

    tunnels: do not assume mac header is set in skb_tunnel_check_pmtu()
    
    commit 853a7614880231747040cada91d2b8d2e995c51a upstream.
    
    Recently added debug in commit f9aefd6b2aa3 ("net: warn if mac header
    was not set") caught a bug in skb_tunnel_check_pmtu(), as shown
    in this syzbot report [1].
    
    In ndo_start_xmit() paths, there is really no need to use skb->mac_header,
    because skb->data is supposed to point at it.
    
    [1] WARNING: CPU: 1 PID: 8604 at include/linux/skbuff.h:2784 skb_mac_header_len include/linux/skbuff.h:2784 [inline]
    WARNING: CPU: 1 PID: 8604 at include/linux/skbuff.h:2784 skb_tunnel_check_pmtu+0x5de/0x2f90 net/ipv4/ip_tunnel_core.c:413
    Modules linked in:
    CPU: 1 PID: 8604 Comm: syz-executor.3 Not tainted 5.19.0-rc2-syzkaller-00443-g8720bd951b8e #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:skb_mac_header_len include/linux/skbuff.h:2784 [inline]
    RIP: 0010:skb_tunnel_check_pmtu+0x5de/0x2f90 net/ipv4/ip_tunnel_core.c:413
    Code: 00 00 00 00 fc ff df 4c 89 fa 48 c1 ea 03 80 3c 02 00 0f 84 b9 fe ff ff 4c 89 ff e8 7c 0f d7 f9 e9 ac fe ff ff e8 c2 13 8a f9 <0f> 0b e9 28 fc ff ff e8 b6 13 8a f9 48 8b 54 24 70 48 b8 00 00 00
    RSP: 0018:ffffc90002e4f520 EFLAGS: 00010212
    RAX: 0000000000000324 RBX: ffff88804d5fd500 RCX: ffffc90005b52000
    RDX: 0000000000040000 RSI: ffffffff87f05e3e RDI: 0000000000000003
    RBP: ffffc90002e4f650 R08: 0000000000000003 R09: 000000000000ffff
    R10: 000000000000ffff R11: 0000000000000000 R12: 000000000000ffff
    R13: 0000000000000000 R14: 000000000000ffcd R15: 000000000000001f
    FS: 00007f3babba9700(0000) GS:ffff8880b9b00000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000020000080 CR3: 0000000075319000 CR4: 00000000003506e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
    <TASK>
    geneve_xmit_skb drivers/net/geneve.c:927 [inline]
    geneve_xmit+0xcf8/0x35d0 drivers/net/geneve.c:1107
    __netdev_start_xmit include/linux/netdevice.h:4805 [inline]
    netdev_start_xmit include/linux/netdevice.h:4819 [inline]
    __dev_direct_xmit+0x500/0x730 net/core/dev.c:4309
    dev_direct_xmit include/linux/netdevice.h:3007 [inline]
    packet_direct_xmit+0x1b8/0x2c0 net/packet/af_packet.c:282
    packet_snd net/packet/af_packet.c:3073 [inline]
    packet_sendmsg+0x21f4/0x55d0 net/packet/af_packet.c:3104
    sock_sendmsg_nosec net/socket.c:714 [inline]
    sock_sendmsg+0xcf/0x120 net/socket.c:734
    ____sys_sendmsg+0x6eb/0x810 net/socket.c:2489
    ___sys_sendmsg+0xf3/0x170 net/socket.c:2543
    __sys_sendmsg net/socket.c:2572 [inline]
    __do_sys_sendmsg net/socket.c:2581 [inline]
    __se_sys_sendmsg net/socket.c:2579 [inline]
    __x64_sys_sendmsg+0x132/0x220 net/socket.c:2579
    do_syscall_x64 arch/x86/entry/common.c:50 [inline]
    do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
    entry_SYSCALL_64_after_hwframe+0x46/0xb0
    RIP: 0033:0x7f3baaa89109
    Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f3babba9168 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 00007f3baab9bf60 RCX: 00007f3baaa89109
    RDX: 0000000000000000 RSI: 0000000020000a00 RDI: 0000000000000003
    RBP: 00007f3baaae305d R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    R13: 00007ffe74f2543f R14: 00007f3babba9300 R15: 0000000000022000
    </TASK>
    
    Fixes: 4cb47a8644cc ("tunnels: PMTU discovery support for directly bridged IP packets")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Stefano Brivio <sbrivio@redhat.com>
    Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
usbnet: fix memory allocation in helpers [+ + +]
Author: Oliver Neukum <oneukum@suse.com>
Date:   Tue Jun 28 11:35:17 2022 +0200

    usbnet: fix memory allocation in helpers
    
    commit e65af5403e462ccd7dff6a045a886c64da598c2e upstream.
    
    usbnet provides some helper functions that are also used in
    the context of reset() operations. During a reset the other
    drivers on a device are unable to operate. As that can be block
    drivers, a driver for another interface cannot use paging
    in its memory allocations without risking a deadlock.
    Use GFP_NOIO in the helpers.
    
    Fixes: 877bd862f32b8 ("usbnet: introduce usbnet 3 command helpers")
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Link: https://lore.kernel.org/r/20220628093517.7469-1-oneukum@suse.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
vdpa/mlx5: Update Control VQ callback information [+ + +]
Author: Eli Cohen <elic@nvidia.com>
Date:   Mon Jun 13 10:59:57 2022 +0300

    vdpa/mlx5: Update Control VQ callback information
    
    commit 40f2f3e94178d45e4ee6078effba2dfc76f6f5ba upstream.
    
    The control VQ specific information is stored in the dedicated struct
    mlx5_control_vq. When the callback is updated through
    mlx5_vdpa_set_vq_cb(), make sure to update the control VQ struct.
    
    Fixes: 5262912ef3cf ("vdpa/mlx5: Add support for control VQ and MAC setting")
    Signed-off-by: Eli Cohen <elic@nvidia.com>
    Message-Id: <20220613075958.511064-1-elic@nvidia.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
vfs: fix copy_file_range() regression in cross-fs copies [+ + +]
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Thu Jun 30 22:58:49 2022 +0300

    vfs: fix copy_file_range() regression in cross-fs copies
    
    commit 868f9f2f8e004bfe0d3935b1976f625b2924893b upstream.
    
    A regression has been reported by Nicolas Boichat, found while using the
    copy_file_range syscall to copy a tracefs file.
    
    Before commit 5dae222a5ff0 ("vfs: allow copy_file_range to copy across
    devices") the kernel would return -EXDEV to userspace when trying to
    copy a file across different filesystems.  After this commit, the
    syscall doesn't fail anymore and instead returns zero (zero bytes
    copied), as this file's content is generated on-the-fly and thus reports
    a size of zero.
    
    Another regression has been reported by He Zhe - the assertion of
    WARN_ON_ONCE(ret == -EOPNOTSUPP) can be triggered from userspace when
    copying from a sysfs file whose read operation may return -EOPNOTSUPP.
    
    Since we do not have test coverage for copy_file_range() between any two
    types of filesystems, the best way to avoid these sort of issues in the
    future is for the kernel to be more picky about filesystems that are
    allowed to do copy_file_range().
    
    This patch restores some cross-filesystem copy restrictions that existed
    prior to commit 5dae222a5ff0 ("vfs: allow copy_file_range to copy across
    devices"), namely, cross-sb copy is not allowed for filesystems that do
    not implement ->copy_file_range().
    
    Filesystems that do implement ->copy_file_range() have full control of
    the result - if this method returns an error, the error is returned to
    the user.  Before this change this was only true for fs that did not
    implement the ->remap_file_range() operation (i.e.  nfsv3).
    
    Filesystems that do not implement ->copy_file_range() still fall-back to
    the generic_copy_file_range() implementation when the copy is within the
    same sb.  This helps the kernel can maintain a more consistent story
    about which filesystems support copy_file_range().
    
    nfsd and ksmbd servers are modified to fall-back to the
    generic_copy_file_range() implementation in case vfs_copy_file_range()
    fails with -EOPNOTSUPP or -EXDEV, which preserves behavior of
    server-side-copy.
    
    fall-back to generic_copy_file_range() is not implemented for the smb
    operation FSCTL_DUPLICATE_EXTENTS_TO_FILE, which is arguably a correct
    change of behavior.
    
    Fixes: 5dae222a5ff0 ("vfs: allow copy_file_range to copy across devices")
    Link: https://lore.kernel.org/linux-fsdevel/20210212044405.4120619-1-drinkcat@chromium.org/
    Link: https://lore.kernel.org/linux-fsdevel/CANMq1KDZuxir2LM5jOTm0xx+BnvW=ZmpsG47CyHFJwnw7zSX6Q@mail.gmail.com/
    Link: https://lore.kernel.org/linux-fsdevel/20210126135012.1.If45b7cdc3ff707bc1efa17f5366057d60603c45f@changeid/
    Link: https://lore.kernel.org/linux-fsdevel/20210630161320.29006-1-lhenriques@suse.de/
    Reported-by: Nicolas Boichat <drinkcat@chromium.org>
    Reported-by: kernel test robot <oliver.sang@intel.com>
    Signed-off-by: Luis Henriques <lhenriques@suse.de>
    Fixes: 64bf5ff58dff ("vfs: no fallback for ->copy_file_range")
    Link: https://lore.kernel.org/linux-fsdevel/20f17f64-88cb-4e80-07c1-85cb96c83619@windriver.com/
    Reported-by: He Zhe <zhe.he@windriver.com>
    Tested-by: Namjae Jeon <linkinjeon@kernel.org>
    Tested-by: Luis Henriques <lhenriques@suse.de>
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
virtio-net: fix race between ndo_open() and virtio_device_ready() [+ + +]
Author: Jason Wang <jasowang@redhat.com>
Date:   Fri Jun 17 15:29:49 2022 +0800

    virtio-net: fix race between ndo_open() and virtio_device_ready()
    
    commit 50c0ada627f56c92f5953a8bf9158b045ad026a1 upstream.
    
    We currently call virtio_device_ready() after netdev
    registration. Since ndo_open() can be called immediately
    after register_netdev, this means there exists a race between
    ndo_open() and virtio_device_ready(): the driver may start to use the
    device before DRIVER_OK which violates the spec.
    
    Fix this by switching to use register_netdevice() and protect the
    virtio_device_ready() with rtnl_lock() to make sure ndo_open() can
    only be called after virtio_device_ready().
    
    Fixes: 4baf1e33d0842 ("virtio_net: enable VQs early")
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Message-Id: <20220617072949.30734-1-jasowang@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
xen-netfront: restore __skb_queue_tail() positioning in xennet_get_responses() [+ + +]
Author: Jan Beulich <jbeulich@suse.com>
Date:   Fri Jul 1 09:57:19 2022 +0200

    xen-netfront: restore __skb_queue_tail() positioning in xennet_get_responses()
    
    commit f63c2c2032c2e3caad9add3b82cc6e91c376fd26 upstream.
    
    The commit referenced below moved the invocation past the "next" label,
    without any explanation. In fact this allows misbehaving backends undue
    control over the domain the frontend runs in, as earlier detected errors
    require the skb to not be freed (it may be retained for later processing
    via xennet_move_rx_slot(), or it may simply be unsafe to have it freed).
    
    This is CVE-2022-33743 / XSA-405.
    
    Fixes: 6c5aa6fc4def ("xen networking: add basic XDP support for xen-netfront")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
xen/arm: Fix race in RB-tree based P2M accounting [+ + +]
Author: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Date:   Fri Jul 1 09:57:42 2022 +0200

    xen/arm: Fix race in RB-tree based P2M accounting
    
    commit b75cd218274e01d026dc5240e86fdeb44bbed0c8 upstream.
    
    During the PV driver life cycle the mappings are added to
    the RB-tree by set_foreign_p2m_mapping(), which is called from
    gnttab_map_refs() and are removed by clear_foreign_p2m_mapping()
    which is called from gnttab_unmap_refs(). As both functions end
    up calling __set_phys_to_machine_multi() which updates the RB-tree,
    this function can be called concurrently.
    
    There is already a "p2m_lock" to protect against concurrent accesses,
    but the problem is that the first read of "phys_to_mach.rb_node"
    in __set_phys_to_machine_multi() is not covered by it, so this might
    lead to the incorrect mappings update (removing in our case) in RB-tree.
    
    In my environment the related issue happens rarely and only when
    PV net backend is running, the xen_add_phys_to_mach_entry() claims
    that it cannot add new pfn <-> mfn mapping to the tree since it is
    already exists which results in a failure when mapping foreign pages.
    
    But there might be other bad consequences related to the non-protected
    root reads such use-after-free, etc.
    
    While at it, also fix the similar usage in __pfn_to_mfn(), so
    initialize "struct rb_node *n" with the "p2m_lock" held in both
    functions to avoid possible bad consequences.
    
    This is CVE-2022-33744 / XSA-406.
    
    Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
xen/blkfront: fix leaking data in shared pages [+ + +]
Author: Roger Pau Monne <roger.pau@citrix.com>
Date:   Wed Mar 30 09:03:48 2022 +0200

    xen/blkfront: fix leaking data in shared pages
    
    commit 2f446ffe9d737e9a844b97887919c4fda18246e7 upstream.
    
    When allocating pages to be used for shared communication with the
    backend always zero them, this avoids leaking unintended data present
    on the pages.
    
    This is CVE-2022-26365, part of XSA-403.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xen/blkfront: force data bouncing when backend is untrusted [+ + +]
Author: Roger Pau Monne <roger.pau@citrix.com>
Date:   Thu Apr 7 13:04:24 2022 +0200

    xen/blkfront: force data bouncing when backend is untrusted
    
    commit 2400617da7eebf9167d71a46122828bc479d64c9 upstream.
    
    Split the current bounce buffering logic used with persistent grants
    into it's own option, and allow enabling it independently of
    persistent grants.  This allows to reuse the same code paths to
    perform the bounce buffering required to avoid leaking contiguous data
    in shared pages not part of the request fragments.
    
    Reporting whether the backend is to be trusted can be done using a
    module parameter, or from the xenstore frontend path as set by the
    toolstack when adding the device.
    
    This is CVE-2022-33742, part of XSA-403.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
xen/netfront: fix leaking data in shared pages [+ + +]
Author: Roger Pau Monne <roger.pau@citrix.com>
Date:   Wed Apr 6 17:38:04 2022 +0200

    xen/netfront: fix leaking data in shared pages
    
    commit 307c8de2b02344805ebead3440d8feed28f2f010 upstream.
    
    When allocating pages to be used for shared communication with the
    backend always zero them, this avoids leaking unintended data present
    on the pages.
    
    This is CVE-2022-33740, part of XSA-403.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xen/netfront: force data bouncing when backend is untrusted [+ + +]
Author: Roger Pau Monne <roger.pau@citrix.com>
Date:   Thu Apr 7 12:20:06 2022 +0200

    xen/netfront: force data bouncing when backend is untrusted
    
    commit 4491001c2e0fa69efbb748c96ec96b100a5cdb7e upstream.
    
    Bounce all data on the skbs to be transmitted into zeroed pages if the
    backend is untrusted. This avoids leaking data present in the pages
    shared with the backend but not part of the skb fragments.  This
    requires introducing a new helper in order to allocate skbs with a
    size multiple of XEN_PAGE_SIZE so we don't leak contiguous data on the
    granted pages.
    
    Reporting whether the backend is to be trusted can be done using a
    module parameter, or from the xenstore frontend path as set by the
    toolstack when adding the device.
    
    This is CVE-2022-33741, part of XSA-403.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>