]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.6-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 15 Jun 2026 04:11:51 +0000 (06:11 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 15 Jun 2026 04:11:51 +0000 (06:11 +0200)
added patches:
bluetooth-hci_sync-reject-oversized-broadcast-announcement-prepend.patch
bluetooth-l2cap-reject-br-edr-signaling-packets-over-mtusig.patch
drm-i915-gem-fix-phys-bo-pread-pwrite-with-offset.patch
kvm-don-t-warn-if-memory-is-dirtied-without-a-vcpu-when-the-vm-is-dying.patch
mmc-litex_mmc-use-div_round_up-for-more-accurate-clock-calculation.patch
netfilter-nft_tunnel-fix-use-after-free-on-object-destroy.patch
tracing-probes-point-the-error-offset-correctly-for-eprobe-argument-error.patch

queue-6.6/bluetooth-hci_sync-reject-oversized-broadcast-announcement-prepend.patch [new file with mode: 0644]
queue-6.6/bluetooth-l2cap-reject-br-edr-signaling-packets-over-mtusig.patch [new file with mode: 0644]
queue-6.6/drm-i915-gem-fix-phys-bo-pread-pwrite-with-offset.patch [new file with mode: 0644]
queue-6.6/kvm-don-t-warn-if-memory-is-dirtied-without-a-vcpu-when-the-vm-is-dying.patch [new file with mode: 0644]
queue-6.6/mmc-litex_mmc-use-div_round_up-for-more-accurate-clock-calculation.patch [new file with mode: 0644]
queue-6.6/netfilter-nft_tunnel-fix-use-after-free-on-object-destroy.patch [new file with mode: 0644]
queue-6.6/series
queue-6.6/tracing-probes-point-the-error-offset-correctly-for-eprobe-argument-error.patch [new file with mode: 0644]

diff --git a/queue-6.6/bluetooth-hci_sync-reject-oversized-broadcast-announcement-prepend.patch b/queue-6.6/bluetooth-hci_sync-reject-oversized-broadcast-announcement-prepend.patch
new file mode 100644 (file)
index 0000000..da14eed
--- /dev/null
@@ -0,0 +1,47 @@
+From 5c65b96b549ea2dcfde497436bf9e048deb87758 Mon Sep 17 00:00:00 2001
+From: Yuqi Xu <xuyq21@lenovo.com>
+Date: Fri, 29 May 2026 16:54:23 +0800
+Subject: Bluetooth: hci_sync: reject oversized Broadcast Announcement prepend
+
+From: Yuqi Xu <xuyq21@lenovo.com>
+
+commit 5c65b96b549ea2dcfde497436bf9e048deb87758 upstream.
+
+Existing advertising instances can already hold the maximum extended
+advertising payload. When hci_adv_bcast_annoucement() prepends the
+Broadcast Announcement service data to that payload, the combined data
+may no longer fit in the temporary buffer used to rebuild the
+advertising data.
+
+Reject that case before copying the existing payload and report the
+failure through the device log. This keeps the existing advertising
+data intact and avoids overrunning the temporary buffer.
+
+Fixes: 5725bc608252 ("Bluetooth: hci_sync: Fix broadcast/PA when using an existing instance")
+Cc: stable@kernel.org
+Reported-by: Yuan Tan <yuantan098@gmail.com>
+Reported-by: Zhengchuan Liang <zcliangcn@gmail.com>
+Reported-by: Xin Liu <bird@lzu.edu.cn>
+Assisted-by: Codex:GPT-5.4
+Signed-off-by: Yuqi Xu <xuyq21@lenovo.com>
+Signed-off-by: Ren Wei <n05ec@lzu.edu.cn>
+Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/bluetooth/hci_sync.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/net/bluetooth/hci_sync.c
++++ b/net/bluetooth/hci_sync.c
+@@ -1759,6 +1759,11 @@ static int hci_adv_bcast_annoucement(str
+       /* Generate Broadcast ID */
+       get_random_bytes(bid, sizeof(bid));
+       len = eir_append_service_data(ad, 0, 0x1852, bid, sizeof(bid));
++      if (adv->adv_data_len > sizeof(ad) - len) {
++              bt_dev_err(hdev, "No room for Broadcast Announcement");
++              return -EINVAL;
++      }
++
+       memcpy(ad + len, adv->adv_data, adv->adv_data_len);
+       hci_set_adv_instance_data(hdev, adv->instance, len + adv->adv_data_len,
+                                 ad, 0, NULL);
diff --git a/queue-6.6/bluetooth-l2cap-reject-br-edr-signaling-packets-over-mtusig.patch b/queue-6.6/bluetooth-l2cap-reject-br-edr-signaling-packets-over-mtusig.patch
new file mode 100644 (file)
index 0000000..9f442f8
--- /dev/null
@@ -0,0 +1,128 @@
+From dd214733544427587a95f66dbf3adff072568990 Mon Sep 17 00:00:00 2001
+From: Michael Bommarito <michael.bommarito@gmail.com>
+Date: Thu, 21 May 2026 10:45:17 -0400
+Subject: Bluetooth: L2CAP: reject BR/EDR signaling packets over MTUsig
+
+From: Michael Bommarito <michael.bommarito@gmail.com>
+
+commit dd214733544427587a95f66dbf3adff072568990 upstream.
+
+net/bluetooth/l2cap_core.c:l2cap_sig_channel() accepts BR/EDR
+signaling packets up to the channel MTU and dispatches each command
+without enforcing the signaling MTU (MTUsig). A Bluetooth BR/EDR peer
+within radio range can send a fixed-channel CID 0x0001 packet that is
+larger than MTUsig and contains many L2CAP_ECHO_REQ commands before
+pairing. In a real-radio stock-kernel run, one 681-byte signaling
+packet containing 168 zero-length ECHO_REQ commands made the target
+transmit 168 ECHO_RSP frames over about 220 ms.
+
+Impact: a Bluetooth BR/EDR peer within radio range, before pairing, can
+force 168 ECHO_RSP frames from one 681-byte fixed-channel signaling
+packet containing packed ECHO_REQ commands.
+
+Define Linux's BR/EDR signaling MTU as the spec minimum of 48 bytes and
+reject any larger signaling packet with one L2CAP_COMMAND_REJECT_RSP
+carrying L2CAP_REJ_MTU_EXCEEDED before any command is dispatched.
+
+The Bluetooth Core spec wording for MTUExceeded says the reject
+identifier shall match the first request command in the packet, and
+that packets containing only responses shall be silently discarded.
+Linux intentionally deviates from that prescription: silently
+discarding desynchronizes the peer because the remote stack never
+learns its responses were dropped, and locating the first request
+command requires walking command headers past MTUsig, i.e. processing
+bytes from a packet we have already decided is too large to process.
+We therefore always emit one reject and use the identifier from the
+first command header, a single fixed-offset byte read.
+
+The unrestricted BR/EDR signaling parser and ECHO_REQ response path both
+trace to the initial git import; no later introducing commit is
+available for a Fixes tag.
+
+Cc: stable@vger.kernel.org
+Suggested-by: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
+Link: https://lore.kernel.org/r/20260518002800.1361430-1-michael.bommarito@gmail.com
+Link: https://lore.kernel.org/r/20260520135034.1060859-1-michael.bommarito@gmail.com
+Link: https://lore.kernel.org/r/20260521000555.3712030-1-michael.bommarito@gmail.com
+Assisted-by: Claude:claude-opus-4-7
+Assisted-by: Codex:gpt-5-5-xhigh
+Signed-off-by: Michael Bommarito <michael.bommarito@gmail.com>
+Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ include/net/bluetooth/l2cap.h |    1 
+ net/bluetooth/l2cap_core.c    |   46 ++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 47 insertions(+)
+
+--- a/include/net/bluetooth/l2cap.h
++++ b/include/net/bluetooth/l2cap.h
+@@ -33,6 +33,7 @@
+ /* L2CAP defaults */
+ #define L2CAP_DEFAULT_MTU             672
+ #define L2CAP_DEFAULT_MIN_MTU         48
++#define L2CAP_SIG_MTU                 48      /* BR/EDR signaling MTU */
+ #define L2CAP_DEFAULT_FLUSH_TO                0xFFFF
+ #define L2CAP_EFS_DEFAULT_FLUSH_TO    0xFFFFFFFF
+ #define L2CAP_DEFAULT_TX_WINDOW               63
+--- a/net/bluetooth/l2cap_core.c
++++ b/net/bluetooth/l2cap_core.c
+@@ -5576,6 +5576,15 @@ static inline void l2cap_sig_send_rej(st
+       l2cap_send_cmd(conn, ident, L2CAP_COMMAND_REJ, sizeof(rej), &rej);
+ }
++static inline void l2cap_sig_send_mtu_rej(struct l2cap_conn *conn, u8 ident)
++{
++      struct l2cap_cmd_rej_mtu rej;
++
++      rej.reason = cpu_to_le16(L2CAP_REJ_MTU_EXCEEDED);
++      rej.max_mtu = cpu_to_le16(L2CAP_SIG_MTU);
++      l2cap_send_cmd(conn, ident, L2CAP_COMMAND_REJ, sizeof(rej), &rej);
++}
++
+ static inline void l2cap_sig_channel(struct l2cap_conn *conn,
+                                    struct sk_buff *skb)
+ {
+@@ -5588,6 +5597,43 @@ static inline void l2cap_sig_channel(str
+       if (hcon->type != ACL_LINK)
+               goto drop;
++      /*
++       * Bluetooth Core v5.4, Vol 3, Part A, Section 4: the BR/EDR
++       * signaling channel has a fixed signaling MTU (MTUsig) whose
++       * minimum and default is 48 octets.  Section 4.1 says that on
++       * an MTUExceeded command reject the identifier "shall match
++       * the first request command in the L2CAP packet" and that
++       * packets containing only response commands "shall be
++       * silently discarded".
++       *
++       * Linux intentionally deviates from that prescription:
++       *
++       *   1. Silently discarding desynchronizes the peer.  The
++       *      remote stack never learns its responses were dropped,
++       *      so any state machine waiting on a paired response
++       *      stalls until its own timer fires.
++       *
++       *   2. Locating "the first request command" requires walking
++       *      command headers past MTUsig, i.e. processing bytes
++       *      from a packet we have already decided is too large to
++       *      process.
++       *
++       * Reject every over-MTUsig signaling packet with one
++       * L2CAP_REJ_MTU_EXCEEDED command reject.  The reject's
++       * reason field is what tells the peer that the whole packet
++       * was discarded; the identifier value is informational, so
++       * we use the identifier from the first command header, a
++       * single fixed-offset byte read.
++       */
++      if (skb->len > L2CAP_SIG_MTU) {
++              u8 ident = skb->data[1];
++
++              BT_DBG("signaling packet exceeds MTU: %u > %u",
++                     skb->len, L2CAP_SIG_MTU);
++              l2cap_sig_send_mtu_rej(conn, ident);
++              goto drop;
++      }
++
+       while (skb->len >= L2CAP_CMD_HDR_SIZE) {
+               u16 len;
diff --git a/queue-6.6/drm-i915-gem-fix-phys-bo-pread-pwrite-with-offset.patch b/queue-6.6/drm-i915-gem-fix-phys-bo-pread-pwrite-with-offset.patch
new file mode 100644 (file)
index 0000000..96b24f5
--- /dev/null
@@ -0,0 +1,89 @@
+From d21ad938398bca695a511307de38a65889e3b354 Mon Sep 17 00:00:00 2001
+From: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
+Date: Wed, 10 Jun 2026 09:03:14 +0300
+Subject: drm/i915/gem: Fix phys BO pread/pwrite with offset
+
+From: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
+
+commit d21ad938398bca695a511307de38a65889e3b354 upstream.
+
+sg_page() returns struct page pointer not (void *) so the scaling
+of pread/pwrite is wrong for phys BO and wrong parts of BO would be
+accessed if non-zero offset is used.
+
+Last impacted platform with overlay or cursor planes using phys
+mapping was Gen3/945G/Lakeport.
+
+Reported-by: Matthew Wilcox (Oracle) <willy@infradead.org>
+Fixes: c6790dc22312 ("drm/i915: Wean off drm_pci_alloc/drm_pci_free")
+Cc: <stable@vger.kernel.org> # v4.5+
+Cc: Tvrtko Ursulin <tursulin@ursulin.net>
+Cc: Simona Vetter <simona@ffwll.ch>
+Cc: Jani Nikula <jani.nikula@linux.intel.com>
+Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
+Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
+Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
+Link: https://patch.msgid.link/20260610060314.26111-1-joonas.lahtinen@linux.intel.com
+(cherry picked from commit 3e49a2f85070b2fb672c1e0fdba281a4ea3aebe6)
+Signed-off-by: Tvrtko Ursulin <tursulin@ursulin.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/i915/gem/i915_gem_phys.c |   19 +++++++++++++++----
+ 1 file changed, 15 insertions(+), 4 deletions(-)
+
+--- a/drivers/gpu/drm/i915/gem/i915_gem_phys.c
++++ b/drivers/gpu/drm/i915/gem/i915_gem_phys.c
+@@ -17,6 +17,17 @@
+ #include "i915_gem_tiling.h"
+ #include "i915_scatterlist.h"
++/* Abuse scatterlist to store pointer instead of struct page. */
++static inline void __set_phys_vaddr(struct scatterlist *sg, void *vaddr)
++{
++      sg_assign_page(sg, (struct page *)vaddr);
++}
++
++static inline void *__get_phys_vaddr(struct scatterlist *sg)
++{
++      return (void *)sg_page(sg);
++}
++
+ static int i915_gem_object_get_pages_phys(struct drm_i915_gem_object *obj)
+ {
+       struct address_space *mapping = obj->base.filp->f_mapping;
+@@ -57,7 +68,7 @@ static int i915_gem_object_get_pages_phy
+       sg->offset = 0;
+       sg->length = obj->base.size;
+-      sg_assign_page(sg, (struct page *)vaddr);
++      __set_phys_vaddr(sg, vaddr);
+       sg_dma_address(sg) = dma;
+       sg_dma_len(sg) = obj->base.size;
+@@ -101,7 +112,7 @@ i915_gem_object_put_pages_phys(struct dr
+                              struct sg_table *pages)
+ {
+       dma_addr_t dma = sg_dma_address(pages->sgl);
+-      void *vaddr = sg_page(pages->sgl);
++      void *vaddr = __get_phys_vaddr(pages->sgl);
+       __i915_gem_object_release_shmem(obj, pages, false);
+@@ -144,7 +155,7 @@ i915_gem_object_put_pages_phys(struct dr
+ int i915_gem_object_pwrite_phys(struct drm_i915_gem_object *obj,
+                               const struct drm_i915_gem_pwrite *args)
+ {
+-      void *vaddr = sg_page(obj->mm.pages->sgl) + args->offset;
++      void *vaddr = __get_phys_vaddr(obj->mm.pages->sgl) + args->offset;
+       char __user *user_data = u64_to_user_ptr(args->data_ptr);
+       struct drm_i915_private *i915 = to_i915(obj->base.dev);
+       int err;
+@@ -175,7 +186,7 @@ int i915_gem_object_pwrite_phys(struct d
+ int i915_gem_object_pread_phys(struct drm_i915_gem_object *obj,
+                              const struct drm_i915_gem_pread *args)
+ {
+-      void *vaddr = sg_page(obj->mm.pages->sgl) + args->offset;
++      void *vaddr = __get_phys_vaddr(obj->mm.pages->sgl) + args->offset;
+       char __user *user_data = u64_to_user_ptr(args->data_ptr);
+       int err;
diff --git a/queue-6.6/kvm-don-t-warn-if-memory-is-dirtied-without-a-vcpu-when-the-vm-is-dying.patch b/queue-6.6/kvm-don-t-warn-if-memory-is-dirtied-without-a-vcpu-when-the-vm-is-dying.patch
new file mode 100644 (file)
index 0000000..16cf85a
--- /dev/null
@@ -0,0 +1,63 @@
+From 8618004d3e897c0f1b71d9a9ab860461289bb89a Mon Sep 17 00:00:00 2001
+From: Sean Christopherson <seanjc@google.com>
+Date: Fri, 29 May 2026 20:35:39 +0200
+Subject: KVM: Don't WARN if memory is dirtied without a vCPU when the VM is dying
+
+From: Sean Christopherson <seanjc@google.com>
+
+commit 8618004d3e897c0f1b71d9a9ab860461289bb89a upstream.
+
+When marking a page dirty, complain about not having a running/loaded vCPU
+if and only if the VM is still alive, i.e. its refcount is non-zero.  This
+will allow fixing a memory leak for x86 SEV-ES guests without hitting what
+is effectively a false positive on the WARN.
+
+For some SEV-ES VM-Exits, KVM keeps a writable mapping of a guest page
+across an exit to userspace, and typically unmaps the page on the next
+KVM_RUN.  But if userspace never calls KVM_RUN after such an exit, then KVM
+needs to unmap the page when the vCPU is destroyed, which in turn triggers
+the WARN about not having a running vCPU.
+
+Alternatively, SEV-ES could temporarily load the vCPU to suppress the WARN,
+as is done in nested_vmx_free_vcpu() (but for completely unrelated reasons;
+suppressing WARN from nested_put_vmcs12_pages() is pure happenstance).  But
+loading a vCPU during destruction is gross (ideally nVMX code would be
+cleaned up), risks complicating the SEV-ES code (KVM would need to ensure
+the temporarily load()+put() only runs when the vCPU isn't already loaded),
+and is ultimately pointless.
+
+The motivation for the WARN is to guard against KVM dirtying guest memory
+without pushing the corresponding GFN to the active vCPU's dirty ring, e.g.
+to ensure userspace doesn't miss a dirty page.  But for the VM's refcount
+to reach zero, there can't be _any_ userspace mappings to the dirty ring,
+as mapping the dirty ring requires doing mmap() on the vCPU FD.  I.e. if
+userspace had a valid mapping for the dirty ring, then the vCPU file and
+thus the owning VM would still be alive.  And so since userspace can't
+possibly reach the dirty ring, whether or not KVM technically "misses" a
+push to the dirty ring is irrelevant.
+
+Reported-by: Michael Roth <michael.roth@amd.com>
+Cc: stable@vger.kernel.org
+Reviewed-by: Michael Roth <michael.roth@amd.com>
+Signed-off-by: Sean Christopherson <seanjc@google.com>
+Message-ID: <20260501202250.2115252-15-seanjc@google.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Message-ID: <20260529183549.1104619-15-pbonzini@redhat.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ virt/kvm/kvm_main.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/virt/kvm/kvm_main.c
++++ b/virt/kvm/kvm_main.c
+@@ -3357,7 +3357,8 @@ void mark_page_dirty_in_slot(struct kvm
+       if (WARN_ON_ONCE(vcpu && vcpu->kvm != kvm))
+               return;
+-      WARN_ON_ONCE(!vcpu && !kvm_arch_allow_write_without_running_vcpu(kvm));
++      WARN_ON_ONCE(!vcpu && refcount_read(&kvm->users_count) &&
++                   !kvm_arch_allow_write_without_running_vcpu(kvm));
+ #endif
+       if (memslot && kvm_slot_dirty_track_enabled(memslot)) {
diff --git a/queue-6.6/mmc-litex_mmc-use-div_round_up-for-more-accurate-clock-calculation.patch b/queue-6.6/mmc-litex_mmc-use-div_round_up-for-more-accurate-clock-calculation.patch
new file mode 100644 (file)
index 0000000..a4ee529
--- /dev/null
@@ -0,0 +1,49 @@
+From b837e38c255dd9f8b53511d52e87f1fda32b3dfe Mon Sep 17 00:00:00 2001
+From: Inochi Amaoto <inochiama@gmail.com>
+Date: Thu, 21 May 2026 15:21:20 +0800
+Subject: mmc: litex_mmc: Use DIV_ROUND_UP for more accurate clock calculation
+
+From: Inochi Amaoto <inochiama@gmail.com>
+
+commit b837e38c255dd9f8b53511d52e87f1fda32b3dfe upstream.
+
+The previous clock uses roundup_pow_of_two() to calculate the core
+clock frequency. It does not meet the actual hardware meaning.
+The actual frequency is calculated by "ref_clk / ((div >> 1) << 1)".
+
+Fix the clock divider calculation.
+
+Fixes: 92e099104729 ("mmc: Add driver for LiteX's LiteSDCard interface")
+Signed-off-by: Inochi Amaoto <inochiama@gmail.com>
+Reviewed-by: Gabriel Somlo <gsomlo@gmail.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Ulf Hansson <ulfh@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/mmc/host/litex_mmc.c |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/mmc/host/litex_mmc.c
++++ b/drivers/mmc/host/litex_mmc.c
+@@ -16,6 +16,7 @@
+ #include <linux/interrupt.h>
+ #include <linux/iopoll.h>
+ #include <linux/litex.h>
++#include <linux/math.h>
+ #include <linux/mod_devicetable.h>
+ #include <linux/module.h>
+ #include <linux/platform_device.h>
+@@ -436,11 +437,10 @@ static void litex_mmc_setclk(struct lite
+       struct device *dev = mmc_dev(host->mmc);
+       u32 div;
+-      div = freq ? host->ref_clk / freq : 256U;
+-      div = roundup_pow_of_two(div);
++      div = freq ? DIV_ROUND_UP(host->ref_clk, freq) : 256U;
+       div = clamp(div, 2U, 256U);
+       dev_dbg(dev, "sd_clk_freq=%d: set to %d via div=%d\n",
+-              freq, host->ref_clk / div, div);
++              freq, host->ref_clk / ((div + 1) & ~1U), div);
+       litex_write16(host->sdphy + LITEX_PHY_CLOCKERDIV, div);
+       host->sd_clk = freq;
+ }
diff --git a/queue-6.6/netfilter-nft_tunnel-fix-use-after-free-on-object-destroy.patch b/queue-6.6/netfilter-nft_tunnel-fix-use-after-free-on-object-destroy.patch
new file mode 100644 (file)
index 0000000..439d4a0
--- /dev/null
@@ -0,0 +1,43 @@
+From c32b26aaa2f9216520a38b3f4bfeec846eb3eb8a Mon Sep 17 00:00:00 2001
+From: Tristan Madani <tristan@talencesecurity.com>
+Date: Wed, 27 May 2026 13:57:50 +0000
+Subject: netfilter: nft_tunnel: fix use-after-free on object destroy
+
+From: Tristan Madani <tristan@talencesecurity.com>
+
+commit c32b26aaa2f9216520a38b3f4bfeec846eb3eb8a upstream.
+
+nft_tunnel_obj_destroy() calls metadata_dst_free() which directly
+kfree()s the metadata_dst, ignoring the dst_entry refcount. Packets
+that took a reference via dst_hold() in nft_tunnel_obj_eval() and
+are still queued (e.g. in a netem qdisc) are left with a dangling
+pointer. When these packets are eventually dequeued, dst_release()
+operates on freed memory.
+
+Replace metadata_dst_free() with dst_release() so the metadata_dst
+is freed only after all references are dropped. The dst subsystem
+already handles metadata_dst cleanup in dst_destroy() when
+DST_METADATA is set.
+
+Fixes: af308b94a2a4 ("netfilter: nf_tables: add tunnel support")
+Cc: stable@vger.kernel.org
+Signed-off-by: Tristan Madani <tristan@talencesecurity.com>
+Reviewed-by: Fernando Fernandez Mancera <fmancera@suse.de>
+Signed-off-by: Florian Westphal <fw@strlen.de>
+Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/netfilter/nft_tunnel.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/netfilter/nft_tunnel.c
++++ b/net/netfilter/nft_tunnel.c
+@@ -699,7 +699,7 @@ static void nft_tunnel_obj_destroy(const
+ {
+       struct nft_tunnel_obj *priv = nft_obj_data(obj);
+-      metadata_dst_free(priv->md);
++      dst_release(&priv->md->dst);
+ }
+ static struct nft_object_type nft_tunnel_obj_type;
index e4abe2fc91ccdb229124112533de39349aa5dc28..28774350e16b7f51f756530dbfef287759e0dbc0 100644 (file)
@@ -288,3 +288,10 @@ netfilter-ctnetlink-ensure-safe-access-to-master-con.patch
 clk-qcom-dispcc-sc8280xp-don-t-park-mdp_clk_src-at-r.patch
 drm-virtio-fix-driver-removal-with-disabled-kms.patch
 drm-vc4-fix-krealloc-memory-leak.patch
+netfilter-nft_tunnel-fix-use-after-free-on-object-destroy.patch
+bluetooth-hci_sync-reject-oversized-broadcast-announcement-prepend.patch
+bluetooth-l2cap-reject-br-edr-signaling-packets-over-mtusig.patch
+tracing-probes-point-the-error-offset-correctly-for-eprobe-argument-error.patch
+mmc-litex_mmc-use-div_round_up-for-more-accurate-clock-calculation.patch
+kvm-don-t-warn-if-memory-is-dirtied-without-a-vcpu-when-the-vm-is-dying.patch
+drm-i915-gem-fix-phys-bo-pread-pwrite-with-offset.patch
diff --git a/queue-6.6/tracing-probes-point-the-error-offset-correctly-for-eprobe-argument-error.patch b/queue-6.6/tracing-probes-point-the-error-offset-correctly-for-eprobe-argument-error.patch
new file mode 100644 (file)
index 0000000..78e6f39
--- /dev/null
@@ -0,0 +1,51 @@
+From 85e0f27dd1396307913ffc5745b0c05137e9beac Mon Sep 17 00:00:00 2001
+From: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
+Date: Mon, 25 May 2026 11:21:14 +0900
+Subject: tracing/probes: Point the error offset correctly for eprobe argument error
+
+From: Masami Hiramatsu (Google) <mhiramat@kernel.org>
+
+commit 85e0f27dd1396307913ffc5745b0c05137e9beac upstream.
+
+Fix to point the error offset correctly for eprobe argument error.
+In the cleanup commit 1b8b0cd754cd ("tracing/probes: Move event parameter
+fetching code to common parser"), due to incorrect backward compatibility
+aimed at conforming to the test specifications, the error location was set
+to 0 when a non-existent formal parameter was specified for Eprobe.
+However, this should be corrected in both the test and the implementation
+to point correct error position.
+
+Link: https://lore.kernel.org/all/177967567399.209006.1451571244515632097.stgit@devnote2/
+
+Fixes: 1b8b0cd754cd ("tracing/probes: Move event parameter fetching code to common parser")
+Cc: stable@vger.kernel.org
+Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
+Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ kernel/trace/trace_probe.c                                              |    2 --
+ tools/testing/selftests/ftrace/test.d/dynevent/eprobes_syntax_errors.tc |    2 +-
+ 2 files changed, 1 insertion(+), 3 deletions(-)
+
+--- a/kernel/trace/trace_probe.c
++++ b/kernel/trace/trace_probe.c
+@@ -933,8 +933,6 @@ static int parse_probe_vars(char *orig_a
+                       code->op = FETCH_OP_COMM;
+                       return 0;
+               }
+-              /* backward compatibility */
+-              ctx->offset = 0;
+               goto inval;
+       }
+--- a/tools/testing/selftests/ftrace/test.d/dynevent/eprobes_syntax_errors.tc
++++ b/tools/testing/selftests/ftrace/test.d/dynevent/eprobes_syntax_errors.tc
+@@ -20,7 +20,7 @@ check_error 'e:foo/^12345678901234567890
+ check_error 'e:foo/^bar.1 syscalls/sys_enter_openat'  # BAD_EVENT_NAME
+ check_error 'e:foo/bar syscalls/sys_enter_openat arg=^dfd'    # BAD_FETCH_ARG
+-check_error 'e:foo/bar syscalls/sys_enter_openat ^arg=$foo'   # BAD_ATTACH_ARG
++check_error 'e:foo/bar syscalls/sys_enter_openat arg=^$foo'   # BAD_ATTACH_ARG
+ if grep -q '<attached-group>\.<attached-event>.*\[if <filter>\]' README; then
+   check_error 'e:foo/bar syscalls/sys_enter_openat if ^'      # NO_EP_FILTER