From: Greg Kroah-Hartman Date: Tue, 19 Nov 2024 13:02:34 +0000 (+0100) Subject: 6.6-stable patches X-Git-Tag: v6.12.1~25 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=31bead963f128d0f0875034acccf342f107f356b;p=thirdparty%2Fkernel%2Fstable-queue.git 6.6-stable patches added patches: mptcp-add-userspace_pm_lookup_addr_by_id-helper.patch mptcp-define-more-local-variables-sk.patch mptcp-drop-lookup_by_id-in-lookup_addr.patch mptcp-hold-pm-lock-when-deleting-entry.patch mptcp-pm-use-_rcu-variant-under-rcu_read_lock.patch mptcp-update-local-address-flags-when-setting-it.patch --- diff --git a/queue-6.6/mptcp-add-userspace_pm_lookup_addr_by_id-helper.patch b/queue-6.6/mptcp-add-userspace_pm_lookup_addr_by_id-helper.patch new file mode 100644 index 00000000000..406d026fcdf --- /dev/null +++ b/queue-6.6/mptcp-add-userspace_pm_lookup_addr_by_id-helper.patch @@ -0,0 +1,89 @@ +From stable+bounces-93823-greg=kroah.com@vger.kernel.org Mon Nov 18 19:27:51 2024 +From: "Matthieu Baerts (NGI0)" +Date: Mon, 18 Nov 2024 19:27:20 +0100 +Subject: mptcp: add userspace_pm_lookup_addr_by_id helper +To: mptcp@lists.linux.dev, stable@vger.kernel.org, gregkh@linuxfoundation.org +Cc: Geliang Tang , sashal@kernel.org, Matthieu Baerts , Mat Martineau , "David S . Miller" +Message-ID: <20241118182718.3011097-10-matttbe@kernel.org> + +From: Geliang Tang + +commit 06afe09091ee69dc7ab058b4be9917ae59cc81e5 upstream. + +Corresponding __lookup_addr_by_id() helper in the in-kernel netlink PM, +this patch adds a new helper mptcp_userspace_pm_lookup_addr_by_id() to +lookup the address entry with the given id on the userspace pm local +address list. + +Signed-off-by: Geliang Tang +Reviewed-by: Matthieu Baerts (NGI0) +Reviewed-by: Mat Martineau +Signed-off-by: Matthieu Baerts (NGI0) +Signed-off-by: David S. Miller +Stable-dep-of: f642c5c4d528 ("mptcp: hold pm lock when deleting entry") +Signed-off-by: Matthieu Baerts (NGI0) +Signed-off-by: Greg Kroah-Hartman +--- + net/mptcp/pm_userspace.c | 31 ++++++++++++++++--------------- + 1 file changed, 16 insertions(+), 15 deletions(-) + +--- a/net/mptcp/pm_userspace.c ++++ b/net/mptcp/pm_userspace.c +@@ -107,19 +107,26 @@ static int mptcp_userspace_pm_delete_loc + return -EINVAL; + } + ++static struct mptcp_pm_addr_entry * ++mptcp_userspace_pm_lookup_addr_by_id(struct mptcp_sock *msk, unsigned int id) ++{ ++ struct mptcp_pm_addr_entry *entry; ++ ++ list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) { ++ if (entry->addr.id == id) ++ return entry; ++ } ++ return NULL; ++} ++ + int mptcp_userspace_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, + unsigned int id, + u8 *flags, int *ifindex) + { +- struct mptcp_pm_addr_entry *entry, *match = NULL; ++ struct mptcp_pm_addr_entry *match; + + spin_lock_bh(&msk->pm.lock); +- list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) { +- if (id == entry->addr.id) { +- match = entry; +- break; +- } +- } ++ match = mptcp_userspace_pm_lookup_addr_by_id(msk, id); + spin_unlock_bh(&msk->pm.lock); + if (match) { + *flags = match->flags; +@@ -280,7 +287,7 @@ int mptcp_nl_cmd_remove(struct sk_buff * + { + struct nlattr *token = info->attrs[MPTCP_PM_ATTR_TOKEN]; + struct nlattr *id = info->attrs[MPTCP_PM_ATTR_LOC_ID]; +- struct mptcp_pm_addr_entry *match = NULL; ++ struct mptcp_pm_addr_entry *match; + struct mptcp_pm_addr_entry *entry; + struct mptcp_sock *msk; + LIST_HEAD(free_list); +@@ -317,13 +324,7 @@ int mptcp_nl_cmd_remove(struct sk_buff * + + lock_sock(sk); + +- list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) { +- if (entry->addr.id == id_val) { +- match = entry; +- break; +- } +- } +- ++ match = mptcp_userspace_pm_lookup_addr_by_id(msk, id_val); + if (!match) { + GENL_SET_ERR_MSG(info, "address with specified id not found"); + release_sock(sk); diff --git a/queue-6.6/mptcp-define-more-local-variables-sk.patch b/queue-6.6/mptcp-define-more-local-variables-sk.patch new file mode 100644 index 00000000000..ec08e5abc60 --- /dev/null +++ b/queue-6.6/mptcp-define-more-local-variables-sk.patch @@ -0,0 +1,156 @@ +From stable+bounces-93822-greg=kroah.com@vger.kernel.org Mon Nov 18 19:27:52 2024 +From: "Matthieu Baerts (NGI0)" +Date: Mon, 18 Nov 2024 19:27:19 +0100 +Subject: mptcp: define more local variables sk +To: mptcp@lists.linux.dev, stable@vger.kernel.org, gregkh@linuxfoundation.org +Cc: Geliang Tang , sashal@kernel.org, Matthieu Baerts , Mat Martineau , Jakub Kicinski +Message-ID: <20241118182718.3011097-9-matttbe@kernel.org> + +From: Geliang Tang + +commit 14cb0e0bf39bd10429ba14e9e2f905f1144226fc upstream. + +'(struct sock *)msk' is used several times in mptcp_nl_cmd_announce(), +mptcp_nl_cmd_remove() or mptcp_userspace_pm_set_flags() in pm_userspace.c, +it's worth adding a local variable sk to point it. + +Reviewed-by: Matthieu Baerts +Signed-off-by: Geliang Tang +Signed-off-by: Mat Martineau +Link: https://lore.kernel.org/r/20231025-send-net-next-20231025-v1-8-db8f25f798eb@kernel.org +Signed-off-by: Jakub Kicinski +Stable-dep-of: 06afe09091ee ("mptcp: add userspace_pm_lookup_addr_by_id helper") +Signed-off-by: Matthieu Baerts (NGI0) +Signed-off-by: Greg Kroah-Hartman +--- + net/mptcp/pm_userspace.c | 31 ++++++++++++++++++++----------- + 1 file changed, 20 insertions(+), 11 deletions(-) + +--- a/net/mptcp/pm_userspace.c ++++ b/net/mptcp/pm_userspace.c +@@ -183,6 +183,7 @@ int mptcp_nl_cmd_announce(struct sk_buff + struct mptcp_pm_addr_entry addr_val; + struct mptcp_sock *msk; + int err = -EINVAL; ++ struct sock *sk; + u32 token_val; + + if (!addr || !token) { +@@ -198,6 +199,8 @@ int mptcp_nl_cmd_announce(struct sk_buff + return err; + } + ++ sk = (struct sock *)msk; ++ + if (!mptcp_pm_is_userspace(msk)) { + GENL_SET_ERR_MSG(info, "invalid request; userspace PM not selected"); + goto announce_err; +@@ -221,7 +224,7 @@ int mptcp_nl_cmd_announce(struct sk_buff + goto announce_err; + } + +- lock_sock((struct sock *)msk); ++ lock_sock(sk); + spin_lock_bh(&msk->pm.lock); + + if (mptcp_pm_alloc_anno_list(msk, &addr_val.addr)) { +@@ -231,11 +234,11 @@ int mptcp_nl_cmd_announce(struct sk_buff + } + + spin_unlock_bh(&msk->pm.lock); +- release_sock((struct sock *)msk); ++ release_sock(sk); + + err = 0; + announce_err: +- sock_put((struct sock *)msk); ++ sock_put(sk); + return err; + } + +@@ -282,6 +285,7 @@ int mptcp_nl_cmd_remove(struct sk_buff * + struct mptcp_sock *msk; + LIST_HEAD(free_list); + int err = -EINVAL; ++ struct sock *sk; + u32 token_val; + u8 id_val; + +@@ -299,6 +303,8 @@ int mptcp_nl_cmd_remove(struct sk_buff * + return err; + } + ++ sk = (struct sock *)msk; ++ + if (!mptcp_pm_is_userspace(msk)) { + GENL_SET_ERR_MSG(info, "invalid request; userspace PM not selected"); + goto remove_err; +@@ -309,7 +315,7 @@ int mptcp_nl_cmd_remove(struct sk_buff * + goto remove_err; + } + +- lock_sock((struct sock *)msk); ++ lock_sock(sk); + + list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) { + if (entry->addr.id == id_val) { +@@ -320,7 +326,7 @@ int mptcp_nl_cmd_remove(struct sk_buff * + + if (!match) { + GENL_SET_ERR_MSG(info, "address with specified id not found"); +- release_sock((struct sock *)msk); ++ release_sock(sk); + goto remove_err; + } + +@@ -328,15 +334,15 @@ int mptcp_nl_cmd_remove(struct sk_buff * + + mptcp_pm_remove_addrs(msk, &free_list); + +- release_sock((struct sock *)msk); ++ release_sock(sk); + + list_for_each_entry_safe(match, entry, &free_list, list) { +- sock_kfree_s((struct sock *)msk, match, sizeof(*match)); ++ sock_kfree_s(sk, match, sizeof(*match)); + } + + err = 0; + remove_err: +- sock_put((struct sock *)msk); ++ sock_put(sk); + return err; + } + +@@ -558,6 +564,7 @@ int mptcp_userspace_pm_set_flags(struct + { + struct mptcp_sock *msk; + int ret = -EINVAL; ++ struct sock *sk; + u32 token_val; + + token_val = nla_get_u32(token); +@@ -566,6 +573,8 @@ int mptcp_userspace_pm_set_flags(struct + if (!msk) + return ret; + ++ sk = (struct sock *)msk; ++ + if (!mptcp_pm_is_userspace(msk)) + goto set_flags_err; + +@@ -573,11 +582,11 @@ int mptcp_userspace_pm_set_flags(struct + rem->addr.family == AF_UNSPEC) + goto set_flags_err; + +- lock_sock((struct sock *)msk); ++ lock_sock(sk); + ret = mptcp_pm_nl_mp_prio_send_ack(msk, &loc->addr, &rem->addr, bkup); +- release_sock((struct sock *)msk); ++ release_sock(sk); + + set_flags_err: +- sock_put((struct sock *)msk); ++ sock_put(sk); + return ret; + } diff --git a/queue-6.6/mptcp-drop-lookup_by_id-in-lookup_addr.patch b/queue-6.6/mptcp-drop-lookup_by_id-in-lookup_addr.patch new file mode 100644 index 00000000000..8428bb04f3a --- /dev/null +++ b/queue-6.6/mptcp-drop-lookup_by_id-in-lookup_addr.patch @@ -0,0 +1,73 @@ +From stable+bounces-93826-greg=kroah.com@vger.kernel.org Mon Nov 18 19:27:58 2024 +From: "Matthieu Baerts (NGI0)" +Date: Mon, 18 Nov 2024 19:27:23 +0100 +Subject: mptcp: drop lookup_by_id in lookup_addr +To: mptcp@lists.linux.dev, stable@vger.kernel.org, gregkh@linuxfoundation.org +Cc: Geliang Tang , sashal@kernel.org, Matthieu Baerts , Jakub Kicinski +Message-ID: <20241118182718.3011097-13-matttbe@kernel.org> + +From: Geliang Tang + +commit af250c27ea1c404e210fc3a308b20f772df584d6 upstream. + +When the lookup_by_id parameter of __lookup_addr() is true, it's the same +as __lookup_addr_by_id(), it can be replaced by __lookup_addr_by_id() +directly. So drop this parameter, let __lookup_addr() only looks up address +on the local address list by comparing addresses in it, not address ids. + +Signed-off-by: Geliang Tang +Reviewed-by: Matthieu Baerts (NGI0) +Signed-off-by: Matthieu Baerts (NGI0) +Link: https://lore.kernel.org/r/20240305-upstream-net-next-20240304-mptcp-misc-cleanup-v1-4-c436ba5e569b@kernel.org +Signed-off-by: Jakub Kicinski +Stable-dep-of: db3eab8110bc ("mptcp: pm: use _rcu variant under rcu_read_lock") +[ Conflicts in pm_netlink.c, because commit 6a42477fe449 ("mptcp: update + set_flags interfaces") is not in this version, and causes too many + conflicts when backporting it. The conflict is easy to resolve: addr + is a pointer here here in mptcp_pm_nl_set_flags(), the rest of the + code is the same. ] +Signed-off-by: Matthieu Baerts (NGI0) +Signed-off-by: Greg Kroah-Hartman +--- + net/mptcp/pm_netlink.c | 12 +++++------- + 1 file changed, 5 insertions(+), 7 deletions(-) + +--- a/net/mptcp/pm_netlink.c ++++ b/net/mptcp/pm_netlink.c +@@ -521,15 +521,12 @@ __lookup_addr_by_id(struct pm_nl_pernet + } + + static struct mptcp_pm_addr_entry * +-__lookup_addr(struct pm_nl_pernet *pernet, const struct mptcp_addr_info *info, +- bool lookup_by_id) ++__lookup_addr(struct pm_nl_pernet *pernet, const struct mptcp_addr_info *info) + { + struct mptcp_pm_addr_entry *entry; + + list_for_each_entry(entry, &pernet->local_addr_list, list) { +- if ((!lookup_by_id && +- mptcp_addresses_equal(&entry->addr, info, entry->addr.port)) || +- (lookup_by_id && entry->addr.id == info->id)) ++ if (mptcp_addresses_equal(&entry->addr, info, entry->addr.port)) + return entry; + } + return NULL; +@@ -560,7 +557,7 @@ static void mptcp_pm_create_subflow_or_s + + mptcp_local_address((struct sock_common *)msk->first, &mpc_addr); + rcu_read_lock(); +- entry = __lookup_addr(pernet, &mpc_addr, false); ++ entry = __lookup_addr(pernet, &mpc_addr); + if (entry) { + __clear_bit(entry->addr.id, msk->pm.id_avail_bitmap); + msk->mpc_endpoint_id = entry->addr.id; +@@ -2064,7 +2061,8 @@ int mptcp_pm_nl_set_flags(struct net *ne + } + + spin_lock_bh(&pernet->lock); +- entry = __lookup_addr(pernet, &addr->addr, lookup_by_id); ++ entry = lookup_by_id ? __lookup_addr_by_id(pernet, addr->addr.id) : ++ __lookup_addr(pernet, &addr->addr); + if (!entry) { + spin_unlock_bh(&pernet->lock); + return -EINVAL; diff --git a/queue-6.6/mptcp-hold-pm-lock-when-deleting-entry.patch b/queue-6.6/mptcp-hold-pm-lock-when-deleting-entry.patch new file mode 100644 index 00000000000..91f086381c2 --- /dev/null +++ b/queue-6.6/mptcp-hold-pm-lock-when-deleting-entry.patch @@ -0,0 +1,51 @@ +From stable+bounces-93825-greg=kroah.com@vger.kernel.org Mon Nov 18 19:27:56 2024 +From: "Matthieu Baerts (NGI0)" +Date: Mon, 18 Nov 2024 19:27:22 +0100 +Subject: mptcp: hold pm lock when deleting entry +To: mptcp@lists.linux.dev, stable@vger.kernel.org, gregkh@linuxfoundation.org +Cc: Geliang Tang , sashal@kernel.org, Matthieu Baerts , Jakub Kicinski +Message-ID: <20241118182718.3011097-12-matttbe@kernel.org> + +From: Geliang Tang + +commit f642c5c4d528d11bd78b6c6f84f541cd3c0bea86 upstream. + +When traversing userspace_pm_local_addr_list and deleting an entry from +it in mptcp_pm_nl_remove_doit(), msk->pm.lock should be held. + +This patch holds this lock before mptcp_userspace_pm_lookup_addr_by_id() +and releases it after list_move() in mptcp_pm_nl_remove_doit(). + +Fixes: d9a4594edabf ("mptcp: netlink: Add MPTCP_PM_CMD_REMOVE") +Cc: stable@vger.kernel.org +Signed-off-by: Geliang Tang +Reviewed-by: Matthieu Baerts (NGI0) +Signed-off-by: Matthieu Baerts (NGI0) +Link: https://patch.msgid.link/20241112-net-mptcp-misc-6-12-pm-v1-2-b835580cefa8@kernel.org +Signed-off-by: Jakub Kicinski +Signed-off-by: Matthieu Baerts (NGI0) +Signed-off-by: Greg Kroah-Hartman +--- + net/mptcp/pm_userspace.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/net/mptcp/pm_userspace.c ++++ b/net/mptcp/pm_userspace.c +@@ -324,14 +324,17 @@ int mptcp_nl_cmd_remove(struct sk_buff * + + lock_sock(sk); + ++ spin_lock_bh(&msk->pm.lock); + match = mptcp_userspace_pm_lookup_addr_by_id(msk, id_val); + if (!match) { + GENL_SET_ERR_MSG(info, "address with specified id not found"); ++ spin_unlock_bh(&msk->pm.lock); + release_sock(sk); + goto remove_err; + } + + list_move(&match->list, &free_list); ++ spin_unlock_bh(&msk->pm.lock); + + mptcp_pm_remove_addrs(msk, &free_list); + diff --git a/queue-6.6/mptcp-pm-use-_rcu-variant-under-rcu_read_lock.patch b/queue-6.6/mptcp-pm-use-_rcu-variant-under-rcu_read_lock.patch new file mode 100644 index 00000000000..3b4009fb8ac --- /dev/null +++ b/queue-6.6/mptcp-pm-use-_rcu-variant-under-rcu_read_lock.patch @@ -0,0 +1,47 @@ +From stable+bounces-93827-greg=kroah.com@vger.kernel.org Mon Nov 18 19:28:00 2024 +From: "Matthieu Baerts (NGI0)" +Date: Mon, 18 Nov 2024 19:27:24 +0100 +Subject: mptcp: pm: use _rcu variant under rcu_read_lock +To: mptcp@lists.linux.dev, stable@vger.kernel.org, gregkh@linuxfoundation.org +Cc: "Matthieu Baerts (NGI0)" , sashal@kernel.org, Geliang Tang , Jakub Kicinski +Message-ID: <20241118182718.3011097-14-matttbe@kernel.org> + +From: "Matthieu Baerts (NGI0)" + +commit db3eab8110bc0520416101b6a5b52f44a43fb4cf upstream. + +In mptcp_pm_create_subflow_or_signal_addr(), rcu_read_(un)lock() are +used as expected to iterate over the list of local addresses, but +list_for_each_entry() was used instead of list_for_each_entry_rcu() in +__lookup_addr(). It is important to use this variant which adds the +required READ_ONCE() (and diagnostic checks if enabled). + +Because __lookup_addr() is also used in mptcp_pm_nl_set_flags() where it +is called under the pernet->lock and not rcu_read_lock(), an extra +condition is then passed to help the diagnostic checks making sure +either the associated spin lock or the RCU lock is held. + +Fixes: 86e39e04482b ("mptcp: keep track of local endpoint still available for each msk") +Cc: stable@vger.kernel.org +Reviewed-by: Geliang Tang +Signed-off-by: Matthieu Baerts (NGI0) +Link: https://patch.msgid.link/20241112-net-mptcp-misc-6-12-pm-v1-3-b835580cefa8@kernel.org +Signed-off-by: Jakub Kicinski +Signed-off-by: Matthieu Baerts (NGI0) +Signed-off-by: Greg Kroah-Hartman +--- + net/mptcp/pm_netlink.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/net/mptcp/pm_netlink.c ++++ b/net/mptcp/pm_netlink.c +@@ -525,7 +525,8 @@ __lookup_addr(struct pm_nl_pernet *perne + { + struct mptcp_pm_addr_entry *entry; + +- list_for_each_entry(entry, &pernet->local_addr_list, list) { ++ list_for_each_entry_rcu(entry, &pernet->local_addr_list, list, ++ lockdep_is_held(&pernet->lock)) { + if (mptcp_addresses_equal(&entry->addr, info, entry->addr.port)) + return entry; + } diff --git a/queue-6.6/mptcp-update-local-address-flags-when-setting-it.patch b/queue-6.6/mptcp-update-local-address-flags-when-setting-it.patch new file mode 100644 index 00000000000..5dfac49861f --- /dev/null +++ b/queue-6.6/mptcp-update-local-address-flags-when-setting-it.patch @@ -0,0 +1,65 @@ +From stable+bounces-93824-greg=kroah.com@vger.kernel.org Mon Nov 18 19:27:52 2024 +From: "Matthieu Baerts (NGI0)" +Date: Mon, 18 Nov 2024 19:27:21 +0100 +Subject: mptcp: update local address flags when setting it +To: mptcp@lists.linux.dev, stable@vger.kernel.org, gregkh@linuxfoundation.org +Cc: Geliang Tang , sashal@kernel.org, Matthieu Baerts , Jakub Kicinski +Message-ID: <20241118182718.3011097-11-matttbe@kernel.org> + +From: Geliang Tang + +commit e0266319413d5d687ba7b6df7ca99e4b9724a4f2 upstream. + +Just like in-kernel pm, when userspace pm does set_flags, it needs to send +out MP_PRIO signal, and also modify the flags of the corresponding address +entry in the local address list. This patch implements the missing logic. + +Traverse all address entries on userspace_pm_local_addr_list to find the +local address entry, if bkup is true, set the flags of this entry with +FLAG_BACKUP, otherwise, clear FLAG_BACKUP. + +Fixes: 892f396c8e68 ("mptcp: netlink: issue MP_PRIO signals from userspace PMs") +Cc: stable@vger.kernel.org +Signed-off-by: Geliang Tang +Reviewed-by: Matthieu Baerts (NGI0) +Signed-off-by: Matthieu Baerts (NGI0) +Link: https://patch.msgid.link/20241112-net-mptcp-misc-6-12-pm-v1-1-b835580cefa8@kernel.org +Signed-off-by: Jakub Kicinski +[ Conflicts in pm_userspace.c, because commit 6a42477fe449 ("mptcp: + update set_flags interfaces"), is not in this version, and causes too + many conflicts when backporting it. The same code can still be added + at the same place, before sending the ACK. ] +Signed-off-by: Matthieu Baerts (NGI0) +Signed-off-by: Greg Kroah-Hartman +--- + net/mptcp/pm_userspace.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +--- a/net/mptcp/pm_userspace.c ++++ b/net/mptcp/pm_userspace.c +@@ -563,6 +563,7 @@ int mptcp_userspace_pm_set_flags(struct + struct mptcp_pm_addr_entry *loc, + struct mptcp_pm_addr_entry *rem, u8 bkup) + { ++ struct mptcp_pm_addr_entry *entry; + struct mptcp_sock *msk; + int ret = -EINVAL; + struct sock *sk; +@@ -583,6 +584,17 @@ int mptcp_userspace_pm_set_flags(struct + rem->addr.family == AF_UNSPEC) + goto set_flags_err; + ++ spin_lock_bh(&msk->pm.lock); ++ list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) { ++ if (mptcp_addresses_equal(&entry->addr, &loc->addr, false)) { ++ if (bkup) ++ entry->flags |= MPTCP_PM_ADDR_FLAG_BACKUP; ++ else ++ entry->flags &= ~MPTCP_PM_ADDR_FLAG_BACKUP; ++ } ++ } ++ spin_unlock_bh(&msk->pm.lock); ++ + lock_sock(sk); + ret = mptcp_pm_nl_mp_prio_send_ack(msk, &loc->addr, &rem->addr, bkup); + release_sock(sk); diff --git a/queue-6.6/series b/queue-6.6/series index 8b94def5fff..cb40fd1394c 100644 --- a/queue-6.6/series +++ b/queue-6.6/series @@ -63,3 +63,9 @@ nfsd-async-copy-result-needs-to-return-a-write-verifier.patch nfsd-limit-the-number-of-concurrent-async-copy-operations.patch nfsd-initialize-struct-nfsd4_copy-earlier.patch nfsd-never-decrement-pending_async_copies-on-error.patch +mptcp-define-more-local-variables-sk.patch +mptcp-add-userspace_pm_lookup_addr_by_id-helper.patch +mptcp-update-local-address-flags-when-setting-it.patch +mptcp-hold-pm-lock-when-deleting-entry.patch +mptcp-drop-lookup_by_id-in-lookup_addr.patch +mptcp-pm-use-_rcu-variant-under-rcu_read_lock.patch