mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00
kernel: bump 5.15 to 5.15.110
This commit is contained in:
parent
f953b064c8
commit
22de4c9868
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.15 = .105
|
||||
LINUX_KERNEL_HASH-5.15.105 = 01b537650332d2852722a626169cf7e5e798d11f9b578171b477868555f5e44f
|
||||
LINUX_VERSION-5.15 = .110
|
||||
LINUX_KERNEL_HASH-5.15.110 = 9829fcc77b9978dce97a26980dec445caf2410024696625dbb2314ead4830b5b
|
||||
|
@ -1360,7 +1360,7 @@ define KernelPackage/qrtr
|
||||
KCONFIG:=CONFIG_QRTR
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/net/qrtr/qrtr.ko \
|
||||
$(LINUX_DIR)/net/qrtr/ns.ko@lt6.0
|
||||
$(LINUX_DIR)/net/qrtr/ns.ko@lt5.15
|
||||
AUTOLOAD:=$(call AutoProbe,qrtr)
|
||||
endef
|
||||
|
||||
|
@ -833,7 +833,7 @@ SVN-Revision: 35130
|
||||
*sum = csum_fold(csum_partial(diff, sizeof(diff),
|
||||
--- a/include/linux/etherdevice.h
|
||||
+++ b/include/linux/etherdevice.h
|
||||
@@ -499,7 +499,7 @@ static inline bool is_etherdev_addr(cons
|
||||
@@ -513,7 +513,7 @@ static inline bool is_etherdev_addr(cons
|
||||
* @b: Pointer to Ethernet header
|
||||
*
|
||||
* Compare two Ethernet headers, returns 0 if equal.
|
||||
@ -842,7 +842,7 @@ SVN-Revision: 35130
|
||||
* aligned OR the platform can handle unaligned access. This is the
|
||||
* case for all packets coming into netif_receive_skb or similar
|
||||
* entry points.
|
||||
@@ -522,11 +522,12 @@ static inline unsigned long compare_ethe
|
||||
@@ -536,11 +536,12 @@ static inline unsigned long compare_ethe
|
||||
fold |= *(unsigned long *)(a + 6) ^ *(unsigned long *)(b + 6);
|
||||
return fold;
|
||||
#else
|
||||
|
@ -829,7 +829,7 @@ SVN-Revision: 35130
|
||||
*sum = csum_fold(csum_partial(diff, sizeof(diff),
|
||||
--- a/include/linux/etherdevice.h
|
||||
+++ b/include/linux/etherdevice.h
|
||||
@@ -511,7 +511,7 @@ static inline bool is_etherdev_addr(cons
|
||||
@@ -525,7 +525,7 @@ static inline bool is_etherdev_addr(cons
|
||||
* @b: Pointer to Ethernet header
|
||||
*
|
||||
* Compare two Ethernet headers, returns 0 if equal.
|
||||
@ -838,7 +838,7 @@ SVN-Revision: 35130
|
||||
* aligned OR the platform can handle unaligned access. This is the
|
||||
* case for all packets coming into netif_receive_skb or similar
|
||||
* entry points.
|
||||
@@ -534,11 +534,12 @@ static inline unsigned long compare_ethe
|
||||
@@ -548,11 +548,12 @@ static inline unsigned long compare_ethe
|
||||
fold |= *(unsigned long *)(a + 6) ^ *(unsigned long *)(b + 6);
|
||||
return fold;
|
||||
#else
|
||||
|
@ -0,0 +1,41 @@
|
||||
From 7390609b0121a1b982c5ecdfcd72dc328e5784ee Mon Sep 17 00:00:00 2001
|
||||
From: Michael Walle <michael@walle.cc>
|
||||
Date: Mon, 6 Feb 2023 13:43:42 +0000
|
||||
Subject: [PATCH] net: add helper eth_addr_add()
|
||||
|
||||
Add a helper to add an offset to a ethernet address. This comes in handy
|
||||
if you have a base ethernet address for multiple interfaces.
|
||||
|
||||
Signed-off-by: Michael Walle <michael@walle.cc>
|
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Acked-by: Jakub Kicinski <kuba@kernel.org>
|
||||
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
Link: https://lore.kernel.org/r/20230206134356.839737-9-srinivas.kandagatla@linaro.org
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
include/linux/etherdevice.h | 14 ++++++++++++++
|
||||
1 file changed, 14 insertions(+)
|
||||
|
||||
--- a/include/linux/etherdevice.h
|
||||
+++ b/include/linux/etherdevice.h
|
||||
@@ -466,6 +466,20 @@ static inline void eth_addr_inc(u8 *addr
|
||||
}
|
||||
|
||||
/**
|
||||
+ * eth_addr_add() - Add (or subtract) an offset to/from the given MAC address.
|
||||
+ *
|
||||
+ * @offset: Offset to add.
|
||||
+ * @addr: Pointer to a six-byte array containing Ethernet address to increment.
|
||||
+ */
|
||||
+static inline void eth_addr_add(u8 *addr, long offset)
|
||||
+{
|
||||
+ u64 u = ether_addr_to_u64(addr);
|
||||
+
|
||||
+ u += offset;
|
||||
+ u64_to_ether_addr(u, addr);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
* is_etherdev_addr - Tell if given Ethernet address belongs to the device.
|
||||
* @dev: Pointer to a device structure
|
||||
* @addr: Pointer to a six-byte array containing the Ethernet address
|
@ -0,0 +1,41 @@
|
||||
From 7390609b0121a1b982c5ecdfcd72dc328e5784ee Mon Sep 17 00:00:00 2001
|
||||
From: Michael Walle <michael@walle.cc>
|
||||
Date: Mon, 6 Feb 2023 13:43:42 +0000
|
||||
Subject: [PATCH] net: add helper eth_addr_add()
|
||||
|
||||
Add a helper to add an offset to a ethernet address. This comes in handy
|
||||
if you have a base ethernet address for multiple interfaces.
|
||||
|
||||
Signed-off-by: Michael Walle <michael@walle.cc>
|
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Acked-by: Jakub Kicinski <kuba@kernel.org>
|
||||
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
Link: https://lore.kernel.org/r/20230206134356.839737-9-srinivas.kandagatla@linaro.org
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
include/linux/etherdevice.h | 14 ++++++++++++++
|
||||
1 file changed, 14 insertions(+)
|
||||
|
||||
--- a/include/linux/etherdevice.h
|
||||
+++ b/include/linux/etherdevice.h
|
||||
@@ -478,6 +478,20 @@ static inline void eth_addr_inc(u8 *addr
|
||||
}
|
||||
|
||||
/**
|
||||
+ * eth_addr_add() - Add (or subtract) an offset to/from the given MAC address.
|
||||
+ *
|
||||
+ * @offset: Offset to add.
|
||||
+ * @addr: Pointer to a six-byte array containing Ethernet address to increment.
|
||||
+ */
|
||||
+static inline void eth_addr_add(u8 *addr, long offset)
|
||||
+{
|
||||
+ u64 u = ether_addr_to_u64(addr);
|
||||
+
|
||||
+ u += offset;
|
||||
+ u64_to_ether_addr(u, addr);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
* is_etherdev_addr - Tell if given Ethernet address belongs to the device.
|
||||
* @dev: Pointer to a device structure
|
||||
* @addr: Pointer to a six-byte array containing the Ethernet address
|
@ -1,85 +0,0 @@
|
||||
From: Liang Chen <liangchen.linux@gmail.com>
|
||||
Date: Thu, 13 Apr 2023 17:03:53 +0800
|
||||
Subject: [PATCH] skbuff: Fix a race between coalescing and releasing SKBs
|
||||
|
||||
Commit 1effe8ca4e34 ("skbuff: fix coalescing for page_pool fragment
|
||||
recycling") allowed coalescing to proceed with non page pool page and page
|
||||
pool page when @from is cloned, i.e.
|
||||
|
||||
to->pp_recycle --> false
|
||||
from->pp_recycle --> true
|
||||
skb_cloned(from) --> true
|
||||
|
||||
However, it actually requires skb_cloned(@from) to hold true until
|
||||
coalescing finishes in this situation. If the other cloned SKB is
|
||||
released while the merging is in process, from_shinfo->nr_frags will be
|
||||
set to 0 toward the end of the function, causing the increment of frag
|
||||
page _refcount to be unexpectedly skipped resulting in inconsistent
|
||||
reference counts. Later when SKB(@to) is released, it frees the page
|
||||
directly even though the page pool page is still in use, leading to
|
||||
use-after-free or double-free errors. So it should be prohibited.
|
||||
|
||||
The double-free error message below prompted us to investigate:
|
||||
BUG: Bad page state in process swapper/1 pfn:0e0d1
|
||||
page:00000000c6548b28 refcount:-1 mapcount:0 mapping:0000000000000000
|
||||
index:0x2 pfn:0xe0d1
|
||||
flags: 0xfffffc0000000(node=0|zone=1|lastcpupid=0x1fffff)
|
||||
raw: 000fffffc0000000 0000000000000000 ffffffff00000101 0000000000000000
|
||||
raw: 0000000000000002 0000000000000000 ffffffffffffffff 0000000000000000
|
||||
page dumped because: nonzero _refcount
|
||||
|
||||
CPU: 1 PID: 0 Comm: swapper/1 Tainted: G E 6.2.0+
|
||||
Call Trace:
|
||||
<IRQ>
|
||||
dump_stack_lvl+0x32/0x50
|
||||
bad_page+0x69/0xf0
|
||||
free_pcp_prepare+0x260/0x2f0
|
||||
free_unref_page+0x20/0x1c0
|
||||
skb_release_data+0x10b/0x1a0
|
||||
napi_consume_skb+0x56/0x150
|
||||
net_rx_action+0xf0/0x350
|
||||
? __napi_schedule+0x79/0x90
|
||||
__do_softirq+0xc8/0x2b1
|
||||
__irq_exit_rcu+0xb9/0xf0
|
||||
common_interrupt+0x82/0xa0
|
||||
</IRQ>
|
||||
<TASK>
|
||||
asm_common_interrupt+0x22/0x40
|
||||
RIP: 0010:default_idle+0xb/0x20
|
||||
|
||||
Fixes: 53e0961da1c7 ("page_pool: add frag page recycling support in page pool")
|
||||
Signed-off-by: Liang Chen <liangchen.linux@gmail.com>
|
||||
Reviewed-by: Eric Dumazet <edumazet@google.com>
|
||||
Link: https://lore.kernel.org/r/20230413090353.14448-1-liangchen.linux@gmail.com
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
|
||||
--- a/net/core/skbuff.c
|
||||
+++ b/net/core/skbuff.c
|
||||
@@ -5397,18 +5397,18 @@ bool skb_try_coalesce(struct sk_buff *to
|
||||
if (skb_cloned(to))
|
||||
return false;
|
||||
|
||||
- /* In general, avoid mixing slab allocated and page_pool allocated
|
||||
- * pages within the same SKB. However when @to is not pp_recycle and
|
||||
- * @from is cloned, we can transition frag pages from page_pool to
|
||||
- * reference counted.
|
||||
- *
|
||||
- * On the other hand, don't allow coalescing two pp_recycle SKBs if
|
||||
- * @from is cloned, in case the SKB is using page_pool fragment
|
||||
+ /* In general, avoid mixing page_pool and non-page_pool allocated
|
||||
+ * pages within the same SKB. Additionally avoid dealing with clones
|
||||
+ * with page_pool pages, in case the SKB is using page_pool fragment
|
||||
* references (PP_FLAG_PAGE_FRAG). Since we only take full page
|
||||
* references for cloned SKBs at the moment that would result in
|
||||
* inconsistent reference counts.
|
||||
+ * In theory we could take full references if @from is cloned and
|
||||
+ * !@to->pp_recycle but its tricky (due to potential race with
|
||||
+ * the clone disappearing) and rare, so not worth dealing with.
|
||||
*/
|
||||
- if (to->pp_recycle != (from->pp_recycle && !skb_cloned(from)))
|
||||
+ if (to->pp_recycle != from->pp_recycle ||
|
||||
+ (from->pp_recycle && skb_cloned(from)))
|
||||
return false;
|
||||
|
||||
if (len <= skb_tailroom(to)) {
|
@ -1,33 +0,0 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Mon, 20 Mar 2023 15:49:15 +0100
|
||||
Subject: [PATCH] net: ethernet: mtk_eth_soc: fix flow_offload related refcount
|
||||
bug
|
||||
|
||||
Since we call flow_block_cb_decref on FLOW_BLOCK_UNBIND, we need to call
|
||||
flow_block_cb_incref unconditionally, even for a newly allocated cb.
|
||||
Fixes a use-after-free bug. Also fix the accidentally inverted refcount
|
||||
check on unbind.
|
||||
|
||||
Fixes: 502e84e2382d ("net: ethernet: mtk_eth_soc: add flow offloading support")
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
||||
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
||||
@@ -584,6 +584,7 @@ mtk_eth_setup_tc_block(struct net_device
|
||||
if (IS_ERR(block_cb))
|
||||
return PTR_ERR(block_cb);
|
||||
|
||||
+ flow_block_cb_incref(block_cb);
|
||||
flow_block_cb_add(block_cb, f);
|
||||
list_add_tail(&block_cb->driver_list, &block_cb_list);
|
||||
return 0;
|
||||
@@ -592,7 +593,7 @@ mtk_eth_setup_tc_block(struct net_device
|
||||
if (!block_cb)
|
||||
return -ENOENT;
|
||||
|
||||
- if (flow_block_cb_decref(block_cb)) {
|
||||
+ if (!flow_block_cb_decref(block_cb)) {
|
||||
flow_block_cb_remove(block_cb, f);
|
||||
list_del(&block_cb->driver_list);
|
||||
}
|
Loading…
Reference in New Issue
Block a user