Skip to content
  1. Aug 05, 2023
    • Linus Torvalds's avatar
      Merge tag 'mtd/fixes-for-6.5-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux · c8273a25
      Linus Torvalds authored
      Pull mtd fixes from Miquel Raynal:
       "Raw NAND fixes:
         - fsl_upm: Fix an off-by one test in fun_exec_op()
         - Rockchip:
             - Align hwecc vs. raw page helper layouts
             - Fix oobfree offset and description
         - Meson: Fix OOB available bytes for ECC
         - Omap ELM: Fix incorrect type in assignment
      
        SPI-NOR fix:
         - Avoid holes in struct spi_mem_op
      
        Hyperbus fix:
         - Add Tudor as reviewer in MAINTAINERS
      
        SPI-NAND fixes:
         - Winbond and Toshiba: Fix ecc_get_status"
      
      * tag 'mtd/fixes-for-6.5-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux:
        mtd: rawnand: fsl_upm: Fix an off-by one test in fun_exec_op()
        mtd: spi-nor: avoid holes in struct spi_mem_op
        MAINTAINERS: Add myself as reviewer for HYPERBUS
        mtd: rawnand: rockchip: Align hwecc vs. raw page helper layouts
        mtd: rawnand: rockchip: fix oobfree offset and description
        mtd: rawnand: meson: fix OOB available bytes for ECC
        mtd: rawnand: omap_elm: Fix incorrect type in assignment
        mtd: spinand: winbond: Fix ecc_get_status
        mtd: spinand: toshiba: Fix ecc_get_status
      c8273a25
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2023-08-04' of git://anongit.freedesktop.org/drm/drm · 4142fc67
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Small set of fixes this week, i915 and a few misc ones. I didn't see
        an amd pull so maybe next week it'll have a few more on that driver.
      
        ttm:
         - NULL ptr deref fix
      
        panel:
         - add missing MODULE_DEVICE_TABLE
      
        imx/ipuv3:
         - timing fix
      
        i915:
         - Fix bug in getting msg length in AUX CH registers handler
         - Gen12 AUX invalidation fixes
         - Fix premature release of request's reusable memory"
      
      * tag 'drm-fixes-2023-08-04' of git://anongit.freedesktop.org/drm/drm:
        drm/panel: samsung-s6d7aa0: Add MODULE_DEVICE_TABLE
        drm/i915: Fix premature release of request's reusable memory
        drm/i915/gt: Support aux invalidation on all engines
        drm/i915/gt: Poll aux invalidation register bit on invalidation
        drm/i915/gt: Enable the CCS_FLUSH bit in the pipe control and in the CS
        drm/i915/gt: Rename flags with bit_group_X according to the datasheet
        drm/i915/gt: Ensure memory quiesced before invalidation
        drm/i915: Add the gen12_needs_ccs_aux_inv helper
        drm/i915/gt: Cleanup aux invalidation registers
        drm/i915/gvt: Fix bug in getting msg length in AUX CH registers handler
        drm/imx/ipuv3: Fix front porch adjustment upon hactive aligning
        drm/ttm: check null pointer before accessing when swapping
      4142fc67
    • Linus Torvalds's avatar
      Merge tag 'ceph-for-6.5-rc5' of https://github.com/ceph/ceph-client · 4593f3c2
      Linus Torvalds authored
      Pull ceph fixes from Ilya Dryomov:
       "Two patches to improve RBD exclusive lock interaction with
        osd_request_timeout option and another fix to reduce the potential for
        erroneous blocklisting -- this time in CephFS. All going to stable"
      
      * tag 'ceph-for-6.5-rc5' of https://github.com/ceph/ceph-client:
        libceph: fix potential hang in ceph_osdc_notify()
        rbd: prevent busy loop when requesting exclusive lock
        ceph: defer stopping mdsc delayed_work
      4593f3c2
    • Linus Torvalds's avatar
      file: reinstate f_pos locking optimization for regular files · 79796425
      Linus Torvalds authored
      In commit 20ea1e7d
      
       ("file: always lock position for
      FMODE_ATOMIC_POS") we ended up always taking the file pos lock, because
      pidfd_getfd() could get a reference to the file even when it didn't have
      an elevated file count due to threading of other sharing cases.
      
      But Mateusz Guzik reports that the extra locking is actually measurable,
      so let's re-introduce the optimization, and only force the locking for
      directory traversal.
      
      Directories need the lock for correctness reasons, while regular files
      only need it for "POSIX semantics".  Since pidfd_getfd() is about
      debuggers etc special things that are _way_ outside of POSIX, we can
      relax the rules for that case.
      
      Reported-by: default avatarMateusz Guzik <mjguzik@gmail.com>
      Cc: Christian Brauner <brauner@kernel.org>
      Link: https://lore.kernel.org/linux-fsdevel/20230803095311.ijpvhx3fyrbkasul@f/
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      79796425
  2. Aug 04, 2023
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2023-08-03' of... · 1958b0f9
      Dave Airlie authored
      
      Merge tag 'drm-intel-fixes-2023-08-03' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
      
      - Fix bug in getting msg length in AUX CH registers handler [gvt] (Yan Zhao)
      - Gen12 AUX invalidation fixes [gt] (Andi Shyti, Jonathan Cavitt)
      - Fix premature release of request's reusable memory (Janusz Krzysztofik)
      
      - Merge tag 'gvt-fixes-2023-08-02' of https://github.com/intel/gvt-linux into drm-intel-fixes (Tvrtko Ursulin)
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/ZMtkxWGuUKpaRMmo@tursulin-desk
      1958b0f9
    • Dave Airlie's avatar
      Merge tag 'drm-misc-fixes-2023-08-03' of ssh://git.freedesktop.org/git/drm/drm-misc into drm-fixes · 062ff85b
      Dave Airlie authored
      
      
      A NULL pointer dereference fix for TTM, a timings fix for imx/ipuv3 and
      the addition of a MODULE_DEVICE_TABLE for the samsung-s6d7aa0 panel.
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Maxime Ripard <mripard@redhat.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/ztfogof2dhtlvjwe73mvd2jp5kbldhkkav7k5culuseqblwpti@qfobohwx3c3j
      062ff85b
    • Linus Torvalds's avatar
      Merge tag 'perf-tools-fixes-for-v6.5-2-2023-08-03' of... · c1a515d3
      Linus Torvalds authored
      Merge tag 'perf-tools-fixes-for-v6.5-2-2023-08-03' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools
      
      Pull perf tools fixes from Arnaldo Carvalho de Melo:
      
       - Fix segfault in the powerpc specific arch_skip_callchain_idx
         function. The patch doing the reference count init/exit that went
         into 6.5 missed this function.
      
       - Fix regression reading the arm64 PMU cpu slots in sysfs, a patch
         removing some code duplication ended up duplicating the /sysfs prefix
         for these files.
      
       - Fix grouping of events related to topdown, addressing a regression on
         the CSV output produced by 'perf stat' noticed on the downstream tool
         toplev.
      
       - Fix the uprobe_from_different_cu 'perf test' entry, it is failing
         when gcc isn't available, so we need to check that and skip the test
         if it is not installed.
      
      * tag 'perf-tools-fixes-for-v6.5-2-2023-08-03' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools:
        perf test parse-events: Test complex name has required event format
        perf pmus: Create placholder regardless of scanning core_only
        perf test uprobe_from_different_cu: Skip if there is no gcc
        perf parse-events: Only move force grouped evsels when sorting
        perf parse-events: When fixing group leaders always set the leader
        perf parse-events: Extra care around force grouped events
        perf callchain powerpc: Fix addr location init during arch_skip_callchain_idx function
        perf pmu arm64: Fix reading the PMU cpu slots in sysfs
      c1a515d3
    • Linus Torvalds's avatar
      Merge tag 'cxl-fixes-6.5-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl · 638c1913
      Linus Torvalds authored
      Pull cxl fixes from Vishal Verma:
      
       - Fixup the Sanitixe device ABI that was merged for v6.5 to hide some
         sysfs files when the necessary support is missing. Update the ABI
         documentation around this as well.
      
      * tag 'cxl-fixes-6.5-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl:
        cxl/memdev: Only show sanitize sysfs files when supported
        cxl/memdev: Document security state in kern-doc
        cxl/memdev: Improve sanitize ABI descriptions
      638c1913
    • Linus Torvalds's avatar
      Merge tag 'net-6.5-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 999f6631
      Linus Torvalds authored
      Pull networking fixes from Jakub Kicinski:
       "Including fixes from bpf and wireless.
      
        Nothing scary here. Feels like the first wave of regressions from v6.5
        is addressed - one outstanding fix still to come in TLS for the
        sendpage rework.
      
        Current release - regressions:
      
         - udp: fix __ip_append_data()'s handling of MSG_SPLICE_PAGES
      
         - dsa: fix older DSA drivers using phylink
      
        Previous releases - regressions:
      
         - gro: fix misuse of CB in udp socket lookup
      
         - mlx5: unregister devlink params in case interface is down
      
         - Revert "wifi: ath11k: Enable threaded NAPI"
      
        Previous releases - always broken:
      
         - sched: cls_u32: fix match key mis-addressing
      
         - sched: bind logic fixes for cls_fw, cls_u32 and cls_route
      
         - add bound checks to a number of places which hand-parse netlink
      
         - bpf: disable preemption in perf_event_output helpers code
      
         - qed: fix scheduling in a tasklet while getting stats
      
         - avoid using APIs which are not hardirq-safe in couple of drivers,
           when we may be in a hard IRQ (netconsole)
      
         - wifi: cfg80211: fix return value in scan logic, avoid page
           allocator warning
      
         - wifi: mt76: mt7615: do not advertise 5 GHz on first PHY of MT7615D
           (DBDC)
      
        Misc:
      
         - drop handful of inactive maintainers, put some new in place"
      
      * tag 'net-6.5-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (98 commits)
        MAINTAINERS: update TUN/TAP maintainers
        test/vsock: remove vsock_perf executable on `make clean`
        tcp_metrics: fix data-race in tcpm_suck_dst() vs fastopen
        tcp_metrics: annotate data-races around tm->tcpm_net
        tcp_metrics: annotate data-races around tm->tcpm_vals[]
        tcp_metrics: annotate data-races around tm->tcpm_lock
        tcp_metrics: annotate data-races around tm->tcpm_stamp
        tcp_metrics: fix addr_same() helper
        prestera: fix fallback to previous version on same major version
        udp: Fix __ip_append_data()'s handling of MSG_SPLICE_PAGES
        net/mlx5e: Set proper IPsec source port in L4 selector
        net/mlx5: fs_core: Skip the FTs in the same FS_TYPE_PRIO_CHAINS fs_prio
        net/mlx5: fs_core: Make find_closest_ft more generic
        wifi: brcmfmac: Fix field-spanning write in brcmf_scan_params_v2_to_v1()
        vxlan: Fix nexthop hash size
        ip6mr: Fix skb_under_panic in ip6mr_cache_report()
        s390/qeth: Don't call dev_close/dev_open (DOWN/UP)
        net: tap_open(): set sk_uid from current_fsuid()
        net: tun_chr_open(): set sk_uid from current_fsuid()
        net: dcb: choose correct policy to parse DCB_ATTR_BCN
        ...
      999f6631
    • Jakub Kicinski's avatar
      MAINTAINERS: update TUN/TAP maintainers · 0765c5f2
      Jakub Kicinski authored
      
      
      Willem and Jason have agreed to take over the maintainer
      duties for TUN/TAP, thank you!
      
      There's an existing entry for TUN/TAP which only covers
      the user mode Linux implementation.
      Since we haven't heard from Maxim on the list for almost
      a decade, extend that entry and take it over, rather than
      adding a new one.
      
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Acked-by: default avatarJason Wang <jasowang@redhat.com>
      Link: https://lore.kernel.org/r/20230802182843.4193099-1-kuba@kernel.org
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      0765c5f2
    • Jakub Kicinski's avatar
      Merge tag 'for-netdev' of https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf · 3932f227
      Jakub Kicinski authored
      
      
      Martin KaFai Lau says:
      
      ====================
      pull-request: bpf 2023-08-03
      
      We've added 5 non-merge commits during the last 7 day(s) which contain
      a total of 3 files changed, 37 insertions(+), 20 deletions(-).
      
      The main changes are:
      
      1) Disable preemption in perf_event_output helpers code,
         from Jiri Olsa
      
      2) Add length check for SK_DIAG_BPF_STORAGE_REQ_MAP_FD parsing,
         from Lin Ma
      
      3) Multiple warning splat fixes in cpumap from Hou Tao
      
      * tag 'for-netdev' of https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf:
        bpf, cpumap: Handle skb as well when clean up ptr_ring
        bpf, cpumap: Make sure kthread is running before map update returns
        bpf: Add length check for SK_DIAG_BPF_STORAGE_REQ_MAP_FD parsing
        bpf: Disable preemption in bpf_event_output
        bpf: Disable preemption in bpf_perf_event_output
      ====================
      
      Link: https://lore.kernel.org/r/20230803181429.994607-1-martin.lau@linux.dev
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      3932f227
    • Jakub Kicinski's avatar
      Merge tag 'wireless-2023-08-03' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless · 0d48a84b
      Jakub Kicinski authored
      
      
      Kalle Valo says:
      
      ====================
      wireless fixes for v6.5
      
      We did some house cleaning in MAINTAINERS file so several patches
      about that. Few regressions fixed and also fix some recently enabled
      memcpy() warnings. Only small commits and nothing special standing
      out.
      
      * tag 'wireless-2023-08-03' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless:
        wifi: brcmfmac: Fix field-spanning write in brcmf_scan_params_v2_to_v1()
        wifi: ray_cs: Replace 1-element array with flexible array
        MAINTAINERS: add Jeff as ath10k, ath11k and ath12k maintainer
        MAINTAINERS: wifi: mark mlw8k as orphan
        MAINTAINERS: wifi: mark b43 as orphan
        MAINTAINERS: wifi: mark zd1211rw as orphan
        MAINTAINERS: wifi: mark wl3501 as orphan
        MAINTAINERS: wifi: mark rndis_wlan as orphan
        MAINTAINERS: wifi: mark ar5523 as orphan
        MAINTAINERS: wifi: mark cw1200 as orphan
        MAINTAINERS: wifi: atmel: mark as orphan
        MAINTAINERS: wifi: rtw88: change Ping as the maintainer
        Revert "wifi: ath6k: silence false positive -Wno-dangling-pointer warning on GCC 12"
        wifi: cfg80211: Fix return value in scan logic
        Revert "wifi: ath11k: Enable threaded NAPI"
        MAINTAINERS: Update mwifiex maintainer list
        wifi: mt76: mt7615: do not advertise 5 GHz on first phy of MT7615D (DBDC)
      ====================
      
      Link: https://lore.kernel.org/r/20230803140058.57476C433C9@smtp.kernel.org
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      0d48a84b
    • Stefano Garzarella's avatar
      test/vsock: remove vsock_perf executable on `make clean` · 3c50c8b2
      Stefano Garzarella authored
      We forgot to add vsock_perf to the rm command in the `clean`
      target, so now we have a left over after `make clean` in
      tools/testing/vsock.
      
      Fixes: 8abbffd2
      
       ("test/vsock: vsock_perf utility")
      Cc: AVKrasnov@sberdevices.ru
      Signed-off-by: default avatarStefano Garzarella <sgarzare@redhat.com>
      Reviewed-by: default avatarSimon Horman <horms@kernel.org>
      Tested-by: Simon Horman <horms@kernel.org> # build-tested
      Link: https://lore.kernel.org/r/20230803085454.30897-1-sgarzare@redhat.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      3c50c8b2
    • Jakub Kicinski's avatar
      Merge branch 'tcp_metrics-series-of-fixes' · 374297e8
      Jakub Kicinski authored
      
      
      Eric Dumazet says:
      
      ====================
      tcp_metrics: series of fixes
      
      This series contains a fix for addr_same() and various
      data-race annotations.
      
      We still have to address races over tm->tcpm_saddr and
      tm->tcpm_daddr later.
      ====================
      
      Link: https://lore.kernel.org/r/20230802131500.1478140-1-edumazet@google.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      374297e8
    • Eric Dumazet's avatar
      tcp_metrics: fix data-race in tcpm_suck_dst() vs fastopen · ddf251fa
      Eric Dumazet authored
      Whenever tcpm_new() reclaims an old entry, tcpm_suck_dst()
      would overwrite data that could be read from tcp_fastopen_cache_get()
      or tcp_metrics_fill_info().
      
      We need to acquire fastopen_seqlock to maintain consistency.
      
      For newly allocated objects, tcpm_new() can switch to kzalloc()
      to avoid an extra fastopen_seqlock acquisition.
      
      Fixes: 1fe4c481
      
       ("net-tcp: Fast Open client - cookie cache")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Yuchung Cheng <ycheng@google.com>
      Reviewed-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
      Link: https://lore.kernel.org/r/20230802131500.1478140-7-edumazet@google.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      ddf251fa
    • Eric Dumazet's avatar
      tcp_metrics: annotate data-races around tm->tcpm_net · d5d986ce
      Eric Dumazet authored
      tm->tcpm_net can be read or written locklessly.
      
      Instead of changing write_pnet() and read_pnet() and potentially
      hurt performance, add the needed READ_ONCE()/WRITE_ONCE()
      in tm_net() and tcpm_new().
      
      Fixes: 849e8a0c
      
       ("tcp_metrics: Add a field tcpm_net and verify it matches on lookup")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
      Reviewed-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
      Link: https://lore.kernel.org/r/20230802131500.1478140-6-edumazet@google.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      d5d986ce
    • Eric Dumazet's avatar
      tcp_metrics: annotate data-races around tm->tcpm_vals[] · 8c4d04f6
      Eric Dumazet authored
      tm->tcpm_vals[] values can be read or written locklessly.
      
      Add needed READ_ONCE()/WRITE_ONCE() to document this,
      and force use of tcp_metric_get() and tcp_metric_set()
      
      Fixes: 51c5d0c4
      
       ("tcp: Maintain dynamic metrics in local cache.")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
      Reviewed-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      8c4d04f6
    • Eric Dumazet's avatar
      tcp_metrics: annotate data-races around tm->tcpm_lock · 285ce119
      Eric Dumazet authored
      tm->tcpm_lock can be read or written locklessly.
      
      Add needed READ_ONCE()/WRITE_ONCE() to document this.
      
      Fixes: 51c5d0c4
      
       ("tcp: Maintain dynamic metrics in local cache.")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
      Reviewed-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
      Link: https://lore.kernel.org/r/20230802131500.1478140-4-edumazet@google.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      285ce119
    • Eric Dumazet's avatar
      tcp_metrics: annotate data-races around tm->tcpm_stamp · 949ad62a
      Eric Dumazet authored
      tm->tcpm_stamp can be read or written locklessly.
      
      Add needed READ_ONCE()/WRITE_ONCE() to document this.
      
      Also constify tcpm_check_stamp() dst argument.
      
      Fixes: 51c5d0c4
      
       ("tcp: Maintain dynamic metrics in local cache.")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
      Reviewed-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
      Link: https://lore.kernel.org/r/20230802131500.1478140-3-edumazet@google.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      949ad62a
    • Eric Dumazet's avatar
      tcp_metrics: fix addr_same() helper · e6638094
      Eric Dumazet authored
      Because v4 and v6 families use separate inetpeer trees (respectively
      net->ipv4.peers and net->ipv6.peers), inetpeer_addr_cmp(a, b) assumes
      a & b share the same family.
      
      tcp_metrics use a common hash table, where entries can have different
      families.
      
      We must therefore make sure to not call inetpeer_addr_cmp()
      if the families do not match.
      
      Fixes: d39d14ff
      
       ("net: Add helper function to compare inetpeer addresses")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
      Reviewed-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
      Link: https://lore.kernel.org/r/20230802131500.1478140-2-edumazet@google.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      e6638094
    • Jonas Gorski's avatar
      prestera: fix fallback to previous version on same major version · b755c25f
      Jonas Gorski authored
      When both supported and previous version have the same major version,
      and the firmwares are missing, the driver ends in a loop requesting the
      same (previous) version over and over again:
      
          [   76.327413] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.1.img firmware, fall-back to previous 4.0 version
          [   76.339802] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
          [   76.352162] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
          [   76.364502] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
          [   76.376848] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
          [   76.389183] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
          [   76.401522] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
          [   76.413860] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
          [   76.426199] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
          ...
      
      Fix this by inverting the check to that we aren't yet at the previous
      version, and also check the minor version.
      
      This also catches the case where both versions are the same, as it was
      after commit bb5dbf2c ("net: marvell: prestera: add firmware v4.0
      support").
      
      With this fix applied:
      
          [   88.499622] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.1.img firmware, fall-back to previous 4.0 version
          [   88.511995] Prestera DX 0000:01:00.0: failed to request previous firmware: mrvl/prestera/mvsw_prestera_fw-v4.0.img
          [   88.522403] Prestera DX: probe of 0000:01:00.0 failed with error -2
      
      Fixes: 47f26018
      
       ("net: marvell: prestera: try to load previous fw version")
      Signed-off-by: default avatarJonas Gorski <jonas.gorski@bisdn.de>
      Acked-by: default avatarElad Nachman <enachman@marvell.com>
      Reviewed-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
      Acked-by: default avatarTaras Chornyi <taras.chornyi@plvision.eu>
      Link: https://lore.kernel.org/r/20230802092357.163944-1-jonas.gorski@bisdn.de
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      b755c25f
    • Linus Torvalds's avatar
      Merge tag 'nfsd-6.5-3' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux · 7bafbd40
      Linus Torvalds authored
      Pull nfsd fix from Chuck Lever:
      
       - Fix tmpfs splice read support
      
      * tag 'nfsd-6.5-3' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux:
        nfsd: Fix reading via splice
      7bafbd40
    • Linus Torvalds's avatar
      Merge tag 'erofs-for-6.5-rc5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs · 556c9424
      Linus Torvalds authored
      Pull erofs fixes from Gao Xiang:
      
       - Fix data corruption caused by insufficient decompression on
         deduplicated compressed extents
      
       - Drop a useless s_magic checking in erofs_kill_sb()
      
      * tag 'erofs-for-6.5-rc5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs:
        erofs: drop unnecessary WARN_ON() in erofs_kill_sb()
        erofs: fix wrong primary bvec selection on deduplicated extents
      556c9424
    • Linus Torvalds's avatar
      Merge tag 's390-6.5-4' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 5e0ba145
      Linus Torvalds authored
      Pull s390 fixes from Heiko Carstens:
      
       - Split kernel large page mappings into 4k mappings in case debug
         pagealloc is enabled again. This got accidentally removed by commit
         bb1520d5 ("s390/mm: start kernel with DAT enabled")
      
       - Fix error handling in KVM's sthyi handling
      
       - Add missing include to s390's uapi ptrace.h
      
       - Update defconfigs
      
      * tag 's390-6.5-4' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
        s390/ptrace: add missing linux/const.h include
        KVM: s390: fix sthyi error handling
        s390: update defconfigs
        s390/vmem: split pages when debug pagealloc is enabled
      5e0ba145
  3. Aug 03, 2023
    • David Howells's avatar
      udp: Fix __ip_append_data()'s handling of MSG_SPLICE_PAGES · 0f71c9ca
      David Howells authored
      __ip_append_data() can get into an infinite loop when asked to splice into
      a partially-built UDP message that has more than the frag-limit data and up
      to the MTU limit.  Something like:
      
              pipe(pfd);
              sfd = socket(AF_INET, SOCK_DGRAM, 0);
              connect(sfd, ...);
              send(sfd, buffer, 8161, MSG_CONFIRM|MSG_MORE);
              write(pfd[1], buffer, 8);
              splice(pfd[0], 0, sfd, 0, 0x4ffe0ul, 0);
      
      where the amount of data given to send() is dependent on the MTU size (in
      this instance an interface with an MTU of 8192).
      
      The problem is that the calculation of the amount to copy in
      __ip_append_data() goes negative in two places, and, in the second place,
      this gets subtracted from the length remaining, thereby increasing it.
      
      This happens when pagedlen > 0 (which happens for MSG_ZEROCOPY and
      MSG_SPLICE_PAGES), because the terms in:
      
              copy = datalen - transhdrlen - fraggap - pagedlen;
      
      then mostly cancel when pagedlen is substituted for, leaving just -fraggap.
      This causes:
      
              length -= copy + transhdrlen;
      
      to increase the length to more than the amount of data in msg->msg_iter,
      which causes skb_splice_from_iter() to be unable to fill the request and it
      returns less than 'copied' - which means that length never gets to 0 and we
      never exit the loop.
      
      Fix this by:
      
       (1) Insert a note about the dodgy calculation of 'copy'.
      
       (2) If MSG_SPLICE_PAGES, clear copy if it is negative from the above
           equation, so that 'offset' isn't regressed and 'length' isn't
           increased, which will mean that length and thus copy should match the
           amount left in the iterator.
      
       (3) When handling MSG_SPLICE_PAGES, give a warning and return -EIO if
           we're asked to splice more than is in the iterator.  It might be
           better to not give the warning or even just give a 'short' write.
      
      [!] Note that this ought to also affect MSG_ZEROCOPY, but MSG_ZEROCOPY
      avoids the problem by simply assuming that everything asked for got copied,
      not just the amount that was in the iterator.  This is a potential bug for
      the future.
      
      Fixes: 7ac7c987
      
       ("udp: Convert udp_sendpage() to use MSG_SPLICE_PAGES")
      Reported-by: default avatar <syzbot+f527b971b4bdc8e79f9e@syzkaller.appspotmail.com>
      Link: https://lore.kernel.org/r/000000000000881d0606004541d1@google.com/
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: David Ahern <dsahern@kernel.org>
      cc: Jens Axboe <axboe@kernel.dk>
      Reviewed-by: default avatarWillem de Bruijn <willemb@google.com>
      Link: https://lore.kernel.org/r/1420063.1690904933@warthog.procyon.org.uk
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      0f71c9ca
    • Jakub Kicinski's avatar
      Merge branch 'mlx5-ipsec-fixes' · a2d9831d
      Jakub Kicinski authored
      
      
      Leon Romanovsky says:
      
      ====================
      mlx5 IPsec fixes
      
      The following patches are combination of Jianbo's work on IPsec eswitch mode
      together with our internal review toward addition of TCP protocol selectors
      support to IPSec packet offload.
      
      Despite not-being fix, the first patch helps us to make second one more
      clear, so I'm asking to apply it anyway as part of this series.
      ====================
      
      Link: https://lore.kernel.org/r/cover.1690803944.git.leonro@nvidia.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      a2d9831d
    • Leon Romanovsky's avatar
      net/mlx5e: Set proper IPsec source port in L4 selector · 62da0833
      Leon Romanovsky authored
      Fix typo in setup_fte_upper_proto_match() where destination UDP port
      was used instead of source port.
      
      Fixes: a7385187
      
       ("net/mlx5e: IPsec, support upper protocol selector field offload")
      Signed-off-by: default avatarLeon Romanovsky <leonro@nvidia.com>
      Link: https://lore.kernel.org/r/ffc024a4d192113103f392b0502688366ca88c1f.1690803944.git.leonro@nvidia.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      62da0833
    • Jianbo Liu's avatar
      net/mlx5: fs_core: Skip the FTs in the same FS_TYPE_PRIO_CHAINS fs_prio · c635ca45
      Jianbo Liu authored
      In the cited commit, new type of FS_TYPE_PRIO_CHAINS fs_prio was added
      to support multiple parallel namespaces for multi-chains. And we skip
      all the flow tables under the fs_node of this type unconditionally,
      when searching for the next or previous flow table to connect for a
      new table.
      
      As this search function is also used for find new root table when the
      old one is being deleted, it will skip the entire FS_TYPE_PRIO_CHAINS
      fs_node next to the old root. However, new root table should be chosen
      from it if there is any table in it. Fix it by skipping only the flow
      tables in the same FS_TYPE_PRIO_CHAINS fs_node when finding the
      closest FT for a fs_node.
      
      Besides, complete the connecting from FTs of previous priority of prio
      because there should be multiple prevs after this fs_prio type is
      introduced. And also the next FT should be chosen from the first flow
      table next to the prio in the same FS_TYPE_PRIO_CHAINS fs_prio, if
      this prio is the first child.
      
      Fixes: 328edb49
      
       ("net/mlx5: Split FDB fast path prio to multiple namespaces")
      Signed-off-by: default avatarJianbo Liu <jianbol@nvidia.com>
      Reviewed-by: default avatarPaul Blakey <paulb@nvidia.com>
      Signed-off-by: default avatarLeon Romanovsky <leonro@nvidia.com>
      Link: https://lore.kernel.org/r/7a95754df479e722038996c97c97b062b372591f.1690803944.git.leonro@nvidia.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      c635ca45
    • Jianbo Liu's avatar
      net/mlx5: fs_core: Make find_closest_ft more generic · 618d28a5
      Jianbo Liu authored
      
      
      As find_closest_ft_recursive is called to find the closest FT, the
      first parameter of find_closest_ft can be changed from fs_prio to
      fs_node. Thus this function is extended to find the closest FT for the
      nodes of any type, not only prios, but also the sub namespaces.
      
      Signed-off-by: default avatarJianbo Liu <jianbol@nvidia.com>
      Signed-off-by: default avatarLeon Romanovsky <leonro@nvidia.com>
      Link: https://lore.kernel.org/r/d3962c2b443ec8dde7a740dc742a1f052d5e256c.1690803944.git.leonro@nvidia.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      618d28a5
    • Linus Torvalds's avatar
      Merge tag 'soc-fixes-6.5-2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · ec351c8f
      Linus Torvalds authored
      Pull ARM SoC fixes from Arnd Bergmann:
       "A couple of platforms get a lone dts fix each:
      
         - SoCFPGA: Fix incorrect I2C property for SCL signal
      
         - Renesas: Fix interrupt names for MTU3 channels on RZ/G2L and
           RZ/V2L.
      
         - Juno/Vexpress: remove a dangling symlink
      
         - at91: sam9x60 SoC detection compatible strings
      
         - nspire: Fix arm primecell compatible string
      
        On the NXP i.MX platform, there multiple issues that get addressed:
      
         - A couple of ARM DTS fixes for i.MX6SLL usbphy and supported CPU
           frequency of sk-imx53 board
      
         - Add missing pull-up for imx8mn-var-som onboard PHY reset pinmux
      
         - A couple of imx8mm-venice fixes from Tim Harvey to diable
           disp_blk_ctrl
      
         - A couple of phycore-imx8mm fixes from Yashwanth Varakala to correct
           VPU label and gpio-line-names
      
         - Fix imx8mp-blk-ctrl driver to register HSIO PLL clock as
           bus_power_dev child, so that runtime PM can translate into the
           necessary GPC power domain action
      
        On the driver side, there are two fixes for tegra memory controller
        drivers addressing regressions from the merge window, a couple of
        minor correctness fixes for SCMI and SMCCC firmware, as well as a
        build fix for an lcd backlight driver"
      
      * tag 'soc-fixes-6.5-2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (22 commits)
        backlight: corgi_lcd: fix missing prototype
        memory: tegra: make icc_set_bw return zero if BWMGR not supported
        arm64: dts: renesas: rzg2l: Update overfow/underflow IRQ names for MTU3 channels
        dt-bindings: serial: atmel,at91-usart: update compatible for sam9x60
        ARM: dts: at91: sam9x60: fix the SOC detection
        ARM: dts: nspire: Fix arm primecell compatible string
        firmware: arm_scmi: Fix chan_free cleanup on SMC
        firmware: arm_scmi: Drop OF node reference in the transport channel setup
        soc: imx: imx8mp-blk-ctrl: register HSIO PLL clock as bus_power_dev child
        ARM: dts: nxp/imx: limit sk-imx53 supported frequencies
        firmware: arm_scmi: Fix signed error return values handling
        firmware: smccc: Fix use of uninitialised results structure
        arm64: dts: freescale: Fix VPU G2 clock
        arm64: dts: imx8mn-var-som: add missing pull-up for onboard PHY reset pinmux
        arm64: dts: phycore-imx8mm: Correction in gpio-line-names
        arm64: dts: phycore-imx8mm: Label typo-fix of VPU
        ARM: dts: nxp/imx6sll: fix wrong property name in usbphy node
        arm64: dts: imx8mm-venice-gw7904: disable disp_blk_ctrl
        arm64: dts: imx8mm-venice-gw7903: disable disp_blk_ctrl
        arm64: dts: arm: Remove the dangling vexpress-v2m-rs1.dtsi symlink
        ...
      ec351c8f
    • Linus Torvalds's avatar
      Merge tag 'bitmap-6.5-rc5' of https://github.com:/norov/linux · a4e98a30
      Linus Torvalds authored
      Pull bitmap fixes from Yury Norov:
      
       - Fix for bitmap documentation
      
       - Fix for kernel build under certain configurations
      
      * tag 'bitmap-6.5-rc5' of https://github.com:/norov/linux:
        lib/bitmap: workaround const_eval test build failure
        cpumask: eliminate kernel-doc warnings
      a4e98a30
    • Linus Torvalds's avatar
      Merge tag 'exfat-for-6.5-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat · 4b954598
      Linus Torvalds authored
      Pull exfat fixes from Namjae Jeon:
      
       - Fix page allocation failure from allocation bitmap by using
         kvmalloc_array/kvfree
      
       - Add the check to validate if filename entries exceeds max filename
         length
      
       - Fix potential deadlock condition from dir_emit*()
      
      * tag 'exfat-for-6.5-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat:
        exfat: release s_lock before calling dir_emit()
        exfat: check if filename entries exceeds max filename length
        exfat: use kvmalloc_array/kvfree instead of kmalloc_array/kfree
      4b954598
    • Linus Torvalds's avatar
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · 79d65ee5
      Linus Torvalds authored
      Pull SCSI fixes from James Bottomley:
       "Three small fixes, all in drivers"
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        scsi: pm80xx: Fix error return code in pm8001_pci_probe()
        scsi: zfcp: Defer fc_rport blocking until after ADISC response
        scsi: storvsc: Limit max_sectors for virtual Fibre Channel devices
      79d65ee5
    • ndesaulniers@google.com's avatar
      word-at-a-time: use the same return type for has_zero regardless of endianness · 79e8328e
      ndesaulniers@google.com authored
      Compiling big-endian targets with Clang produces the diagnostic:
      
        fs/namei.c:2173:13: warning: use of bitwise '|' with boolean operands [-Wbitwise-instead-of-logical]
      	} while (!(has_zero(a, &adata, &constants) | has_zero(b, &bdata, &constants)));
      	          ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                                     ||
        fs/namei.c:2173:13: note: cast one or both operands to int to silence this warning
      
      It appears that when has_zero was introduced, two definitions were
      produced with different signatures (in particular different return
      types).
      
      Looking at the usage in hash_name() in fs/namei.c, I suspect that
      has_zero() is meant to be invoked twice per while loop iteration; using
      logical-or would not update `bdata` when `a` did not have zeros.  So I
      think it's preferred to always return an unsigned long rather than a
      bool than update the while loop in hash_name() to use a logical-or
      rather than bitwise-or.
      
      [ Also changed powerpc version to do the same  - Linus ]
      
      Link: https://github.com/ClangBuiltLinux/linux/issues/1832
      Link: https://lore.kernel.org/lkml/20230801-bitwise-v1-1-799bec468dc4@google.com/
      Fixes: 36126f8f
      
       ("word-at-a-time: make the interfaces truly generic")
      Debugged-by: default avatarNathan Chancellor <nathan@kernel.org>
      Signed-off-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Acked-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      79e8328e
  4. Aug 02, 2023
    • Hans de Goede's avatar
      wifi: brcmfmac: Fix field-spanning write in brcmf_scan_params_v2_to_v1() · 16e455a4
      Hans de Goede authored
      
      
      Using brcmfmac with 6.5-rc3 on a brcmfmac43241b4-sdio triggers
      a backtrace caused by the following field-spanning warning:
      
      memcpy: detected field-spanning write (size 120) of single field
        "&params_le->channel_list[0]" at
        drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c:1072 (size 2)
      
      The driver still works after this warning. The warning was introduced by the
      new field-spanning write checks which were enabled recently.
      
      Fix this by replacing the channel_list[1] declaration at the end of
      the struct with a flexible array declaration.
      
      Most users of struct brcmf_scan_params_le calculate the size to alloc
      using the size of the non flex-array part of the struct + needed extra
      space, so they do not care about sizeof(struct brcmf_scan_params_le).
      
      brcmf_notify_escan_complete() however uses the struct on the stack,
      expecting there to be room for at least 1 entry in the channel-list
      to store the special -1 abort channel-id.
      
      To make this work use an anonymous union with a padding member
      added + the actual channel_list flexible array.
      
      Cc: Kees Cook <keescook@chromium.org>
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Reviewed-by: default avatarFranky Lin <franky.lin@broadcom.com>
      Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
      Link: https://lore.kernel.org/r/20230729140500.27892-1-hdegoede@redhat.com
      16e455a4
    • Benjamin Poirier's avatar
      vxlan: Fix nexthop hash size · 0756384f
      Benjamin Poirier authored
      The nexthop code expects a 31 bit hash, such as what is returned by
      fib_multipath_hash() and rt6_multipath_hash(). Passing the 32 bit hash
      returned by skb_get_hash() can lead to problems related to the fact that
      'int hash' is a negative number when the MSB is set.
      
      In the case of hash threshold nexthop groups, nexthop_select_path_hthr()
      will disproportionately select the first nexthop group entry. In the case
      of resilient nexthop groups, nexthop_select_path_res() may do an out of
      bounds access in nh_buckets[], for example:
          hash = -912054133
          num_nh_buckets = 2
          bucket_index = 65535
      
      which leads to the following panic:
      
      BUG: unable to handle page fault for address: ffffc900025910c8
      PGD 100000067 P4D 100000067 PUD 10026b067 PMD 0
      Oops: 0002 [#1] PREEMPT SMP KASAN NOPTI
      CPU: 4 PID: 856 Comm: kworker/4:3 Not tainted 6.5.0-rc2+ #34
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
      Workqueue: ipv6_addrconf addrconf_dad_work
      RIP: 0010:nexthop_select_path+0x197/0xbf0
      Code: c1 e4 05 be 08 00 00 00 4c 8b 35 a4 14 7e 01 4e 8d 6c 25 00 4a 8d 7c 25 08 48 01 dd e8 c2 25 15 ff 49 8d 7d 08 e8 39 13 15 ff <4d> 89 75 08 48 89 ef e8 7d 12 15 ff 48 8b 5d 00 e8 14 55 2f 00 85
      RSP: 0018:ffff88810c36f260 EFLAGS: 00010246
      RAX: 0000000000000000 RBX: 00000000002000c0 RCX: ffffffffaf02dd77
      RDX: dffffc0000000000 RSI: 0000000000000008 RDI: ffffc900025910c8
      RBP: ffffc900025910c0 R08: 0000000000000001 R09: fffff520004b2219
      R10: ffffc900025910cf R11: 31392d2068736168 R12: 00000000002000c0
      R13: ffffc900025910c0 R14: 00000000fffef608 R15: ffff88811840e900
      FS:  0000000000000000(0000) GS:ffff8881f7000000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: ffffc900025910c8 CR3: 0000000129d00000 CR4: 0000000000750ee0
      PKRU: 55555554
      Call Trace:
       <TASK>
       ? __die+0x23/0x70
       ? page_fault_oops+0x1ee/0x5c0
       ? __pfx_is_prefetch.constprop.0+0x10/0x10
       ? __pfx_page_fault_oops+0x10/0x10
       ? search_bpf_extables+0xfe/0x1c0
       ? fixup_exception+0x3b/0x470
       ? exc_page_fault+0xf6/0x110
       ? asm_exc_page_fault+0x26/0x30
       ? nexthop_select_path+0x197/0xbf0
       ? nexthop_select_path+0x197/0xbf0
       ? lock_is_held_type+0xe7/0x140
       vxlan_xmit+0x5b2/0x2340
       ? __lock_acquire+0x92b/0x3370
       ? __pfx_vxlan_xmit+0x10/0x10
       ? __pfx___lock_acquire+0x10/0x10
       ? __pfx_register_lock_class+0x10/0x10
       ? skb_network_protocol+0xce/0x2d0
       ? dev_hard_start_xmit+0xca/0x350
       ? __pfx_vxlan_xmit+0x10/0x10
       dev_hard_start_xmit+0xca/0x350
       __dev_queue_xmit+0x513/0x1e20
       ? __pfx___dev_queue_xmit+0x10/0x10
       ? __pfx_lock_release+0x10/0x10
       ? mark_held_locks+0x44/0x90
       ? skb_push+0x4c/0x80
       ? eth_header+0x81/0xe0
       ? __pfx_eth_header+0x10/0x10
       ? neigh_resolve_output+0x215/0x310
       ? ip6_finish_output2+0x2ba/0xc90
       ip6_finish_output2+0x2ba/0xc90
       ? lock_release+0x236/0x3e0
       ? ip6_mtu+0xbb/0x240
       ? __pfx_ip6_finish_output2+0x10/0x10
       ? find_held_lock+0x83/0xa0
       ? lock_is_held_type+0xe7/0x140
       ip6_finish_output+0x1ee/0x780
       ip6_output+0x138/0x460
       ? __pfx_ip6_output+0x10/0x10
       ? __pfx___lock_acquire+0x10/0x10
       ? __pfx_ip6_finish_output+0x10/0x10
       NF_HOOK.constprop.0+0xc0/0x420
       ? __pfx_NF_HOOK.constprop.0+0x10/0x10
       ? ndisc_send_skb+0x2c0/0x960
       ? __pfx_lock_release+0x10/0x10
       ? __local_bh_enable_ip+0x93/0x110
       ? lock_is_held_type+0xe7/0x140
       ndisc_send_skb+0x4be/0x960
       ? __pfx_ndisc_send_skb+0x10/0x10
       ? mark_held_locks+0x65/0x90
       ? find_held_lock+0x83/0xa0
       ndisc_send_ns+0xb0/0x110
       ? __pfx_ndisc_send_ns+0x10/0x10
       addrconf_dad_work+0x631/0x8e0
       ? lock_acquire+0x180/0x3f0
       ? __pfx_addrconf_dad_work+0x10/0x10
       ? mark_held_locks+0x24/0x90
       process_one_work+0x582/0x9c0
       ? __pfx_process_one_work+0x10/0x10
       ? __pfx_do_raw_spin_lock+0x10/0x10
       ? mark_held_locks+0x24/0x90
       worker_thread+0x93/0x630
       ? __kthread_parkme+0xdc/0x100
       ? __pfx_worker_thread+0x10/0x10
       kthread+0x1a5/0x1e0
       ? __pfx_kthread+0x10/0x10
       ret_from_fork+0x34/0x60
       ? __pfx_kthread+0x10/0x10
       ret_from_fork_asm+0x1b/0x30
      RIP: 0000:0x0
      Code: Unable to access opcode bytes at 0xffffffffffffffd6.
      RSP: 0000:0000000000000000 EFLAGS: 00000000 ORIG_RAX: 0000000000000000
      RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
      RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
      RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
      R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
       </TASK>
      Modules linked in:
      CR2: ffffc900025910c8
      ---[ end trace 0000000000000000 ]---
      RIP: 0010:nexthop_select_path+0x197/0xbf0
      Code: c1 e4 05 be 08 00 00 00 4c 8b 35 a4 14 7e 01 4e 8d 6c 25 00 4a 8d 7c 25 08 48 01 dd e8 c2 25 15 ff 49 8d 7d 08 e8 39 13 15 ff <4d> 89 75 08 48 89 ef e8 7d 12 15 ff 48 8b 5d 00 e8 14 55 2f 00 85
      RSP: 0018:ffff88810c36f260 EFLAGS: 00010246
      RAX: 0000000000000000 RBX: 00000000002000c0 RCX: ffffffffaf02dd77
      RDX: dffffc0000000000 RSI: 0000000000000008 RDI: ffffc900025910c8
      RBP: ffffc900025910c0 R08: 0000000000000001 R09: fffff520004b2219
      R10: ffffc900025910cf R11: 31392d2068736168 R12: 00000000002000c0
      R13: ffffc900025910c0 R14: 00000000fffef608 R15: ffff88811840e900
      FS:  0000000000000000(0000) GS:ffff8881f7000000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: ffffffffffffffd6 CR3: 0000000129d00000 CR4: 0000000000750ee0
      PKRU: 55555554
      Kernel panic - not syncing: Fatal exception in interrupt
      Kernel Offset: 0x2ca00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
      ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---
      
      Fix this problem by ensuring the MSB of hash is 0 using a right shift - the
      same approach used in fib_multipath_hash() and rt6_multipath_hash().
      
      Fixes: 1274e1cc
      
       ("vxlan: ecmp support for mac fdb entries")
      Signed-off-by: default avatarBenjamin Poirier <bpoirier@nvidia.com>
      Reviewed-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Reviewed-by: default avatarSimon Horman <horms@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0756384f
    • Yue Haibing's avatar
      ip6mr: Fix skb_under_panic in ip6mr_cache_report() · 30e0191b
      Yue Haibing authored
      skbuff: skb_under_panic: text:ffffffff88771f69 len:56 put:-4
       head:ffff88805f86a800 data:ffff887f5f86a850 tail:0x88 end:0x2c0 dev:pim6reg
       ------------[ cut here ]------------
       kernel BUG at net/core/skbuff.c:192!
       invalid opcode: 0000 [#1] PREEMPT SMP KASAN
       CPU: 2 PID: 22968 Comm: kworker/2:11 Not tainted 6.5.0-rc3-00044-g0a8db05b571a #236
       Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
       Workqueue: ipv6_addrconf addrconf_dad_work
       RIP: 0010:skb_panic+0x152/0x1d0
       Call Trace:
        <TASK>
        skb_push+0xc4/0xe0
        ip6mr_cache_report+0xd69/0x19b0
        reg_vif_xmit+0x406/0x690
        dev_hard_start_xmit+0x17e/0x6e0
        __dev_queue_xmit+0x2d6a/0x3d20
        vlan_dev_hard_start_xmit+0x3ab/0x5c0
        dev_hard_start_xmit+0x17e/0x6e0
        __dev_queue_xmit+0x2d6a/0x3d20
        neigh_connected_output+0x3ed/0x570
        ip6_finish_output2+0x5b5/0x1950
        ip6_finish_output+0x693/0x11c0
        ip6_output+0x24b/0x880
        NF_HOOK.constprop.0+0xfd/0x530
        ndisc_send_skb+0x9db/0x1400
        ndisc_send_rs+0x12a/0x6c0
        addrconf_dad_completed+0x3c9/0xea0
        addrconf_dad_work+0x849/0x1420
        process_one_work+0xa22/0x16e0
        worker_thread+0x679/0x10c0
        ret_from_fork+0x28/0x60
        ret_from_fork_asm+0x11/0x20
      
      When setup a vlan device on dev pim6reg, DAD ns packet may sent on reg_vif_xmit().
      reg_vif_xmit()
          ip6mr_cache_report()
              skb_push(skb, -skb_network_offset(pkt));//skb_network_offset(pkt) is 4
      And skb_push declared as:
      	void *skb_push(struct sk_buff *skb, unsigned int len);
      		skb->data -= len;
      		//0xffff88805f86a84c - 0xfffffffc = 0xffff887f5f86a850
      skb->data is set to 0xffff887f5f86a850, which is invalid mem addr, lead to skb_push() fails.
      
      Fixes: 14fb64e1
      
       ("[IPV6] MROUTE: Support PIM-SM (SSM).")
      Signed-off-by: default avatarYue Haibing <yuehaibing@huawei.com>
      Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      30e0191b
    • Alexandra Winter's avatar
      s390/qeth: Don't call dev_close/dev_open (DOWN/UP) · 1cfef80d
      Alexandra Winter authored
      dev_close() and dev_open() are issued to change the interface state to DOWN
      or UP (dev->flags IFF_UP). When the netdev is set DOWN it loses e.g its
      Ipv6 addresses and routes. We don't want this in cases of device recovery
      (triggered by hardware or software) or when the qeth device is set
      offline.
      
      Setting a qeth device offline or online and device recovery actions call
      netif_device_detach() and/or netif_device_attach(). That will reset or
      set the LOWER_UP indication i.e. change the dev->state Bit
      __LINK_STATE_PRESENT. That is enough to e.g. cause bond failovers, and
      still preserves the interface settings that are handled by the network
      stack.
      
      Don't call dev_open() nor dev_close() from the qeth device driver. Let the
      network stack handle this.
      
      Fixes: d4560150
      
       ("s390/qeth: call dev_close() during recovery")
      Signed-off-by: default avatarAlexandra Winter <wintera@linux.ibm.com>
      Reviewed-by: default avatarWenjia Zhang <wenjia@linux.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1cfef80d
    • David S. Miller's avatar
      Merge branch 'tun-tap-uid' · 666c135b
      David S. Miller authored
      
      
      Laszlo Ersek says:
      
      ====================
      tun/tap: set sk_uid from current_fsuid()
      
      The original patches fixing CVE-2023-1076 are incorrect in my opinion.
      This small series fixes them up; see the individual commit messages for
      explanation.
      
      I have a very elaborate test procedure demonstrating the problem for
      both tun and tap; it involves libvirt, qemu, and "crash". I can share
      that procedure if necessary, but it's indeed quite long (I wrote it
      originally for our QE team).
      
      The patches in this series are supposed to "re-fix" CVE-2023-1076; given
      that said CVE is classified as Low Impact (CVSSv3=5.5), I'm posting this
      publicly, and not suggesting any embargo. Red Hat Product Security may
      assign a new CVE number later.
      
      I've tested the patches on top of v6.5-rc4, with "crash" built at commit
      c74f375e0ef7.
      
      Cc: Eric Dumazet <edumazet@google.com>
      Cc: Lorenzo Colitti <lorenzo@google.com>
      Cc: Paolo Abeni <pabeni@redhat.com>
      Cc: Pietro Borrello <borrello@diag.uniroma1.it>
      Cc: netdev@vger.kernel.org
      Cc: stable@vger.kernel.org
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      666c135b
    • Laszlo Ersek's avatar
      net: tap_open(): set sk_uid from current_fsuid() · 5c9241f3
      Laszlo Ersek authored
      Commit 66b2c338 initializes the "sk_uid" field in the protocol socket
      (struct sock) from the "/dev/tapX" device node's owner UID. Per original
      commit 86741ec2 ("net: core: Add a UID field to struct sock.",
      2016-11-04), that's wrong: the idea is to cache the UID of the userspace
      process that creates the socket. Commit 86741ec2 mentions socket() and
      accept(); with "tap", the action that creates the socket is
      open("/dev/tapX").
      
      Therefore the device node's owner UID is irrelevant. In most cases,
      "/dev/tapX" will be owned by root, so in practice, commit 66b2c338 has
      no observable effect:
      
      - before, "sk_uid" would be zero, due to undefined behavior
        (CVE-2023-1076),
      
      - after, "sk_uid" would be zero, due to "/dev/tapX" being owned by root.
      
      What matters is the (fs)UID of the process performing the open(), so cache
      that in "sk_uid".
      
      Cc: Eric Dumazet <edumazet@google.com>
      Cc: Lorenzo Colitti <lorenzo@google.com>
      Cc: Paolo Abeni <pabeni@redhat.com>
      Cc: Pietro Borrello <borrello@diag.uniroma1.it>
      Cc: netdev@vger.kernel.org
      Cc: stable@vger.kernel.org
      Fixes: 66b2c338
      
       ("tap: tap_open(): correctly initialize socket uid")
      Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2173435
      Signed-off-by: default avatarLaszlo Ersek <lersek@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5c9241f3