From: Greg Kroah-Hartman Date: Sat, 12 Aug 2023 17:54:50 +0000 (+0200) Subject: 6.4-stable patches X-Git-Tag: v4.14.323~46 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=952962079fafd01d9cd350ee9f4a17990c8c6a33;p=thirdparty%2Fkernel%2Fstable-queue.git 6.4-stable patches added patches: bpf-sockmap-fix-bug-that-strp_done-cannot-be-called.patch bpf-sockmap-fix-map-type-error-in-sock_map_del_link.patch hwmon-aquacomputer_d5next-add-selective-200ms-delay-after-sending-ctrl-report.patch macsec-use-dev_stats_inc.patch misdn-update-parameter-type-of-dsp_cmx_send.patch net-core-remove-unnecessary-frame_sz-check-in-bpf_xdp_adjust_tail.patch selftests-forwarding-add-a-helper-to-skip-test-when-using-veth-pairs.patch selftests-forwarding-bridge_mdb-fix-failing-test-with-old-libnet.patch selftests-forwarding-bridge_mdb-make-test-more-robust.patch selftests-forwarding-bridge_mdb_max-fix-failing-test-with-old-libnet.patch selftests-forwarding-ethtool-skip-when-using-veth-pairs.patch selftests-forwarding-ethtool_extended_state-skip-when-using-veth-pairs.patch selftests-forwarding-hw_stats_l3_gre-skip-when-using-veth-pairs.patch selftests-forwarding-skip-test-when-no-interfaces-are-specified.patch selftests-forwarding-switch-off-timeout.patch selftests-forwarding-tc_actions-use-ncat-instead-of-nc.patch selftests-forwarding-tc_flower-relax-success-criterion.patch --- diff --git a/queue-6.4/bpf-sockmap-fix-bug-that-strp_done-cannot-be-called.patch b/queue-6.4/bpf-sockmap-fix-bug-that-strp_done-cannot-be-called.patch new file mode 100644 index 00000000000..31a72c5d045 --- /dev/null +++ b/queue-6.4/bpf-sockmap-fix-bug-that-strp_done-cannot-be-called.patch @@ -0,0 +1,71 @@ +From 809e4dc71a0f2b8d2836035d98603694fff11d5d Mon Sep 17 00:00:00 2001 +From: Xu Kuohai +Date: Fri, 4 Aug 2023 03:37:38 -0400 +Subject: bpf, sockmap: Fix bug that strp_done cannot be called + +From: Xu Kuohai + +commit 809e4dc71a0f2b8d2836035d98603694fff11d5d upstream. + +strp_done is only called when psock->progs.stream_parser is not NULL, +but stream_parser was set to NULL by sk_psock_stop_strp(), called +by sk_psock_drop() earlier. So, strp_done can never be called. + +Introduce SK_PSOCK_RX_ENABLED to mark whether there is strp on psock. +Change the condition for calling strp_done from judging whether +stream_parser is set to judging whether this flag is set. This flag is +only set once when strp_init() succeeds, and will never be cleared later. + +Fixes: c0d95d3380ee ("bpf, sockmap: Re-evaluate proto ops when psock is removed from sockmap") +Signed-off-by: Xu Kuohai +Reviewed-by: John Fastabend +Link: https://lore.kernel.org/r/20230804073740.194770-3-xukuohai@huaweicloud.com +Signed-off-by: Martin KaFai Lau +Signed-off-by: Greg Kroah-Hartman +--- + include/linux/skmsg.h | 1 + + net/core/skmsg.c | 10 ++++++++-- + 2 files changed, 9 insertions(+), 2 deletions(-) + +--- a/include/linux/skmsg.h ++++ b/include/linux/skmsg.h +@@ -62,6 +62,7 @@ struct sk_psock_progs { + + enum sk_psock_state_bits { + SK_PSOCK_TX_ENABLED, ++ SK_PSOCK_RX_STRP_ENABLED, + }; + + struct sk_psock_link { +--- a/net/core/skmsg.c ++++ b/net/core/skmsg.c +@@ -1120,13 +1120,19 @@ static void sk_psock_strp_data_ready(str + + int sk_psock_init_strp(struct sock *sk, struct sk_psock *psock) + { ++ int ret; ++ + static const struct strp_callbacks cb = { + .rcv_msg = sk_psock_strp_read, + .read_sock_done = sk_psock_strp_read_done, + .parse_msg = sk_psock_strp_parse, + }; + +- return strp_init(&psock->strp, sk, &cb); ++ ret = strp_init(&psock->strp, sk, &cb); ++ if (!ret) ++ sk_psock_set_state(psock, SK_PSOCK_RX_STRP_ENABLED); ++ ++ return ret; + } + + void sk_psock_start_strp(struct sock *sk, struct sk_psock *psock) +@@ -1154,7 +1160,7 @@ void sk_psock_stop_strp(struct sock *sk, + static void sk_psock_done_strp(struct sk_psock *psock) + { + /* Parser has been stopped */ +- if (psock->progs.stream_parser) ++ if (sk_psock_test_state(psock, SK_PSOCK_RX_STRP_ENABLED)) + strp_done(&psock->strp); + } + #else diff --git a/queue-6.4/bpf-sockmap-fix-map-type-error-in-sock_map_del_link.patch b/queue-6.4/bpf-sockmap-fix-map-type-error-in-sock_map_del_link.patch new file mode 100644 index 00000000000..f53bb2aa1d1 --- /dev/null +++ b/queue-6.4/bpf-sockmap-fix-map-type-error-in-sock_map_del_link.patch @@ -0,0 +1,45 @@ +From 7e96ec0e6605b69bb21bbf6c0ff9051e656ec2b1 Mon Sep 17 00:00:00 2001 +From: Xu Kuohai +Date: Fri, 4 Aug 2023 03:37:37 -0400 +Subject: bpf, sockmap: Fix map type error in sock_map_del_link + +From: Xu Kuohai + +commit 7e96ec0e6605b69bb21bbf6c0ff9051e656ec2b1 upstream. + +sock_map_del_link() operates on both SOCKMAP and SOCKHASH, although +both types have member named "progs", the offset of "progs" member in +these two types is different, so "progs" should be accessed with the +real map type. + +Fixes: 604326b41a6f ("bpf, sockmap: convert to generic sk_msg interface") +Signed-off-by: Xu Kuohai +Reviewed-by: John Fastabend +Link: https://lore.kernel.org/r/20230804073740.194770-2-xukuohai@huaweicloud.com +Signed-off-by: Martin KaFai Lau +Signed-off-by: Greg Kroah-Hartman +--- + net/core/sock_map.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +--- a/net/core/sock_map.c ++++ b/net/core/sock_map.c +@@ -146,13 +146,13 @@ static void sock_map_del_link(struct soc + list_for_each_entry_safe(link, tmp, &psock->link, list) { + if (link->link_raw == link_raw) { + struct bpf_map *map = link->map; +- struct bpf_stab *stab = container_of(map, struct bpf_stab, +- map); +- if (psock->saved_data_ready && stab->progs.stream_parser) ++ struct sk_psock_progs *progs = sock_map_progs(map); ++ ++ if (psock->saved_data_ready && progs->stream_parser) + strp_stop = true; +- if (psock->saved_data_ready && stab->progs.stream_verdict) ++ if (psock->saved_data_ready && progs->stream_verdict) + verdict_stop = true; +- if (psock->saved_data_ready && stab->progs.skb_verdict) ++ if (psock->saved_data_ready && progs->skb_verdict) + verdict_stop = true; + list_del(&link->list); + sk_psock_free_link(link); diff --git a/queue-6.4/hwmon-aquacomputer_d5next-add-selective-200ms-delay-after-sending-ctrl-report.patch b/queue-6.4/hwmon-aquacomputer_d5next-add-selective-200ms-delay-after-sending-ctrl-report.patch new file mode 100644 index 00000000000..2f552aebdac --- /dev/null +++ b/queue-6.4/hwmon-aquacomputer_d5next-add-selective-200ms-delay-after-sending-ctrl-report.patch @@ -0,0 +1,159 @@ +From 56b930dcd88c2adc261410501c402c790980bdb5 Mon Sep 17 00:00:00 2001 +From: Aleksa Savic +Date: Mon, 7 Aug 2023 19:20:03 +0200 +Subject: hwmon: (aquacomputer_d5next) Add selective 200ms delay after sending ctrl report + +From: Aleksa Savic + +commit 56b930dcd88c2adc261410501c402c790980bdb5 upstream. + +Add a 200ms delay after sending a ctrl report to Quadro, +Octo, D5 Next and Aquaero to give them enough time to +process the request and save the data to memory. Otherwise, +under heavier userspace loads where multiple sysfs entries +are usually set in quick succession, a new ctrl report could +be requested from the device while it's still processing the +previous one and fail with -EPIPE. The delay is only applied +if two ctrl report operations are near each other in time. + +Reported by a user on Github [1] and tested by both of us. + +[1] https://github.com/aleksamagicka/aquacomputer_d5next-hwmon/issues/82 + +Fixes: 752b927951ea ("hwmon: (aquacomputer_d5next) Add support for Aquacomputer Octo") +Signed-off-by: Aleksa Savic +Link: https://lore.kernel.org/r/20230807172004.456968-1-savicaleksa83@gmail.com +Signed-off-by: Guenter Roeck +Signed-off-by: Greg Kroah-Hartman +--- + drivers/hwmon/aquacomputer_d5next.c | 37 +++++++++++++++++++++++++++++++++++- + 1 file changed, 36 insertions(+), 1 deletion(-) + +--- a/drivers/hwmon/aquacomputer_d5next.c ++++ b/drivers/hwmon/aquacomputer_d5next.c +@@ -13,9 +13,11 @@ + + #include + #include ++#include + #include + #include + #include ++#include + #include + #include + #include +@@ -61,6 +63,8 @@ static const char *const aqc_device_name + #define CTRL_REPORT_ID 0x03 + #define AQUAERO_CTRL_REPORT_ID 0x0b + ++#define CTRL_REPORT_DELAY 200 /* ms */ ++ + /* The HID report that the official software always sends + * after writing values, currently same for all devices + */ +@@ -496,6 +500,9 @@ struct aqc_data { + int secondary_ctrl_report_size; + u8 *secondary_ctrl_report; + ++ ktime_t last_ctrl_report_op; ++ int ctrl_report_delay; /* Delay between two ctrl report operations, in ms */ ++ + int buffer_size; + u8 *buffer; + int checksum_start; +@@ -577,17 +584,35 @@ static int aqc_aquastreamxt_convert_fan_ + return 0; + } + ++static void aqc_delay_ctrl_report(struct aqc_data *priv) ++{ ++ /* ++ * If previous read or write is too close to this one, delay the current operation ++ * to give the device enough time to process the previous one. ++ */ ++ if (priv->ctrl_report_delay) { ++ s64 delta = ktime_ms_delta(ktime_get(), priv->last_ctrl_report_op); ++ ++ if (delta < priv->ctrl_report_delay) ++ msleep(priv->ctrl_report_delay - delta); ++ } ++} ++ + /* Expects the mutex to be locked */ + static int aqc_get_ctrl_data(struct aqc_data *priv) + { + int ret; + ++ aqc_delay_ctrl_report(priv); ++ + memset(priv->buffer, 0x00, priv->buffer_size); + ret = hid_hw_raw_request(priv->hdev, priv->ctrl_report_id, priv->buffer, priv->buffer_size, + HID_FEATURE_REPORT, HID_REQ_GET_REPORT); + if (ret < 0) + ret = -ENODATA; + ++ priv->last_ctrl_report_op = ktime_get(); ++ + return ret; + } + +@@ -597,6 +622,8 @@ static int aqc_send_ctrl_data(struct aqc + int ret; + u16 checksum; + ++ aqc_delay_ctrl_report(priv); ++ + /* Checksum is not needed for Aquaero */ + if (priv->kind != aquaero) { + /* Init and xorout value for CRC-16/USB is 0xffff */ +@@ -612,12 +639,16 @@ static int aqc_send_ctrl_data(struct aqc + ret = hid_hw_raw_request(priv->hdev, priv->ctrl_report_id, priv->buffer, priv->buffer_size, + HID_FEATURE_REPORT, HID_REQ_SET_REPORT); + if (ret < 0) +- return ret; ++ goto record_access_and_ret; + + /* The official software sends this report after every change, so do it here as well */ + ret = hid_hw_raw_request(priv->hdev, priv->secondary_ctrl_report_id, + priv->secondary_ctrl_report, priv->secondary_ctrl_report_size, + HID_FEATURE_REPORT, HID_REQ_SET_REPORT); ++ ++record_access_and_ret: ++ priv->last_ctrl_report_op = ktime_get(); ++ + return ret; + } + +@@ -1443,6 +1474,7 @@ static int aqc_probe(struct hid_device * + + priv->buffer_size = AQUAERO_CTRL_REPORT_SIZE; + priv->temp_ctrl_offset = AQUAERO_TEMP_CTRL_OFFSET; ++ priv->ctrl_report_delay = CTRL_REPORT_DELAY; + + priv->temp_label = label_temp_sensors; + priv->virtual_temp_label = label_virtual_temp_sensors; +@@ -1466,6 +1498,7 @@ static int aqc_probe(struct hid_device * + priv->temp_ctrl_offset = D5NEXT_TEMP_CTRL_OFFSET; + + priv->buffer_size = D5NEXT_CTRL_REPORT_SIZE; ++ priv->ctrl_report_delay = CTRL_REPORT_DELAY; + + priv->power_cycle_count_offset = D5NEXT_POWER_CYCLES; + +@@ -1516,6 +1549,7 @@ static int aqc_probe(struct hid_device * + priv->temp_ctrl_offset = OCTO_TEMP_CTRL_OFFSET; + + priv->buffer_size = OCTO_CTRL_REPORT_SIZE; ++ priv->ctrl_report_delay = CTRL_REPORT_DELAY; + + priv->power_cycle_count_offset = OCTO_POWER_CYCLES; + +@@ -1543,6 +1577,7 @@ static int aqc_probe(struct hid_device * + priv->temp_ctrl_offset = QUADRO_TEMP_CTRL_OFFSET; + + priv->buffer_size = QUADRO_CTRL_REPORT_SIZE; ++ priv->ctrl_report_delay = CTRL_REPORT_DELAY; + + priv->flow_pulses_ctrl_offset = QUADRO_FLOW_PULSES_CTRL_OFFSET; + priv->power_cycle_count_offset = QUADRO_POWER_CYCLES; diff --git a/queue-6.4/macsec-use-dev_stats_inc.patch b/queue-6.4/macsec-use-dev_stats_inc.patch new file mode 100644 index 00000000000..e7f4289db0e --- /dev/null +++ b/queue-6.4/macsec-use-dev_stats_inc.patch @@ -0,0 +1,140 @@ +From 32d0a49d36a2a306c2e47fe5659361e424f0ed3f Mon Sep 17 00:00:00 2001 +From: Eric Dumazet +Date: Fri, 4 Aug 2023 17:26:52 +0000 +Subject: macsec: use DEV_STATS_INC() + +From: Eric Dumazet + +commit 32d0a49d36a2a306c2e47fe5659361e424f0ed3f upstream. + +syzbot/KCSAN reported data-races in macsec whenever dev->stats fields +are updated. + +It appears all of these updates can happen from multiple cpus. + +Adopt SMP safe DEV_STATS_INC() to update dev->stats fields. + +Fixes: c09440f7dcb3 ("macsec: introduce IEEE 802.1AE driver") +Reported-by: syzbot +Signed-off-by: Eric Dumazet +Cc: Sabrina Dubroca +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/macsec.c | 28 ++++++++++++++-------------- + 1 file changed, 14 insertions(+), 14 deletions(-) + +--- a/drivers/net/macsec.c ++++ b/drivers/net/macsec.c +@@ -743,7 +743,7 @@ static bool macsec_post_decrypt(struct s + u64_stats_update_begin(&rxsc_stats->syncp); + rxsc_stats->stats.InPktsLate++; + u64_stats_update_end(&rxsc_stats->syncp); +- secy->netdev->stats.rx_dropped++; ++ DEV_STATS_INC(secy->netdev, rx_dropped); + return false; + } + +@@ -767,7 +767,7 @@ static bool macsec_post_decrypt(struct s + rxsc_stats->stats.InPktsNotValid++; + u64_stats_update_end(&rxsc_stats->syncp); + this_cpu_inc(rx_sa->stats->InPktsNotValid); +- secy->netdev->stats.rx_errors++; ++ DEV_STATS_INC(secy->netdev, rx_errors); + return false; + } + +@@ -1069,7 +1069,7 @@ static enum rx_handler_result handle_not + u64_stats_update_begin(&secy_stats->syncp); + secy_stats->stats.InPktsNoTag++; + u64_stats_update_end(&secy_stats->syncp); +- macsec->secy.netdev->stats.rx_dropped++; ++ DEV_STATS_INC(macsec->secy.netdev, rx_dropped); + continue; + } + +@@ -1179,7 +1179,7 @@ static rx_handler_result_t macsec_handle + u64_stats_update_begin(&secy_stats->syncp); + secy_stats->stats.InPktsBadTag++; + u64_stats_update_end(&secy_stats->syncp); +- secy->netdev->stats.rx_errors++; ++ DEV_STATS_INC(secy->netdev, rx_errors); + goto drop_nosa; + } + +@@ -1196,7 +1196,7 @@ static rx_handler_result_t macsec_handle + u64_stats_update_begin(&rxsc_stats->syncp); + rxsc_stats->stats.InPktsNotUsingSA++; + u64_stats_update_end(&rxsc_stats->syncp); +- secy->netdev->stats.rx_errors++; ++ DEV_STATS_INC(secy->netdev, rx_errors); + if (active_rx_sa) + this_cpu_inc(active_rx_sa->stats->InPktsNotUsingSA); + goto drop_nosa; +@@ -1230,7 +1230,7 @@ static rx_handler_result_t macsec_handle + u64_stats_update_begin(&rxsc_stats->syncp); + rxsc_stats->stats.InPktsLate++; + u64_stats_update_end(&rxsc_stats->syncp); +- macsec->secy.netdev->stats.rx_dropped++; ++ DEV_STATS_INC(macsec->secy.netdev, rx_dropped); + goto drop; + } + } +@@ -1271,7 +1271,7 @@ deliver: + if (ret == NET_RX_SUCCESS) + count_rx(dev, len); + else +- macsec->secy.netdev->stats.rx_dropped++; ++ DEV_STATS_INC(macsec->secy.netdev, rx_dropped); + + rcu_read_unlock(); + +@@ -1308,7 +1308,7 @@ nosci: + u64_stats_update_begin(&secy_stats->syncp); + secy_stats->stats.InPktsNoSCI++; + u64_stats_update_end(&secy_stats->syncp); +- macsec->secy.netdev->stats.rx_errors++; ++ DEV_STATS_INC(macsec->secy.netdev, rx_errors); + continue; + } + +@@ -1327,7 +1327,7 @@ nosci: + secy_stats->stats.InPktsUnknownSCI++; + u64_stats_update_end(&secy_stats->syncp); + } else { +- macsec->secy.netdev->stats.rx_dropped++; ++ DEV_STATS_INC(macsec->secy.netdev, rx_dropped); + } + } + +@@ -3422,7 +3422,7 @@ static netdev_tx_t macsec_start_xmit(str + + if (!secy->operational) { + kfree_skb(skb); +- dev->stats.tx_dropped++; ++ DEV_STATS_INC(dev, tx_dropped); + return NETDEV_TX_OK; + } + +@@ -3430,7 +3430,7 @@ static netdev_tx_t macsec_start_xmit(str + skb = macsec_encrypt(skb, dev); + if (IS_ERR(skb)) { + if (PTR_ERR(skb) != -EINPROGRESS) +- dev->stats.tx_dropped++; ++ DEV_STATS_INC(dev, tx_dropped); + return NETDEV_TX_OK; + } + +@@ -3667,9 +3667,9 @@ static void macsec_get_stats64(struct ne + + dev_fetch_sw_netstats(s, dev->tstats); + +- s->rx_dropped = dev->stats.rx_dropped; +- s->tx_dropped = dev->stats.tx_dropped; +- s->rx_errors = dev->stats.rx_errors; ++ s->rx_dropped = atomic_long_read(&dev->stats.__rx_dropped); ++ s->tx_dropped = atomic_long_read(&dev->stats.__tx_dropped); ++ s->rx_errors = atomic_long_read(&dev->stats.__rx_errors); + } + + static int macsec_get_iflink(const struct net_device *dev) diff --git a/queue-6.4/misdn-update-parameter-type-of-dsp_cmx_send.patch b/queue-6.4/misdn-update-parameter-type-of-dsp_cmx_send.patch new file mode 100644 index 00000000000..4edd7b22ee0 --- /dev/null +++ b/queue-6.4/misdn-update-parameter-type-of-dsp_cmx_send.patch @@ -0,0 +1,75 @@ +From 1696ec8654016dad3b1baf6c024303e584400453 Mon Sep 17 00:00:00 2001 +From: Nathan Chancellor +Date: Wed, 2 Aug 2023 10:40:29 -0700 +Subject: mISDN: Update parameter type of dsp_cmx_send() + +From: Nathan Chancellor + +commit 1696ec8654016dad3b1baf6c024303e584400453 upstream. + +When booting a kernel with CONFIG_MISDN_DSP=y and CONFIG_CFI_CLANG=y, +there is a failure when dsp_cmx_send() is called indirectly from +call_timer_fn(): + + [ 0.371412] CFI failure at call_timer_fn+0x2f/0x150 (target: dsp_cmx_send+0x0/0x530; expected type: 0x92ada1e9) + +The function pointer prototype that call_timer_fn() expects is + + void (*fn)(struct timer_list *) + +whereas dsp_cmx_send() has a parameter type of 'void *', which causes +the control flow integrity checks to fail because the parameter types do +not match. + +Change dsp_cmx_send()'s parameter type to be 'struct timer_list' to +match the expected prototype. The argument is unused anyways, so this +has no functional change, aside from avoiding the CFI failure. + +Reported-by: kernel test robot +Closes: https://lore.kernel.org/oe-lkp/202308020936.58787e6c-oliver.sang@intel.com +Signed-off-by: Nathan Chancellor +Reviewed-by: Sami Tolvanen +Reviewed-by: Kees Cook +Fixes: e313ac12eb13 ("mISDN: Convert timers to use timer_setup()") +Link: https://lore.kernel.org/r/20230802-fix-dsp_cmx_send-cfi-failure-v1-1-2f2e79b0178d@kernel.org +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + drivers/isdn/mISDN/dsp.h | 2 +- + drivers/isdn/mISDN/dsp_cmx.c | 2 +- + drivers/isdn/mISDN/dsp_core.c | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/isdn/mISDN/dsp.h ++++ b/drivers/isdn/mISDN/dsp.h +@@ -247,7 +247,7 @@ extern void dsp_cmx_hardware(struct dsp_ + extern int dsp_cmx_conf(struct dsp *dsp, u32 conf_id); + extern void dsp_cmx_receive(struct dsp *dsp, struct sk_buff *skb); + extern void dsp_cmx_hdlc(struct dsp *dsp, struct sk_buff *skb); +-extern void dsp_cmx_send(void *arg); ++extern void dsp_cmx_send(struct timer_list *arg); + extern void dsp_cmx_transmit(struct dsp *dsp, struct sk_buff *skb); + extern int dsp_cmx_del_conf_member(struct dsp *dsp); + extern int dsp_cmx_del_conf(struct dsp_conf *conf); +--- a/drivers/isdn/mISDN/dsp_cmx.c ++++ b/drivers/isdn/mISDN/dsp_cmx.c +@@ -1614,7 +1614,7 @@ static u16 dsp_count; /* last sample cou + static int dsp_count_valid; /* if we have last sample count */ + + void +-dsp_cmx_send(void *arg) ++dsp_cmx_send(struct timer_list *arg) + { + struct dsp_conf *conf; + struct dsp_conf_member *member; +--- a/drivers/isdn/mISDN/dsp_core.c ++++ b/drivers/isdn/mISDN/dsp_core.c +@@ -1195,7 +1195,7 @@ static int __init dsp_init(void) + } + + /* set sample timer */ +- timer_setup(&dsp_spl_tl, (void *)dsp_cmx_send, 0); ++ timer_setup(&dsp_spl_tl, dsp_cmx_send, 0); + dsp_spl_tl.expires = jiffies + dsp_tics; + dsp_spl_jiffies = dsp_spl_tl.expires; + add_timer(&dsp_spl_tl); diff --git a/queue-6.4/net-core-remove-unnecessary-frame_sz-check-in-bpf_xdp_adjust_tail.patch b/queue-6.4/net-core-remove-unnecessary-frame_sz-check-in-bpf_xdp_adjust_tail.patch new file mode 100644 index 00000000000..afd89d10426 --- /dev/null +++ b/queue-6.4/net-core-remove-unnecessary-frame_sz-check-in-bpf_xdp_adjust_tail.patch @@ -0,0 +1,80 @@ +From d14eea09edf427fa36bd446f4a3271f99164202f Mon Sep 17 00:00:00 2001 +From: Andrew Kanner +Date: Thu, 3 Aug 2023 21:03:18 +0200 +Subject: net: core: remove unnecessary frame_sz check in bpf_xdp_adjust_tail() + +From: Andrew Kanner + +commit d14eea09edf427fa36bd446f4a3271f99164202f upstream. + +Syzkaller reported the following issue: +======================================= +Too BIG xdp->frame_sz = 131072 +WARNING: CPU: 0 PID: 5020 at net/core/filter.c:4121 + ____bpf_xdp_adjust_tail net/core/filter.c:4121 [inline] +WARNING: CPU: 0 PID: 5020 at net/core/filter.c:4121 + bpf_xdp_adjust_tail+0x466/0xa10 net/core/filter.c:4103 +... +Call Trace: + + bpf_prog_4add87e5301a4105+0x1a/0x1c + __bpf_prog_run include/linux/filter.h:600 [inline] + bpf_prog_run_xdp include/linux/filter.h:775 [inline] + bpf_prog_run_generic_xdp+0x57e/0x11e0 net/core/dev.c:4721 + netif_receive_generic_xdp net/core/dev.c:4807 [inline] + do_xdp_generic+0x35c/0x770 net/core/dev.c:4866 + tun_get_user+0x2340/0x3ca0 drivers/net/tun.c:1919 + tun_chr_write_iter+0xe8/0x210 drivers/net/tun.c:2043 + call_write_iter include/linux/fs.h:1871 [inline] + new_sync_write fs/read_write.c:491 [inline] + vfs_write+0x650/0xe40 fs/read_write.c:584 + ksys_write+0x12f/0x250 fs/read_write.c:637 + do_syscall_x64 arch/x86/entry/common.c:50 [inline] + do_syscall_64+0x38/0xb0 arch/x86/entry/common.c:80 + entry_SYSCALL_64_after_hwframe+0x63/0xcd + +xdp->frame_sz > PAGE_SIZE check was introduced in commit c8741e2bfe87 +("xdp: Allow bpf_xdp_adjust_tail() to grow packet size"). But Jesper +Dangaard Brouer noted that after introducing the +xdp_init_buff() which all XDP driver use - it's safe to remove this +check. The original intend was to catch cases where XDP drivers have +not been updated to use xdp.frame_sz, but that is not longer a concern +(since xdp_init_buff). + +Running the initial syzkaller repro it was discovered that the +contiguous physical memory allocation is used for both xdp paths in +tun_get_user(), e.g. tun_build_skb() and tun_alloc_skb(). It was also +stated by Jesper Dangaard Brouer that XDP can +work on higher order pages, as long as this is contiguous physical +memory (e.g. a page). + +Reported-and-tested-by: syzbot+f817490f5bd20541b90a@syzkaller.appspotmail.com +Closes: https://lore.kernel.org/all/000000000000774b9205f1d8a80d@google.com/T/ +Link: https://syzkaller.appspot.com/bug?extid=f817490f5bd20541b90a +Link: https://lore.kernel.org/all/20230725155403.796-1-andrew.kanner@gmail.com/T/ +Fixes: 43b5169d8355 ("net, xdp: Introduce xdp_init_buff utility routine") +Signed-off-by: Andrew Kanner +Acked-by: Jesper Dangaard Brouer +Acked-by: Jason Wang +Link: https://lore.kernel.org/r/20230803190316.2380231-1-andrew.kanner@gmail.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + net/core/filter.c | 6 ------ + 1 file changed, 6 deletions(-) + +--- a/net/core/filter.c ++++ b/net/core/filter.c +@@ -4115,12 +4115,6 @@ BPF_CALL_2(bpf_xdp_adjust_tail, struct x + if (unlikely(data_end > data_hard_end)) + return -EINVAL; + +- /* ALL drivers MUST init xdp->frame_sz, chicken check below */ +- if (unlikely(xdp->frame_sz > PAGE_SIZE)) { +- WARN_ONCE(1, "Too BIG xdp->frame_sz = %d\n", xdp->frame_sz); +- return -EINVAL; +- } +- + if (unlikely(data_end < xdp->data + ETH_HLEN)) + return -EINVAL; + diff --git a/queue-6.4/selftests-forwarding-add-a-helper-to-skip-test-when-using-veth-pairs.patch b/queue-6.4/selftests-forwarding-add-a-helper-to-skip-test-when-using-veth-pairs.patch new file mode 100644 index 00000000000..0009516c535 --- /dev/null +++ b/queue-6.4/selftests-forwarding-add-a-helper-to-skip-test-when-using-veth-pairs.patch @@ -0,0 +1,46 @@ +From 66e131861ab7bf754b50813216f5c6885cd32d63 Mon Sep 17 00:00:00 2001 +From: Ido Schimmel +Date: Tue, 8 Aug 2023 17:14:52 +0300 +Subject: selftests: forwarding: Add a helper to skip test when using veth pairs + +From: Ido Schimmel + +commit 66e131861ab7bf754b50813216f5c6885cd32d63 upstream. + +A handful of tests require physical loopbacks to be used instead of veth +pairs. Add a helper that these tests will invoke in order to be skipped +when executed with veth pairs. + +Fixes: 64916b57c0b1 ("selftests: forwarding: Add speed and auto-negotiation test") +Signed-off-by: Ido Schimmel +Reviewed-by: Petr Machata +Tested-by: Mirsad Todorovac +Reviewed-by: Hangbin Liu +Acked-by: Nikolay Aleksandrov +Link: https://lore.kernel.org/r/20230808141503.4060661-7-idosch@nvidia.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/forwarding/lib.sh | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +--- a/tools/testing/selftests/net/forwarding/lib.sh ++++ b/tools/testing/selftests/net/forwarding/lib.sh +@@ -164,6 +164,17 @@ check_port_mab_support() + fi + } + ++skip_on_veth() ++{ ++ local kind=$(ip -j -d link show dev ${NETIFS[p1]} | ++ jq -r '.[].linkinfo.info_kind') ++ ++ if [[ $kind == veth ]]; then ++ echo "SKIP: Test cannot be run with veth pairs" ++ exit $ksft_skip ++ fi ++} ++ + if [[ "$(id -u)" -ne 0 ]]; then + echo "SKIP: need root privileges" + exit $ksft_skip diff --git a/queue-6.4/selftests-forwarding-bridge_mdb-fix-failing-test-with-old-libnet.patch b/queue-6.4/selftests-forwarding-bridge_mdb-fix-failing-test-with-old-libnet.patch new file mode 100644 index 00000000000..61f0b3fa51f --- /dev/null +++ b/queue-6.4/selftests-forwarding-bridge_mdb-fix-failing-test-with-old-libnet.patch @@ -0,0 +1,203 @@ +From e98e195d90cc93b1bf2ad762c7c274a40dab7173 Mon Sep 17 00:00:00 2001 +From: Ido Schimmel +Date: Tue, 8 Aug 2023 17:15:01 +0300 +Subject: selftests: forwarding: bridge_mdb: Fix failing test with old libnet + +From: Ido Schimmel + +commit e98e195d90cc93b1bf2ad762c7c274a40dab7173 upstream. + +As explained in commit 8bcfb4ae4d97 ("selftests: forwarding: Fix failing +tests with old libnet"), old versions of libnet (used by mausezahn) do +not use the "SO_BINDTODEVICE" socket option. For IP unicast packets, +this can be solved by prefixing mausezahn invocations with "ip vrf +exec". However, IP multicast packets do not perform routing and simply +egress the bound device, which does not exist in this case. + +Fix by specifying the source and destination MAC of the packet which +will cause mausezahn to use a packet socket instead of an IP socket. + +Fixes: b6d00da08610 ("selftests: forwarding: Add bridge MDB test") +Reported-by: Mirsad Todorovac +Closes: https://lore.kernel.org/netdev/adc5e40d-d040-a65e-eb26-edf47dac5b02@alu.unizg.hr/ +Signed-off-by: Ido Schimmel +Tested-by: Mirsad Todorovac +Reviewed-by: Hangbin Liu +Acked-by: Nikolay Aleksandrov +Link: https://lore.kernel.org/r/20230808141503.4060661-16-idosch@nvidia.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + .../selftests/net/forwarding/bridge_mdb.sh | 46 ++++++++++--------- + 1 file changed, 24 insertions(+), 22 deletions(-) + +diff --git a/tools/testing/selftests/net/forwarding/bridge_mdb.sh b/tools/testing/selftests/net/forwarding/bridge_mdb.sh +index 6f830b5f03c9..4853b8e4f8d3 100755 +--- a/tools/testing/selftests/net/forwarding/bridge_mdb.sh ++++ b/tools/testing/selftests/net/forwarding/bridge_mdb.sh +@@ -850,6 +850,7 @@ cfg_test() + __fwd_test_host_ip() + { + local grp=$1; shift ++ local dmac=$1; shift + local src=$1; shift + local mode=$1; shift + local name +@@ -872,27 +873,27 @@ __fwd_test_host_ip() + # Packet should only be flooded to multicast router ports when there is + # no matching MDB entry. The bridge is not configured as a multicast + # router port. +- $MZ $mode $h1.10 -c 1 -p 128 -A $src -B $grp -t udp -q ++ $MZ $mode $h1.10 -a own -b $dmac -c 1 -p 128 -A $src -B $grp -t udp -q + tc_check_packets "dev br0 ingress" 1 0 + check_err $? "Packet locally received after flood" + + # Install a regular port group entry and expect the packet to not be + # locally received. + bridge mdb add dev br0 port $swp2 grp $grp temp vid 10 +- $MZ $mode $h1.10 -c 1 -p 128 -A $src -B $grp -t udp -q ++ $MZ $mode $h1.10 -a own -b $dmac -c 1 -p 128 -A $src -B $grp -t udp -q + tc_check_packets "dev br0 ingress" 1 0 + check_err $? "Packet locally received after installing a regular entry" + + # Add a host entry and expect the packet to be locally received. + bridge mdb add dev br0 port br0 grp $grp temp vid 10 +- $MZ $mode $h1.10 -c 1 -p 128 -A $src -B $grp -t udp -q ++ $MZ $mode $h1.10 -a own -b $dmac -c 1 -p 128 -A $src -B $grp -t udp -q + tc_check_packets "dev br0 ingress" 1 1 + check_err $? "Packet not locally received after adding a host entry" + + # Remove the host entry and expect the packet to not be locally + # received. + bridge mdb del dev br0 port br0 grp $grp vid 10 +- $MZ $mode $h1.10 -c 1 -p 128 -A $src -B $grp -t udp -q ++ $MZ $mode $h1.10 -a own -b $dmac -c 1 -p 128 -A $src -B $grp -t udp -q + tc_check_packets "dev br0 ingress" 1 1 + check_err $? "Packet locally received after removing a host entry" + +@@ -905,8 +906,8 @@ __fwd_test_host_ip() + + fwd_test_host_ip() + { +- __fwd_test_host_ip "239.1.1.1" "192.0.2.1" "-4" +- __fwd_test_host_ip "ff0e::1" "2001:db8:1::1" "-6" ++ __fwd_test_host_ip "239.1.1.1" "01:00:5e:01:01:01" "192.0.2.1" "-4" ++ __fwd_test_host_ip "ff0e::1" "33:33:00:00:00:01" "2001:db8:1::1" "-6" + } + + fwd_test_host_l2() +@@ -966,6 +967,7 @@ fwd_test_host() + __fwd_test_port_ip() + { + local grp=$1; shift ++ local dmac=$1; shift + local valid_src=$1; shift + local invalid_src=$1; shift + local mode=$1; shift +@@ -999,43 +1001,43 @@ __fwd_test_port_ip() + vlan_ethtype $eth_type vlan_id 10 dst_ip $grp \ + src_ip $invalid_src action drop + +- $MZ $mode $h1.10 -c 1 -p 128 -A $valid_src -B $grp -t udp -q ++ $MZ $mode $h1.10 -a own -b $dmac -c 1 -p 128 -A $valid_src -B $grp -t udp -q + tc_check_packets "dev $h2 ingress" 1 0 + check_err $? "Packet from valid source received on H2 before adding entry" + +- $MZ $mode $h1.10 -c 1 -p 128 -A $invalid_src -B $grp -t udp -q ++ $MZ $mode $h1.10 -a own -b $dmac -c 1 -p 128 -A $invalid_src -B $grp -t udp -q + tc_check_packets "dev $h2 ingress" 2 0 + check_err $? "Packet from invalid source received on H2 before adding entry" + + bridge mdb add dev br0 port $swp2 grp $grp vid 10 \ + filter_mode $filter_mode source_list $src_list + +- $MZ $mode $h1.10 -c 1 -p 128 -A $valid_src -B $grp -t udp -q ++ $MZ $mode $h1.10 -a own -b $dmac -c 1 -p 128 -A $valid_src -B $grp -t udp -q + tc_check_packets "dev $h2 ingress" 1 1 + check_err $? "Packet from valid source not received on H2 after adding entry" + +- $MZ $mode $h1.10 -c 1 -p 128 -A $invalid_src -B $grp -t udp -q ++ $MZ $mode $h1.10 -a own -b $dmac -c 1 -p 128 -A $invalid_src -B $grp -t udp -q + tc_check_packets "dev $h2 ingress" 2 0 + check_err $? "Packet from invalid source received on H2 after adding entry" + + bridge mdb replace dev br0 port $swp2 grp $grp vid 10 \ + filter_mode exclude + +- $MZ $mode $h1.10 -c 1 -p 128 -A $valid_src -B $grp -t udp -q ++ $MZ $mode $h1.10 -a own -b $dmac -c 1 -p 128 -A $valid_src -B $grp -t udp -q + tc_check_packets "dev $h2 ingress" 1 2 + check_err $? "Packet from valid source not received on H2 after allowing all sources" + +- $MZ $mode $h1.10 -c 1 -p 128 -A $invalid_src -B $grp -t udp -q ++ $MZ $mode $h1.10 -a own -b $dmac -c 1 -p 128 -A $invalid_src -B $grp -t udp -q + tc_check_packets "dev $h2 ingress" 2 1 + check_err $? "Packet from invalid source not received on H2 after allowing all sources" + + bridge mdb del dev br0 port $swp2 grp $grp vid 10 + +- $MZ $mode $h1.10 -c 1 -p 128 -A $valid_src -B $grp -t udp -q ++ $MZ $mode $h1.10 -a own -b $dmac -c 1 -p 128 -A $valid_src -B $grp -t udp -q + tc_check_packets "dev $h2 ingress" 1 2 + check_err $? "Packet from valid source received on H2 after deleting entry" + +- $MZ $mode $h1.10 -c 1 -p 128 -A $invalid_src -B $grp -t udp -q ++ $MZ $mode $h1.10 -a own -b $dmac -c 1 -p 128 -A $invalid_src -B $grp -t udp -q + tc_check_packets "dev $h2 ingress" 2 1 + check_err $? "Packet from invalid source received on H2 after deleting entry" + +@@ -1047,11 +1049,11 @@ __fwd_test_port_ip() + + fwd_test_port_ip() + { +- __fwd_test_port_ip "239.1.1.1" "192.0.2.1" "192.0.2.2" "-4" "exclude" +- __fwd_test_port_ip "ff0e::1" "2001:db8:1::1" "2001:db8:1::2" "-6" \ ++ __fwd_test_port_ip "239.1.1.1" "01:00:5e:01:01:01" "192.0.2.1" "192.0.2.2" "-4" "exclude" ++ __fwd_test_port_ip "ff0e::1" "33:33:00:00:00:01" "2001:db8:1::1" "2001:db8:1::2" "-6" \ + "exclude" +- __fwd_test_port_ip "239.1.1.1" "192.0.2.1" "192.0.2.2" "-4" "include" +- __fwd_test_port_ip "ff0e::1" "2001:db8:1::1" "2001:db8:1::2" "-6" \ ++ __fwd_test_port_ip "239.1.1.1" "01:00:5e:01:01:01" "192.0.2.1" "192.0.2.2" "-4" "include" ++ __fwd_test_port_ip "ff0e::1" "33:33:00:00:00:01" "2001:db8:1::1" "2001:db8:1::2" "-6" \ + "include" + } + +@@ -1127,7 +1129,7 @@ ctrl_igmpv3_is_in_test() + filter_mode include source_list 192.0.2.1 + + # IS_IN ( 192.0.2.2 ) +- $MZ $h1.10 -c 1 -A 192.0.2.1 -B 239.1.1.1 \ ++ $MZ $h1.10 -c 1 -a own -b 01:00:5e:01:01:01 -A 192.0.2.1 -B 239.1.1.1 \ + -t ip proto=2,p=$(igmpv3_is_in_get 239.1.1.1 192.0.2.2) -q + + bridge -d mdb show dev br0 vid 10 | grep 239.1.1.1 | grep -q 192.0.2.2 +@@ -1140,7 +1142,7 @@ ctrl_igmpv3_is_in_test() + filter_mode include source_list 192.0.2.1 + + # IS_IN ( 192.0.2.2 ) +- $MZ $h1.10 -c 1 -A 192.0.2.1 -B 239.1.1.1 \ ++ $MZ $h1.10 -a own -b 01:00:5e:01:01:01 -c 1 -A 192.0.2.1 -B 239.1.1.1 \ + -t ip proto=2,p=$(igmpv3_is_in_get 239.1.1.1 192.0.2.2) -q + + bridge -d mdb show dev br0 vid 10 | grep 239.1.1.1 | grep -v "src" | \ +@@ -1167,7 +1169,7 @@ ctrl_mldv2_is_in_test() + + # IS_IN ( 2001:db8:1::2 ) + local p=$(mldv2_is_in_get fe80::1 ff0e::1 2001:db8:1::2) +- $MZ -6 $h1.10 -c 1 -A fe80::1 -B ff0e::1 \ ++ $MZ -6 $h1.10 -a own -b 33:33:00:00:00:01 -c 1 -A fe80::1 -B ff0e::1 \ + -t ip hop=1,next=0,p="$p" -q + + bridge -d mdb show dev br0 vid 10 | grep ff0e::1 | \ +@@ -1181,7 +1183,7 @@ ctrl_mldv2_is_in_test() + filter_mode include source_list 2001:db8:1::1 + + # IS_IN ( 2001:db8:1::2 ) +- $MZ -6 $h1.10 -c 1 -A fe80::1 -B ff0e::1 \ ++ $MZ -6 $h1.10 -a own -b 33:33:00:00:00:01 -c 1 -A fe80::1 -B ff0e::1 \ + -t ip hop=1,next=0,p="$p" -q + + bridge -d mdb show dev br0 vid 10 | grep ff0e::1 | grep -v "src" | \ +-- +2.41.0 + diff --git a/queue-6.4/selftests-forwarding-bridge_mdb-make-test-more-robust.patch b/queue-6.4/selftests-forwarding-bridge_mdb-make-test-more-robust.patch new file mode 100644 index 00000000000..f863be12d98 --- /dev/null +++ b/queue-6.4/selftests-forwarding-bridge_mdb-make-test-more-robust.patch @@ -0,0 +1,65 @@ +From 8b5ff37097775cdbd447442603957066dd2e4d02 Mon Sep 17 00:00:00 2001 +From: Ido Schimmel +Date: Tue, 8 Aug 2023 17:15:03 +0300 +Subject: selftests: forwarding: bridge_mdb: Make test more robust + +From: Ido Schimmel + +commit 8b5ff37097775cdbd447442603957066dd2e4d02 upstream. + +Some test cases check that the group timer is (or isn't) 0. Instead of +grepping for "0.00" grep for " 0.00" as the former can also match +"260.00" which is the default group membership interval. + +Fixes: b6d00da08610 ("selftests: forwarding: Add bridge MDB test") +Reported-by: Mirsad Todorovac +Closes: https://lore.kernel.org/netdev/adc5e40d-d040-a65e-eb26-edf47dac5b02@alu.unizg.hr/ +Signed-off-by: Ido Schimmel +Tested-by: Mirsad Todorovac +Reviewed-by: Hangbin Liu +Acked-by: Nikolay Aleksandrov +Link: https://lore.kernel.org/r/20230808141503.4060661-18-idosch@nvidia.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/forwarding/bridge_mdb.sh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/tools/testing/selftests/net/forwarding/bridge_mdb.sh ++++ b/tools/testing/selftests/net/forwarding/bridge_mdb.sh +@@ -617,7 +617,7 @@ __cfg_test_port_ip_sg() + grep -q "permanent" + check_err $? "Entry not added as \"permanent\" when should" + bridge -d -s mdb show dev br0 vid 10 | grep "$grp_key" | \ +- grep -q "0.00" ++ grep -q " 0.00" + check_err $? "\"permanent\" entry has a pending group timer" + bridge mdb del dev br0 port $swp1 $grp_key vid 10 + +@@ -626,7 +626,7 @@ __cfg_test_port_ip_sg() + grep -q "temp" + check_err $? "Entry not added as \"temp\" when should" + bridge -d -s mdb show dev br0 vid 10 | grep "$grp_key" | \ +- grep -q "0.00" ++ grep -q " 0.00" + check_fail $? "\"temp\" entry has an unpending group timer" + bridge mdb del dev br0 port $swp1 $grp_key vid 10 + +@@ -659,7 +659,7 @@ __cfg_test_port_ip_sg() + grep -q "permanent" + check_err $? "Entry not marked as \"permanent\" after replace" + bridge -d -s mdb show dev br0 vid 10 | grep "$grp_key" | \ +- grep -q "0.00" ++ grep -q " 0.00" + check_err $? "Entry has a pending group timer after replace" + + bridge mdb replace dev br0 port $swp1 $grp_key vid 10 temp +@@ -667,7 +667,7 @@ __cfg_test_port_ip_sg() + grep -q "temp" + check_err $? "Entry not marked as \"temp\" after replace" + bridge -d -s mdb show dev br0 vid 10 | grep "$grp_key" | \ +- grep -q "0.00" ++ grep -q " 0.00" + check_fail $? "Entry has an unpending group timer after replace" + bridge mdb del dev br0 port $swp1 $grp_key vid 10 + diff --git a/queue-6.4/selftests-forwarding-bridge_mdb_max-fix-failing-test-with-old-libnet.patch b/queue-6.4/selftests-forwarding-bridge_mdb_max-fix-failing-test-with-old-libnet.patch new file mode 100644 index 00000000000..126f1c7e62c --- /dev/null +++ b/queue-6.4/selftests-forwarding-bridge_mdb_max-fix-failing-test-with-old-libnet.patch @@ -0,0 +1,84 @@ +From cb034948ac292da82cc0e6bc1340f81be36e117d Mon Sep 17 00:00:00 2001 +From: Ido Schimmel +Date: Tue, 8 Aug 2023 17:15:02 +0300 +Subject: selftests: forwarding: bridge_mdb_max: Fix failing test with old libnet + +From: Ido Schimmel + +commit cb034948ac292da82cc0e6bc1340f81be36e117d upstream. + +As explained in commit 8bcfb4ae4d97 ("selftests: forwarding: Fix failing +tests with old libnet"), old versions of libnet (used by mausezahn) do +not use the "SO_BINDTODEVICE" socket option. For IP unicast packets, +this can be solved by prefixing mausezahn invocations with "ip vrf +exec". However, IP multicast packets do not perform routing and simply +egress the bound device, which does not exist in this case. + +Fix by specifying the source and destination MAC of the packet which +will cause mausezahn to use a packet socket instead of an IP socket. + +Fixes: 3446dcd7df05 ("selftests: forwarding: bridge_mdb_max: Add a new selftest") +Reported-by: Mirsad Todorovac +Closes: https://lore.kernel.org/netdev/adc5e40d-d040-a65e-eb26-edf47dac5b02@alu.unizg.hr/ +Signed-off-by: Ido Schimmel +Tested-by: Mirsad Todorovac +Reviewed-by: Hangbin Liu +Acked-by: Nikolay Aleksandrov +Link: https://lore.kernel.org/r/20230808141503.4060661-17-idosch@nvidia.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + .../selftests/net/forwarding/bridge_mdb_max.sh | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/tools/testing/selftests/net/forwarding/bridge_mdb_max.sh b/tools/testing/selftests/net/forwarding/bridge_mdb_max.sh +index fa762b716288..3da9d93ab36f 100755 +--- a/tools/testing/selftests/net/forwarding/bridge_mdb_max.sh ++++ b/tools/testing/selftests/net/forwarding/bridge_mdb_max.sh +@@ -252,7 +252,8 @@ ctl4_entries_add() + local IPs=$(seq -f 192.0.2.%g 1 $((n - 1))) + local peer=$(locus_dev_peer $locus) + local GRP=239.1.1.${grp} +- $MZ $peer -c 1 -A 192.0.2.1 -B $GRP \ ++ local dmac=01:00:5e:01:01:$(printf "%02x" $grp) ++ $MZ $peer -a own -b $dmac -c 1 -A 192.0.2.1 -B $GRP \ + -t ip proto=2,p=$(igmpv3_is_in_get $GRP $IPs) -q + sleep 1 + +@@ -272,7 +273,8 @@ ctl4_entries_del() + + local peer=$(locus_dev_peer $locus) + local GRP=239.1.1.${grp} +- $MZ $peer -c 1 -A 192.0.2.1 -B 224.0.0.2 \ ++ local dmac=01:00:5e:00:00:02 ++ $MZ $peer -a own -b $dmac -c 1 -A 192.0.2.1 -B 224.0.0.2 \ + -t ip proto=2,p=$(igmpv2_leave_get $GRP) -q + sleep 1 + ! bridge mdb show dev br0 | grep -q $GRP +@@ -289,8 +291,10 @@ ctl6_entries_add() + local peer=$(locus_dev_peer $locus) + local SIP=fe80::1 + local GRP=ff0e::${grp} ++ local dmac=33:33:00:00:00:$(printf "%02x" $grp) + local p=$(mldv2_is_in_get $SIP $GRP $IPs) +- $MZ -6 $peer -c 1 -A $SIP -B $GRP -t ip hop=1,next=0,p="$p" -q ++ $MZ -6 $peer -a own -b $dmac -c 1 -A $SIP -B $GRP \ ++ -t ip hop=1,next=0,p="$p" -q + sleep 1 + + local nn=$(bridge mdb show dev br0 | grep $GRP | wc -l) +@@ -310,8 +314,10 @@ ctl6_entries_del() + local peer=$(locus_dev_peer $locus) + local SIP=fe80::1 + local GRP=ff0e::${grp} ++ local dmac=33:33:00:00:00:$(printf "%02x" $grp) + local p=$(mldv1_done_get $SIP $GRP) +- $MZ -6 $peer -c 1 -A $SIP -B $GRP -t ip hop=1,next=0,p="$p" -q ++ $MZ -6 $peer -a own -b $dmac -c 1 -A $SIP -B $GRP \ ++ -t ip hop=1,next=0,p="$p" -q + sleep 1 + ! bridge mdb show dev br0 | grep -q $GRP + } +-- +2.41.0 + diff --git a/queue-6.4/selftests-forwarding-ethtool-skip-when-using-veth-pairs.patch b/queue-6.4/selftests-forwarding-ethtool-skip-when-using-veth-pairs.patch new file mode 100644 index 00000000000..1e87af77367 --- /dev/null +++ b/queue-6.4/selftests-forwarding-ethtool-skip-when-using-veth-pairs.patch @@ -0,0 +1,45 @@ +From 60a36e21915c31c0375d9427be9406aa8ce2ec34 Mon Sep 17 00:00:00 2001 +From: Ido Schimmel +Date: Tue, 8 Aug 2023 17:14:53 +0300 +Subject: selftests: forwarding: ethtool: Skip when using veth pairs + +From: Ido Schimmel + +commit 60a36e21915c31c0375d9427be9406aa8ce2ec34 upstream. + +Auto-negotiation cannot be tested with veth pairs, resulting in +failures: + + # ./ethtool.sh + TEST: force of same speed autoneg off [FAIL] + error in configuration. swp1 speed Not autoneg off + [...] + +Fix by skipping the test when used with veth pairs. + +Fixes: 64916b57c0b1 ("selftests: forwarding: Add speed and auto-negotiation test") +Reported-by: Mirsad Todorovac +Closes: https://lore.kernel.org/netdev/adc5e40d-d040-a65e-eb26-edf47dac5b02@alu.unizg.hr/ +Signed-off-by: Ido Schimmel +Reviewed-by: Petr Machata +Tested-by: Mirsad Todorovac +Reviewed-by: Hangbin Liu +Acked-by: Nikolay Aleksandrov +Link: https://lore.kernel.org/r/20230808141503.4060661-8-idosch@nvidia.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/forwarding/ethtool.sh | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/tools/testing/selftests/net/forwarding/ethtool.sh ++++ b/tools/testing/selftests/net/forwarding/ethtool.sh +@@ -286,6 +286,8 @@ different_speeds_autoneg_on() + ethtool -s $h1 autoneg on + } + ++skip_on_veth ++ + trap cleanup EXIT + + setup_prepare diff --git a/queue-6.4/selftests-forwarding-ethtool_extended_state-skip-when-using-veth-pairs.patch b/queue-6.4/selftests-forwarding-ethtool_extended_state-skip-when-using-veth-pairs.patch new file mode 100644 index 00000000000..4cf1ba65e4a --- /dev/null +++ b/queue-6.4/selftests-forwarding-ethtool_extended_state-skip-when-using-veth-pairs.patch @@ -0,0 +1,45 @@ +From b3d9305e60d121dac20a77b6847c4cf14a4c0001 Mon Sep 17 00:00:00 2001 +From: Ido Schimmel +Date: Tue, 8 Aug 2023 17:14:54 +0300 +Subject: selftests: forwarding: ethtool_extended_state: Skip when using veth pairs + +From: Ido Schimmel + +commit b3d9305e60d121dac20a77b6847c4cf14a4c0001 upstream. + +Ethtool extended state cannot be tested with veth pairs, resulting in +failures: + + # ./ethtool_extended_state.sh + TEST: Autoneg, No partner detected [FAIL] + Expected "Autoneg", got "Link detected: no" + [...] + +Fix by skipping the test when used with veth pairs. + +Fixes: 7d10bcce98cd ("selftests: forwarding: Add tests for ethtool extended state") +Reported-by: Mirsad Todorovac +Closes: https://lore.kernel.org/netdev/adc5e40d-d040-a65e-eb26-edf47dac5b02@alu.unizg.hr/ +Signed-off-by: Ido Schimmel +Reviewed-by: Petr Machata +Tested-by: Mirsad Todorovac +Reviewed-by: Hangbin Liu +Acked-by: Nikolay Aleksandrov +Link: https://lore.kernel.org/r/20230808141503.4060661-9-idosch@nvidia.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/forwarding/ethtool_extended_state.sh | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/tools/testing/selftests/net/forwarding/ethtool_extended_state.sh ++++ b/tools/testing/selftests/net/forwarding/ethtool_extended_state.sh +@@ -108,6 +108,8 @@ no_cable() + ip link set dev $swp3 down + } + ++skip_on_veth ++ + setup_prepare + + tests_run diff --git a/queue-6.4/selftests-forwarding-hw_stats_l3_gre-skip-when-using-veth-pairs.patch b/queue-6.4/selftests-forwarding-hw_stats_l3_gre-skip-when-using-veth-pairs.patch new file mode 100644 index 00000000000..343a7b5b818 --- /dev/null +++ b/queue-6.4/selftests-forwarding-hw_stats_l3_gre-skip-when-using-veth-pairs.patch @@ -0,0 +1,47 @@ +From 9a711cde07c245a163d95eee5b42ed1871e73236 Mon Sep 17 00:00:00 2001 +From: Ido Schimmel +Date: Tue, 8 Aug 2023 17:14:55 +0300 +Subject: selftests: forwarding: hw_stats_l3_gre: Skip when using veth pairs + +From: Ido Schimmel + +commit 9a711cde07c245a163d95eee5b42ed1871e73236 upstream. + +Layer 3 hardware stats cannot be used when the underlying interfaces are +veth pairs, resulting in failures: + + # ./hw_stats_l3_gre.sh + TEST: ping gre flat [ OK ] + TEST: Test rx packets: [FAIL] + Traffic not reflected in the counter: 0 -> 0 + TEST: Test tx packets: [FAIL] + Traffic not reflected in the counter: 0 -> 0 + +Fix by skipping the test when used with veth pairs. + +Fixes: 813f97a26860 ("selftests: forwarding: Add a tunnel-based test for L3 HW stats") +Reported-by: Mirsad Todorovac +Closes: https://lore.kernel.org/netdev/adc5e40d-d040-a65e-eb26-edf47dac5b02@alu.unizg.hr/ +Signed-off-by: Ido Schimmel +Reviewed-by: Petr Machata +Tested-by: Mirsad Todorovac +Reviewed-by: Hangbin Liu +Acked-by: Nikolay Aleksandrov +Link: https://lore.kernel.org/r/20230808141503.4060661-10-idosch@nvidia.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/forwarding/hw_stats_l3_gre.sh | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/tools/testing/selftests/net/forwarding/hw_stats_l3_gre.sh ++++ b/tools/testing/selftests/net/forwarding/hw_stats_l3_gre.sh +@@ -99,6 +99,8 @@ test_stats_rx() + test_stats g2a rx + } + ++skip_on_veth ++ + trap cleanup EXIT + + setup_prepare diff --git a/queue-6.4/selftests-forwarding-skip-test-when-no-interfaces-are-specified.patch b/queue-6.4/selftests-forwarding-skip-test-when-no-interfaces-are-specified.patch new file mode 100644 index 00000000000..b14900f490c --- /dev/null +++ b/queue-6.4/selftests-forwarding-skip-test-when-no-interfaces-are-specified.patch @@ -0,0 +1,68 @@ +From d72c83b1e4b4a36a38269c77a85ff52f95eb0d08 Mon Sep 17 00:00:00 2001 +From: Ido Schimmel +Date: Tue, 8 Aug 2023 17:14:47 +0300 +Subject: selftests: forwarding: Skip test when no interfaces are specified + +From: Ido Schimmel + +commit d72c83b1e4b4a36a38269c77a85ff52f95eb0d08 upstream. + +As explained in [1], the forwarding selftests are meant to be run with +either physical loopbacks or veth pairs. The interfaces are expected to +be specified in a user-provided forwarding.config file or as command +line arguments. By default, this file is not present and the tests fail: + + # make -C tools/testing/selftests TARGETS=net/forwarding run_tests + [...] + TAP version 13 + 1..102 + # timeout set to 45 + # selftests: net/forwarding: bridge_igmp.sh + # Command line is not complete. Try option "help" + # Failed to create netif + not ok 1 selftests: net/forwarding: bridge_igmp.sh # exit=1 + [...] + +Fix by skipping a test if interfaces are not provided either via the +configuration file or command line arguments. + + # make -C tools/testing/selftests TARGETS=net/forwarding run_tests + [...] + TAP version 13 + 1..102 + # timeout set to 45 + # selftests: net/forwarding: bridge_igmp.sh + # SKIP: Cannot create interface. Name not specified + ok 1 selftests: net/forwarding: bridge_igmp.sh # SKIP + +[1] tools/testing/selftests/net/forwarding/README + +Fixes: 81573b18f26d ("selftests/net/forwarding: add Makefile to install tests") +Reported-by: Mirsad Todorovac +Closes: https://lore.kernel.org/netdev/856d454e-f83c-20cf-e166-6dc06cbc1543@alu.unizg.hr/ +Signed-off-by: Ido Schimmel +Reviewed-by: Petr Machata +Tested-by: Mirsad Todorovac +Reviewed-by: Hangbin Liu +Acked-by: Nikolay Aleksandrov +Link: https://lore.kernel.org/r/20230808141503.4060661-2-idosch@nvidia.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/forwarding/lib.sh | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/tools/testing/selftests/net/forwarding/lib.sh ++++ b/tools/testing/selftests/net/forwarding/lib.sh +@@ -237,6 +237,11 @@ create_netif_veth() + for ((i = 1; i <= NUM_NETIFS; ++i)); do + local j=$((i+1)) + ++ if [ -z ${NETIFS[p$i]} ]; then ++ echo "SKIP: Cannot create interface. Name not specified" ++ exit $ksft_skip ++ fi ++ + ip link show dev ${NETIFS[p$i]} &> /dev/null + if [[ $? -ne 0 ]]; then + ip link add ${NETIFS[p$i]} type veth \ diff --git a/queue-6.4/selftests-forwarding-switch-off-timeout.patch b/queue-6.4/selftests-forwarding-switch-off-timeout.patch new file mode 100644 index 00000000000..5729a42dc28 --- /dev/null +++ b/queue-6.4/selftests-forwarding-switch-off-timeout.patch @@ -0,0 +1,49 @@ +From 0529883ad102f6c04e19fb7018f31e1bda575bbe Mon Sep 17 00:00:00 2001 +From: Ido Schimmel +Date: Tue, 8 Aug 2023 17:14:48 +0300 +Subject: selftests: forwarding: Switch off timeout + +From: Ido Schimmel + +commit 0529883ad102f6c04e19fb7018f31e1bda575bbe upstream. + +The default timeout for selftests is 45 seconds, but it is not enough +for forwarding selftests which can takes minutes to finish depending on +the number of tests cases: + + # make -C tools/testing/selftests TARGETS=net/forwarding run_tests + TAP version 13 + 1..102 + # timeout set to 45 + # selftests: net/forwarding: bridge_igmp.sh + # TEST: IGMPv2 report 239.10.10.10 [ OK ] + # TEST: IGMPv2 leave 239.10.10.10 [ OK ] + # TEST: IGMPv3 report 239.10.10.10 is_include [ OK ] + # TEST: IGMPv3 report 239.10.10.10 include -> allow [ OK ] + # + not ok 1 selftests: net/forwarding: bridge_igmp.sh # TIMEOUT 45 seconds + +Fix by switching off the timeout and setting it to 0. A similar change +was done for BPF selftests in commit 6fc5916cc256 ("selftests: bpf: +Switch off timeout"). + +Fixes: 81573b18f26d ("selftests/net/forwarding: add Makefile to install tests") +Reported-by: Mirsad Todorovac +Closes: https://lore.kernel.org/netdev/8d149f8c-818e-d141-a0ce-a6bae606bc22@alu.unizg.hr/ +Signed-off-by: Ido Schimmel +Reviewed-by: Petr Machata +Tested-by: Mirsad Todorovac +Reviewed-by: Hangbin Liu +Acked-by: Nikolay Aleksandrov +Link: https://lore.kernel.org/r/20230808141503.4060661-3-idosch@nvidia.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/forwarding/settings | 1 + + 1 file changed, 1 insertion(+) + create mode 100644 tools/testing/selftests/net/forwarding/settings + +--- /dev/null ++++ b/tools/testing/selftests/net/forwarding/settings +@@ -0,0 +1 @@ ++timeout=0 diff --git a/queue-6.4/selftests-forwarding-tc_actions-use-ncat-instead-of-nc.patch b/queue-6.4/selftests-forwarding-tc_actions-use-ncat-instead-of-nc.patch new file mode 100644 index 00000000000..cf2915755c5 --- /dev/null +++ b/queue-6.4/selftests-forwarding-tc_actions-use-ncat-instead-of-nc.patch @@ -0,0 +1,79 @@ +From 5e8670610b93158ffacc3241f835454ff26a3469 Mon Sep 17 00:00:00 2001 +From: Ido Schimmel +Date: Tue, 8 Aug 2023 17:14:57 +0300 +Subject: selftests: forwarding: tc_actions: Use ncat instead of nc + +From: Ido Schimmel + +commit 5e8670610b93158ffacc3241f835454ff26a3469 upstream. + +The test relies on 'nc' being the netcat version from the nmap project. +While this seems to be the case on Fedora, it is not the case on Ubuntu, +resulting in failures such as [1]. + +Fix by explicitly using the 'ncat' utility from the nmap project and the +skip the test in case it is not installed. + +[1] + # timeout set to 0 + # selftests: net/forwarding: tc_actions.sh + # TEST: gact drop and ok (skip_hw) [ OK ] + # TEST: mirred egress flower redirect (skip_hw) [ OK ] + # TEST: mirred egress flower mirror (skip_hw) [ OK ] + # TEST: mirred egress matchall mirror (skip_hw) [ OK ] + # TEST: mirred_egress_to_ingress (skip_hw) [ OK ] + # nc: invalid option -- '-' + # usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl] + # [-m minttl] [-O length] [-P proxy_username] [-p source_port] + # [-q seconds] [-s sourceaddr] [-T keyword] [-V rtable] [-W recvlimit] + # [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]] + # [destination] [port] + # nc: invalid option -- '-' + # usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl] + # [-m minttl] [-O length] [-P proxy_username] [-p source_port] + # [-q seconds] [-s sourceaddr] [-T keyword] [-V rtable] [-W recvlimit] + # [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]] + # [destination] [port] + # TEST: mirred_egress_to_ingress_tcp (skip_hw) [FAIL] + # server output check failed + # INFO: Could not test offloaded functionality + not ok 80 selftests: net/forwarding: tc_actions.sh # exit=1 + +Fixes: ca22da2fbd69 ("act_mirred: use the backlog for nested calls to mirred ingress") +Reported-by: Mirsad Todorovac +Closes: https://lore.kernel.org/netdev/adc5e40d-d040-a65e-eb26-edf47dac5b02@alu.unizg.hr/ +Signed-off-by: Ido Schimmel +Reviewed-by: Petr Machata +Tested-by: Mirsad Todorovac +Reviewed-by: Hangbin Liu +Acked-by: Nikolay Aleksandrov +Link: https://lore.kernel.org/r/20230808141503.4060661-12-idosch@nvidia.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/forwarding/tc_actions.sh | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +--- a/tools/testing/selftests/net/forwarding/tc_actions.sh ++++ b/tools/testing/selftests/net/forwarding/tc_actions.sh +@@ -9,6 +9,8 @@ NUM_NETIFS=4 + source tc_common.sh + source lib.sh + ++require_command ncat ++ + tcflags="skip_hw" + + h1_create() +@@ -220,9 +222,9 @@ mirred_egress_to_ingress_tcp_test() + ip_proto icmp \ + action drop + +- ip vrf exec v$h1 nc --recv-only -w10 -l -p 12345 -o $mirred_e2i_tf2 & ++ ip vrf exec v$h1 ncat --recv-only -w10 -l -p 12345 -o $mirred_e2i_tf2 & + local rpid=$! +- ip vrf exec v$h1 nc -w1 --send-only 192.0.2.2 12345 <$mirred_e2i_tf1 ++ ip vrf exec v$h1 ncat -w1 --send-only 192.0.2.2 12345 <$mirred_e2i_tf1 + wait -n $rpid + cmp -s $mirred_e2i_tf1 $mirred_e2i_tf2 + check_err $? "server output check failed" diff --git a/queue-6.4/selftests-forwarding-tc_flower-relax-success-criterion.patch b/queue-6.4/selftests-forwarding-tc_flower-relax-success-criterion.patch new file mode 100644 index 00000000000..57a1c300f46 --- /dev/null +++ b/queue-6.4/selftests-forwarding-tc_flower-relax-success-criterion.patch @@ -0,0 +1,56 @@ +From 9ee37e53e7687654b487fc94e82569377272a7a8 Mon Sep 17 00:00:00 2001 +From: Ido Schimmel +Date: Tue, 8 Aug 2023 17:14:58 +0300 +Subject: selftests: forwarding: tc_flower: Relax success criterion + +From: Ido Schimmel + +commit 9ee37e53e7687654b487fc94e82569377272a7a8 upstream. + +The test checks that filters that match on source or destination MAC +were only hit once. A host can send more than one packet with a given +source or destination MAC, resulting in failures. + +Fix by relaxing the success criterion and instead check that the filters +were not hit zero times. Using tc_check_at_least_x_packets() is also an +option, but it is not available in older kernels. + +Fixes: 07e5c75184a1 ("selftests: forwarding: Introduce tc flower matching tests") +Reported-by: Mirsad Todorovac +Closes: https://lore.kernel.org/netdev/adc5e40d-d040-a65e-eb26-edf47dac5b02@alu.unizg.hr/ +Signed-off-by: Ido Schimmel +Reviewed-by: Petr Machata +Tested-by: Mirsad Todorovac +Reviewed-by: Hangbin Liu +Acked-by: Nikolay Aleksandrov +Link: https://lore.kernel.org/r/20230808141503.4060661-13-idosch@nvidia.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/forwarding/tc_flower.sh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/tools/testing/selftests/net/forwarding/tc_flower.sh ++++ b/tools/testing/selftests/net/forwarding/tc_flower.sh +@@ -52,8 +52,8 @@ match_dst_mac_test() + tc_check_packets "dev $h2 ingress" 101 1 + check_fail $? "Matched on a wrong filter" + +- tc_check_packets "dev $h2 ingress" 102 1 +- check_err $? "Did not match on correct filter" ++ tc_check_packets "dev $h2 ingress" 102 0 ++ check_fail $? "Did not match on correct filter" + + tc filter del dev $h2 ingress protocol ip pref 1 handle 101 flower + tc filter del dev $h2 ingress protocol ip pref 2 handle 102 flower +@@ -78,8 +78,8 @@ match_src_mac_test() + tc_check_packets "dev $h2 ingress" 101 1 + check_fail $? "Matched on a wrong filter" + +- tc_check_packets "dev $h2 ingress" 102 1 +- check_err $? "Did not match on correct filter" ++ tc_check_packets "dev $h2 ingress" 102 0 ++ check_fail $? "Did not match on correct filter" + + tc filter del dev $h2 ingress protocol ip pref 1 handle 101 flower + tc filter del dev $h2 ingress protocol ip pref 2 handle 102 flower diff --git a/queue-6.4/series b/queue-6.4/series index 9efcd25c772..8b4e2eedae6 100644 --- a/queue-6.4/series +++ b/queue-6.4/series @@ -107,3 +107,20 @@ dmaengine-xilinx-xdma-fix-typo.patch dmaengine-xilinx-xdma-fix-judgment-of-the-return-value.patch selftests-bpf-fix-a-ci-failure-caused-by-vsock-sockmap-test.patch selftests-rseq-fix-build-with-undefined-__weak.patch +selftests-forwarding-add-a-helper-to-skip-test-when-using-veth-pairs.patch +selftests-forwarding-ethtool-skip-when-using-veth-pairs.patch +selftests-forwarding-ethtool_extended_state-skip-when-using-veth-pairs.patch +selftests-forwarding-hw_stats_l3_gre-skip-when-using-veth-pairs.patch +selftests-forwarding-skip-test-when-no-interfaces-are-specified.patch +selftests-forwarding-switch-off-timeout.patch +selftests-forwarding-tc_actions-use-ncat-instead-of-nc.patch +selftests-forwarding-tc_flower-relax-success-criterion.patch +selftests-forwarding-bridge_mdb_max-fix-failing-test-with-old-libnet.patch +selftests-forwarding-bridge_mdb-fix-failing-test-with-old-libnet.patch +selftests-forwarding-bridge_mdb-make-test-more-robust.patch +net-core-remove-unnecessary-frame_sz-check-in-bpf_xdp_adjust_tail.patch +bpf-sockmap-fix-map-type-error-in-sock_map_del_link.patch +bpf-sockmap-fix-bug-that-strp_done-cannot-be-called.patch +hwmon-aquacomputer_d5next-add-selective-200ms-delay-after-sending-ctrl-report.patch +misdn-update-parameter-type-of-dsp_cmx_send.patch +macsec-use-dev_stats_inc.patch