* [PATCH AUTOSEL 5.16 03/27] xfrm: Check if_id in xfrm_migrate
[not found] <20220309161711.135679-1-sashal@kernel.org>
@ 2022-03-09 16:16 ` Sasha Levin
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 04/27] xfrm: Fix xfrm migrate issues when address family changes Sasha Levin
` (10 subsequent siblings)
11 siblings, 0 replies; 16+ messages in thread
From: Sasha Levin @ 2022-03-09 16:16 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Yan Yan, Steffen Klassert, Sasha Levin, davem, kuba, netdev
From: Yan Yan <evitayan@google.com>
[ Upstream commit c1aca3080e382886e2e58e809787441984a2f89b ]
This patch enables distinguishing SAs and SPs based on if_id during
the xfrm_migrate flow. This ensures support for xfrm interfaces
throughout the SA/SP lifecycle.
When there are multiple existing SPs with the same direction,
the same xfrm_selector and different endpoint addresses,
xfrm_migrate might fail with ENODATA.
Specifically, the code path for performing xfrm_migrate is:
Stage 1: find policy to migrate with
xfrm_migrate_policy_find(sel, dir, type, net)
Stage 2: find and update state(s) with
xfrm_migrate_state_find(mp, net)
Stage 3: update endpoint address(es) of template(s) with
xfrm_policy_migrate(pol, m, num_migrate)
Currently "Stage 1" always returns the first xfrm_policy that
matches, and "Stage 3" looks for the xfrm_tmpl that matches the
old endpoint address. Thus if there are multiple xfrm_policy
with same selector, direction, type and net, "Stage 1" might
rertun a wrong xfrm_policy and "Stage 3" will fail with ENODATA
because it cannot find a xfrm_tmpl with the matching endpoint
address.
The fix is to allow userspace to pass an if_id and add if_id
to the matching rule in Stage 1 and Stage 2 since if_id is a
unique ID for xfrm_policy and xfrm_state. For compatibility,
if_id will only be checked if the attribute is set.
Tested with additions to Android's kernel unit test suite:
https://android-review.googlesource.com/c/kernel/tests/+/1668886
Signed-off-by: Yan Yan <evitayan@google.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
include/net/xfrm.h | 5 +++--
net/key/af_key.c | 2 +-
net/xfrm/xfrm_policy.c | 14 ++++++++------
net/xfrm/xfrm_state.c | 7 ++++++-
net/xfrm/xfrm_user.c | 6 +++++-
5 files changed, 23 insertions(+), 11 deletions(-)
diff --git a/include/net/xfrm.h b/include/net/xfrm.h
index 301a164f17e9..358dfe6fefef 100644
--- a/include/net/xfrm.h
+++ b/include/net/xfrm.h
@@ -1679,14 +1679,15 @@ int km_migrate(const struct xfrm_selector *sel, u8 dir, u8 type,
const struct xfrm_migrate *m, int num_bundles,
const struct xfrm_kmaddress *k,
const struct xfrm_encap_tmpl *encap);
-struct xfrm_state *xfrm_migrate_state_find(struct xfrm_migrate *m, struct net *net);
+struct xfrm_state *xfrm_migrate_state_find(struct xfrm_migrate *m, struct net *net,
+ u32 if_id);
struct xfrm_state *xfrm_state_migrate(struct xfrm_state *x,
struct xfrm_migrate *m,
struct xfrm_encap_tmpl *encap);
int xfrm_migrate(const struct xfrm_selector *sel, u8 dir, u8 type,
struct xfrm_migrate *m, int num_bundles,
struct xfrm_kmaddress *k, struct net *net,
- struct xfrm_encap_tmpl *encap);
+ struct xfrm_encap_tmpl *encap, u32 if_id);
#endif
int km_new_mapping(struct xfrm_state *x, xfrm_address_t *ipaddr, __be16 sport);
diff --git a/net/key/af_key.c b/net/key/af_key.c
index de24a7d474df..9bf52a09b5ff 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -2623,7 +2623,7 @@ static int pfkey_migrate(struct sock *sk, struct sk_buff *skb,
}
return xfrm_migrate(&sel, dir, XFRM_POLICY_TYPE_MAIN, m, i,
- kma ? &k : NULL, net, NULL);
+ kma ? &k : NULL, net, NULL, 0);
out:
return err;
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index 4924b9135c6e..fbc0b2798184 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -4257,7 +4257,7 @@ static bool xfrm_migrate_selector_match(const struct xfrm_selector *sel_cmp,
}
static struct xfrm_policy *xfrm_migrate_policy_find(const struct xfrm_selector *sel,
- u8 dir, u8 type, struct net *net)
+ u8 dir, u8 type, struct net *net, u32 if_id)
{
struct xfrm_policy *pol, *ret = NULL;
struct hlist_head *chain;
@@ -4266,7 +4266,8 @@ static struct xfrm_policy *xfrm_migrate_policy_find(const struct xfrm_selector *
spin_lock_bh(&net->xfrm.xfrm_policy_lock);
chain = policy_hash_direct(net, &sel->daddr, &sel->saddr, sel->family, dir);
hlist_for_each_entry(pol, chain, bydst) {
- if (xfrm_migrate_selector_match(sel, &pol->selector) &&
+ if ((if_id == 0 || pol->if_id == if_id) &&
+ xfrm_migrate_selector_match(sel, &pol->selector) &&
pol->type == type) {
ret = pol;
priority = ret->priority;
@@ -4278,7 +4279,8 @@ static struct xfrm_policy *xfrm_migrate_policy_find(const struct xfrm_selector *
if ((pol->priority >= priority) && ret)
break;
- if (xfrm_migrate_selector_match(sel, &pol->selector) &&
+ if ((if_id == 0 || pol->if_id == if_id) &&
+ xfrm_migrate_selector_match(sel, &pol->selector) &&
pol->type == type) {
ret = pol;
break;
@@ -4394,7 +4396,7 @@ static int xfrm_migrate_check(const struct xfrm_migrate *m, int num_migrate)
int xfrm_migrate(const struct xfrm_selector *sel, u8 dir, u8 type,
struct xfrm_migrate *m, int num_migrate,
struct xfrm_kmaddress *k, struct net *net,
- struct xfrm_encap_tmpl *encap)
+ struct xfrm_encap_tmpl *encap, u32 if_id)
{
int i, err, nx_cur = 0, nx_new = 0;
struct xfrm_policy *pol = NULL;
@@ -4413,14 +4415,14 @@ int xfrm_migrate(const struct xfrm_selector *sel, u8 dir, u8 type,
}
/* Stage 1 - find policy */
- if ((pol = xfrm_migrate_policy_find(sel, dir, type, net)) == NULL) {
+ if ((pol = xfrm_migrate_policy_find(sel, dir, type, net, if_id)) == NULL) {
err = -ENOENT;
goto out;
}
/* Stage 2 - find and update state(s) */
for (i = 0, mp = m; i < num_migrate; i++, mp++) {
- if ((x = xfrm_migrate_state_find(mp, net))) {
+ if ((x = xfrm_migrate_state_find(mp, net, if_id))) {
x_cur[nx_cur] = x;
nx_cur++;
xc = xfrm_state_migrate(x, mp, encap);
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
index 100b4b3723e7..291236d7676f 100644
--- a/net/xfrm/xfrm_state.c
+++ b/net/xfrm/xfrm_state.c
@@ -1605,7 +1605,8 @@ static struct xfrm_state *xfrm_state_clone(struct xfrm_state *orig,
return NULL;
}
-struct xfrm_state *xfrm_migrate_state_find(struct xfrm_migrate *m, struct net *net)
+struct xfrm_state *xfrm_migrate_state_find(struct xfrm_migrate *m, struct net *net,
+ u32 if_id)
{
unsigned int h;
struct xfrm_state *x = NULL;
@@ -1621,6 +1622,8 @@ struct xfrm_state *xfrm_migrate_state_find(struct xfrm_migrate *m, struct net *n
continue;
if (m->reqid && x->props.reqid != m->reqid)
continue;
+ if (if_id != 0 && x->if_id != if_id)
+ continue;
if (!xfrm_addr_equal(&x->id.daddr, &m->old_daddr,
m->old_family) ||
!xfrm_addr_equal(&x->props.saddr, &m->old_saddr,
@@ -1636,6 +1639,8 @@ struct xfrm_state *xfrm_migrate_state_find(struct xfrm_migrate *m, struct net *n
if (x->props.mode != m->mode ||
x->id.proto != m->proto)
continue;
+ if (if_id != 0 && x->if_id != if_id)
+ continue;
if (!xfrm_addr_equal(&x->id.daddr, &m->old_daddr,
m->old_family) ||
!xfrm_addr_equal(&x->props.saddr, &m->old_saddr,
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
index c60441be883a..4490b459b284 100644
--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -2607,6 +2607,7 @@ static int xfrm_do_migrate(struct sk_buff *skb, struct nlmsghdr *nlh,
int n = 0;
struct net *net = sock_net(skb->sk);
struct xfrm_encap_tmpl *encap = NULL;
+ u32 if_id = 0;
if (attrs[XFRMA_MIGRATE] == NULL)
return -EINVAL;
@@ -2631,7 +2632,10 @@ static int xfrm_do_migrate(struct sk_buff *skb, struct nlmsghdr *nlh,
return -ENOMEM;
}
- err = xfrm_migrate(&pi->sel, pi->dir, type, m, n, kmp, net, encap);
+ if (attrs[XFRMA_IF_ID])
+ if_id = nla_get_u32(attrs[XFRMA_IF_ID]);
+
+ err = xfrm_migrate(&pi->sel, pi->dir, type, m, n, kmp, net, encap, if_id);
kfree(encap);
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH AUTOSEL 5.16 04/27] xfrm: Fix xfrm migrate issues when address family changes
[not found] <20220309161711.135679-1-sashal@kernel.org>
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 03/27] xfrm: Check if_id in xfrm_migrate Sasha Levin
@ 2022-03-09 16:16 ` Sasha Levin
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 11/27] mac80211: refuse aggregations sessions before authorized Sasha Levin
` (9 subsequent siblings)
11 siblings, 0 replies; 16+ messages in thread
From: Sasha Levin @ 2022-03-09 16:16 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Yan Yan, Steffen Klassert, Sasha Levin, davem, kuba, netdev
From: Yan Yan <evitayan@google.com>
[ Upstream commit e03c3bba351f99ad932e8f06baa9da1afc418e02 ]
xfrm_migrate cannot handle address family change of an xfrm_state.
The symptons are the xfrm_state will be migrated to a wrong address,
and sending as well as receiving packets wil be broken.
This commit fixes it by breaking the original xfrm_state_clone
method into two steps so as to update the props.family before
running xfrm_init_state. As the result, xfrm_state's inner mode,
outer mode, type and IP header length in xfrm_state_migrate can
be updated with the new address family.
Tested with additions to Android's kernel unit test suite:
https://android-review.googlesource.com/c/kernel/tests/+/1885354
Signed-off-by: Yan Yan <evitayan@google.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/xfrm/xfrm_state.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
index 291236d7676f..f7bfa1916968 100644
--- a/net/xfrm/xfrm_state.c
+++ b/net/xfrm/xfrm_state.c
@@ -1578,9 +1578,6 @@ static struct xfrm_state *xfrm_state_clone(struct xfrm_state *orig,
memcpy(&x->mark, &orig->mark, sizeof(x->mark));
memcpy(&x->props.smark, &orig->props.smark, sizeof(x->props.smark));
- if (xfrm_init_state(x) < 0)
- goto error;
-
x->props.flags = orig->props.flags;
x->props.extra_flags = orig->props.extra_flags;
@@ -1667,6 +1664,11 @@ struct xfrm_state *xfrm_state_migrate(struct xfrm_state *x,
if (!xc)
return NULL;
+ xc->props.family = m->new_family;
+
+ if (xfrm_init_state(xc) < 0)
+ goto error;
+
memcpy(&xc->id.daddr, &m->new_daddr, sizeof(xc->id.daddr));
memcpy(&xc->props.saddr, &m->new_saddr, sizeof(xc->props.saddr));
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH AUTOSEL 5.16 11/27] mac80211: refuse aggregations sessions before authorized
[not found] <20220309161711.135679-1-sashal@kernel.org>
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 03/27] xfrm: Check if_id in xfrm_migrate Sasha Levin
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 04/27] xfrm: Fix xfrm migrate issues when address family changes Sasha Levin
@ 2022-03-09 16:16 ` Sasha Levin
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 14/27] Bluetooth: hci_core: Fix leaking sent_cmd skb Sasha Levin
` (8 subsequent siblings)
11 siblings, 0 replies; 16+ messages in thread
From: Sasha Levin @ 2022-03-09 16:16 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Johannes Berg, Sasha Levin, johannes, davem, kuba, linux-wireless,
netdev
From: Johannes Berg <johannes.berg@intel.com>
[ Upstream commit a6bce78262f5dd4b50510f0aa47f3995f7b185f3 ]
If an MFP station isn't authorized, the receiver will (or
at least should) drop the action frame since it's a robust
management frame, but if we're not authorized we haven't
installed keys yet. Refuse attempts to start a session as
they'd just time out.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Link: https://lore.kernel.org/r/20220203201528.ff4d5679dce9.I34bb1f2bc341e161af2d6faf74f91b332ba11285@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/mac80211/agg-tx.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c
index 74a878f213d3..1deb3d874a4b 100644
--- a/net/mac80211/agg-tx.c
+++ b/net/mac80211/agg-tx.c
@@ -9,7 +9,7 @@
* Copyright 2007, Michael Wu <flamingice@sourmilk.net>
* Copyright 2007-2010, Intel Corporation
* Copyright(c) 2015-2017 Intel Deutschland GmbH
- * Copyright (C) 2018 - 2021 Intel Corporation
+ * Copyright (C) 2018 - 2022 Intel Corporation
*/
#include <linux/ieee80211.h>
@@ -626,6 +626,14 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid,
return -EINVAL;
}
+ if (test_sta_flag(sta, WLAN_STA_MFP) &&
+ !test_sta_flag(sta, WLAN_STA_AUTHORIZED)) {
+ ht_dbg(sdata,
+ "MFP STA not authorized - deny BA session request %pM tid %d\n",
+ sta->sta.addr, tid);
+ return -EINVAL;
+ }
+
/*
* 802.11n-2009 11.5.1.1: If the initiating STA is an HT STA, is a
* member of an IBSS, and has no other existing Block Ack agreement
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH AUTOSEL 5.16 14/27] Bluetooth: hci_core: Fix leaking sent_cmd skb
[not found] <20220309161711.135679-1-sashal@kernel.org>
` (2 preceding siblings ...)
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 11/27] mac80211: refuse aggregations sessions before authorized Sasha Levin
@ 2022-03-09 16:16 ` Sasha Levin
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 15/27] can: rcar_canfd: rcar_canfd_channel_probe(): register the CAN device when fully ready Sasha Levin
` (7 subsequent siblings)
11 siblings, 0 replies; 16+ messages in thread
From: Sasha Levin @ 2022-03-09 16:16 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Luiz Augusto von Dentz, Marcel Holtmann, Sasha Levin,
johan.hedberg, luiz.dentz, davem, kuba, linux-bluetooth, netdev
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
[ Upstream commit dd3b1dc3dd050f1f47cd13e300732852414270f8 ]
sent_cmd memory is not freed before freeing hci_dev causing it to leak
it contents.
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/bluetooth/hci_core.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 6c00ce302f09..1c8fb27b155a 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -3969,6 +3969,7 @@ void hci_release_dev(struct hci_dev *hdev)
hci_dev_unlock(hdev);
ida_simple_remove(&hci_index_ida, hdev->id);
+ kfree_skb(hdev->sent_cmd);
kfree(hdev);
}
EXPORT_SYMBOL(hci_release_dev);
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH AUTOSEL 5.16 15/27] can: rcar_canfd: rcar_canfd_channel_probe(): register the CAN device when fully ready
[not found] <20220309161711.135679-1-sashal@kernel.org>
` (3 preceding siblings ...)
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 14/27] Bluetooth: hci_core: Fix leaking sent_cmd skb Sasha Levin
@ 2022-03-09 16:16 ` Sasha Levin
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 16/27] net: sparx5: Add #include to remove warning Sasha Levin
` (6 subsequent siblings)
11 siblings, 0 replies; 16+ messages in thread
From: Sasha Levin @ 2022-03-09 16:16 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Lad Prabhakar, Pavel Machek, Ulrich Hecht, Marc Kleine-Budde,
Sasha Levin, wg, davem, kuba, stefan.maetje, mailhol.vincent,
linux-can, netdev
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
[ Upstream commit c5048a7b2c23ab589f3476a783bd586b663eda5b ]
Register the CAN device only when all the necessary initialization is
completed. This patch makes sure all the data structures and locks are
initialized before registering the CAN device.
Link: https://lore.kernel.org/all/20220221225935.12300-1-prabhakar.mahadev-lad.rj@bp.renesas.com
Reported-by: Pavel Machek <pavel@denx.de>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Pavel Machek <pavel@denx.de>
Reviewed-by: Ulrich Hecht <uli+renesas@fpond.eu>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/can/rcar/rcar_canfd.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c
index 137eea4c7bad..4871428859fd 100644
--- a/drivers/net/can/rcar/rcar_canfd.c
+++ b/drivers/net/can/rcar/rcar_canfd.c
@@ -1716,15 +1716,15 @@ static int rcar_canfd_channel_probe(struct rcar_canfd_global *gpriv, u32 ch,
netif_napi_add(ndev, &priv->napi, rcar_canfd_rx_poll,
RCANFD_NAPI_WEIGHT);
+ spin_lock_init(&priv->tx_lock);
+ devm_can_led_init(ndev);
+ gpriv->ch[priv->channel] = priv;
err = register_candev(ndev);
if (err) {
dev_err(&pdev->dev,
"register_candev() failed, error %d\n", err);
goto fail_candev;
}
- spin_lock_init(&priv->tx_lock);
- devm_can_led_init(ndev);
- gpriv->ch[priv->channel] = priv;
dev_info(&pdev->dev, "device registered (channel %u)\n", priv->channel);
return 0;
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH AUTOSEL 5.16 16/27] net: sparx5: Add #include to remove warning
[not found] <20220309161711.135679-1-sashal@kernel.org>
` (4 preceding siblings ...)
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 15/27] can: rcar_canfd: rcar_canfd_channel_probe(): register the CAN device when fully ready Sasha Levin
@ 2022-03-09 16:16 ` Sasha Levin
2022-03-09 16:49 ` Jakub Kicinski
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 17/27] atm: firestream: check the return value of ioremap() in fs_init() Sasha Levin
` (5 subsequent siblings)
11 siblings, 1 reply; 16+ messages in thread
From: Sasha Levin @ 2022-03-09 16:16 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Casper Andersson, Joacim Zetterling, David S . Miller,
Sasha Levin, kuba, lars.povlsen, Steen.Hegelund, UNGLinuxDriver,
bjarni.jonasson, netdev, linux-arm-kernel
From: Casper Andersson <casper.casan@gmail.com>
[ Upstream commit 90d4025285748448809701a44cf466a3f5443eaa ]
main.h uses NUM_TARGETS from main_regs.h, but
the missing include never causes any errors
because everywhere main.h is (currently)
included, main_regs.h is included before.
But since it is dependent on main_regs.h
it should always be included.
Signed-off-by: Casper Andersson <casper.casan@gmail.com>
Reviewed-by: Joacim Zetterling <joacim.zetterling@westermo.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/microchip/sparx5/sparx5_main.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/ethernet/microchip/sparx5/sparx5_main.h b/drivers/net/ethernet/microchip/sparx5/sparx5_main.h
index a1acc9b461f2..d40e18ce3293 100644
--- a/drivers/net/ethernet/microchip/sparx5/sparx5_main.h
+++ b/drivers/net/ethernet/microchip/sparx5/sparx5_main.h
@@ -16,6 +16,8 @@
#include <linux/phylink.h>
#include <linux/hrtimer.h>
+#include "sparx5_main_regs.h"
+
/* Target chip type */
enum spx5_target_chiptype {
SPX5_TARGET_CT_7546 = 0x7546, /* SparX-5-64 Enterprise */
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH AUTOSEL 5.16 17/27] atm: firestream: check the return value of ioremap() in fs_init()
[not found] <20220309161711.135679-1-sashal@kernel.org>
` (5 preceding siblings ...)
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 16/27] net: sparx5: Add #include to remove warning Sasha Levin
@ 2022-03-09 16:16 ` Sasha Levin
2022-03-09 16:48 ` Jakub Kicinski
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 21/27] iwlwifi: don't advertise TWT support Sasha Levin
` (4 subsequent siblings)
11 siblings, 1 reply; 16+ messages in thread
From: Sasha Levin @ 2022-03-09 16:16 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Jia-Ju Bai, TOTE Robot, David S . Miller, Sasha Levin, 3chas3,
linux-atm-general, netdev
From: Jia-Ju Bai <baijiaju1990@gmail.com>
[ Upstream commit d4e26aaea7f82ba884dcb4acfe689406bc092dc3 ]
The function ioremap() in fs_init() can fail, so its return value should
be checked.
Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/atm/firestream.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/atm/firestream.c b/drivers/atm/firestream.c
index 3bc3c314a467..4f67404fe64c 100644
--- a/drivers/atm/firestream.c
+++ b/drivers/atm/firestream.c
@@ -1676,6 +1676,8 @@ static int fs_init(struct fs_dev *dev)
dev->hw_base = pci_resource_start(pci_dev, 0);
dev->base = ioremap(dev->hw_base, 0x1000);
+ if (!dev->base)
+ return 1;
reset_chip (dev);
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH AUTOSEL 5.16 21/27] iwlwifi: don't advertise TWT support
[not found] <20220309161711.135679-1-sashal@kernel.org>
` (6 preceding siblings ...)
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 17/27] atm: firestream: check the return value of ioremap() in fs_init() Sasha Levin
@ 2022-03-09 16:16 ` Sasha Levin
2022-03-09 16:17 ` [PATCH AUTOSEL 5.16 23/27] nl80211: Update bss channel on channel switch for P2P_CLIENT Sasha Levin
` (3 subsequent siblings)
11 siblings, 0 replies; 16+ messages in thread
From: Sasha Levin @ 2022-03-09 16:16 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Golan Ben Ami, Luca Coelho, Johannes Berg, Sasha Levin, kvalo,
davem, kuba, mordechay.goodstein, ilan.peer,
miriam.rachel.korenblit, linux-wireless, netdev
From: Golan Ben Ami <golan.ben.ami@intel.com>
[ Upstream commit 1db5fcbba2631277b78d7f8aff99c9607d29f6d8 ]
Some APs misbehave when TWT is used and cause our firmware to crash.
We don't know a reasonable way to detect and work around this problem
in the FW yet. To prevent these crashes, disable TWT in the driver by
stopping to advertise TWT support.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=215523
Signed-off-by: Golan Ben Ami <golan.ben.ami@intel.com>
[reworded the commit message]
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/20220301072926.153969-1-luca@coelho.fi
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c | 3 +--
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 1 -
2 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
index f470f9aea50f..c97798f6290a 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
@@ -552,8 +552,7 @@ static const struct ieee80211_sband_iftype_data iwl_he_capa[] = {
.has_he = true,
.he_cap_elem = {
.mac_cap_info[0] =
- IEEE80211_HE_MAC_CAP0_HTC_HE |
- IEEE80211_HE_MAC_CAP0_TWT_REQ,
+ IEEE80211_HE_MAC_CAP0_HTC_HE,
.mac_cap_info[1] =
IEEE80211_HE_MAC_CAP1_TF_MAC_PAD_DUR_16US |
IEEE80211_HE_MAC_CAP1_MULTI_TID_AGG_RX_QOS_8,
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
index cde3d2ce0b85..a65024fc96dd 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
@@ -223,7 +223,6 @@ static const u8 he_if_types_ext_capa_sta[] = {
[0] = WLAN_EXT_CAPA1_EXT_CHANNEL_SWITCHING,
[2] = WLAN_EXT_CAPA3_MULTI_BSSID_SUPPORT,
[7] = WLAN_EXT_CAPA8_OPMODE_NOTIF,
- [9] = WLAN_EXT_CAPA10_TWT_REQUESTER_SUPPORT,
};
static const struct wiphy_iftype_ext_capab he_iftypes_ext_capa[] = {
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH AUTOSEL 5.16 23/27] nl80211: Update bss channel on channel switch for P2P_CLIENT
[not found] <20220309161711.135679-1-sashal@kernel.org>
` (7 preceding siblings ...)
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 21/27] iwlwifi: don't advertise TWT support Sasha Levin
@ 2022-03-09 16:17 ` Sasha Levin
2022-03-09 16:17 ` [PATCH AUTOSEL 5.16 24/27] tcp: make tcp_read_sock() more robust Sasha Levin
` (2 subsequent siblings)
11 siblings, 0 replies; 16+ messages in thread
From: Sasha Levin @ 2022-03-09 16:17 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Sreeramya Soratkal, Johannes Berg, Sasha Levin, johannes, davem,
kuba, linux-wireless, netdev
From: Sreeramya Soratkal <quic_ssramya@quicinc.com>
[ Upstream commit e50b88c4f076242358b66ddb67482b96947438f2 ]
The wdev channel information is updated post channel switch only for
the station mode and not for the other modes. Due to this, the P2P client
still points to the old value though it moved to the new channel
when the channel change is induced from the P2P GO.
Update the bss channel after CSA channel switch completion for P2P client
interface as well.
Signed-off-by: Sreeramya Soratkal <quic_ssramya@quicinc.com>
Link: https://lore.kernel.org/r/1646114600-31479-1-git-send-email-quic_ssramya@quicinc.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/wireless/nl80211.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index f73251828782..9b4bb1460cef 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -17757,7 +17757,8 @@ void cfg80211_ch_switch_notify(struct net_device *dev,
wdev->chandef = *chandef;
wdev->preset_chandef = *chandef;
- if (wdev->iftype == NL80211_IFTYPE_STATION &&
+ if ((wdev->iftype == NL80211_IFTYPE_STATION ||
+ wdev->iftype == NL80211_IFTYPE_P2P_CLIENT) &&
!WARN_ON(!wdev->current_bss))
cfg80211_update_assoc_bss_entry(wdev, chandef->chan);
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH AUTOSEL 5.16 24/27] tcp: make tcp_read_sock() more robust
[not found] <20220309161711.135679-1-sashal@kernel.org>
` (8 preceding siblings ...)
2022-03-09 16:17 ` [PATCH AUTOSEL 5.16 23/27] nl80211: Update bss channel on channel switch for P2P_CLIENT Sasha Levin
@ 2022-03-09 16:17 ` Sasha Levin
2022-03-09 16:17 ` [PATCH AUTOSEL 5.16 25/27] sfc: extend the locking on mcdi->seqno Sasha Levin
2022-03-09 16:17 ` [PATCH AUTOSEL 5.16 26/27] bnx2: Fix an error message Sasha Levin
11 siblings, 0 replies; 16+ messages in thread
From: Sasha Levin @ 2022-03-09 16:17 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Eric Dumazet, John Fastabend, Jakub Sitnicki, Daniel Borkmann,
Jakub Kicinski, Sasha Levin, davem, yoshfuji, dsahern, netdev
From: Eric Dumazet <edumazet@google.com>
[ Upstream commit e3d5ea2c011ecb16fb94c56a659364e6b30fac94 ]
If recv_actor() returns an incorrect value, tcp_read_sock()
might loop forever.
Instead, issue a one time warning and make sure to make progress.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Acked-by: Jakub Sitnicki <jakub@cloudflare.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/r/20220302161723.3910001-2-eric.dumazet@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/ipv4/tcp.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 28abb0bb1c51..38f936785179 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -1653,11 +1653,13 @@ int tcp_read_sock(struct sock *sk, read_descriptor_t *desc,
if (!copied)
copied = used;
break;
- } else if (used <= len) {
- seq += used;
- copied += used;
- offset += used;
}
+ if (WARN_ON_ONCE(used > len))
+ used = len;
+ seq += used;
+ copied += used;
+ offset += used;
+
/* If recv_actor drops the lock (e.g. TCP splice
* receive) the skb pointer might be invalid when
* getting here: tcp_collapse might have deleted it
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH AUTOSEL 5.16 25/27] sfc: extend the locking on mcdi->seqno
[not found] <20220309161711.135679-1-sashal@kernel.org>
` (9 preceding siblings ...)
2022-03-09 16:17 ` [PATCH AUTOSEL 5.16 24/27] tcp: make tcp_read_sock() more robust Sasha Levin
@ 2022-03-09 16:17 ` Sasha Levin
2022-03-09 16:17 ` [PATCH AUTOSEL 5.16 26/27] bnx2: Fix an error message Sasha Levin
11 siblings, 0 replies; 16+ messages in thread
From: Sasha Levin @ 2022-03-09 16:17 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Niels Dossche, Martin Habets, David S . Miller, Sasha Levin,
ecree.xilinx, kuba, netdev
From: Niels Dossche <dossche.niels@gmail.com>
[ Upstream commit f1fb205efb0ccca55626fd4ef38570dd16b44719 ]
seqno could be read as a stale value outside of the lock. The lock is
already acquired to protect the modification of seqno against a possible
race condition. Place the reading of this value also inside this locking
to protect it against a possible race condition.
Signed-off-by: Niels Dossche <dossche.niels@gmail.com>
Acked-by: Martin Habets <habetsm.xilinx@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/sfc/mcdi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/sfc/mcdi.c b/drivers/net/ethernet/sfc/mcdi.c
index be6bfd6b7ec7..50baf62b2cbc 100644
--- a/drivers/net/ethernet/sfc/mcdi.c
+++ b/drivers/net/ethernet/sfc/mcdi.c
@@ -163,9 +163,9 @@ static void efx_mcdi_send_request(struct efx_nic *efx, unsigned cmd,
/* Serialise with efx_mcdi_ev_cpl() and efx_mcdi_ev_death() */
spin_lock_bh(&mcdi->iface_lock);
++mcdi->seqno;
+ seqno = mcdi->seqno & SEQ_MASK;
spin_unlock_bh(&mcdi->iface_lock);
- seqno = mcdi->seqno & SEQ_MASK;
xflags = 0;
if (mcdi->mode == MCDI_MODE_EVENTS)
xflags |= MCDI_HEADER_XFLAGS_EVREQ;
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH AUTOSEL 5.16 26/27] bnx2: Fix an error message
[not found] <20220309161711.135679-1-sashal@kernel.org>
` (10 preceding siblings ...)
2022-03-09 16:17 ` [PATCH AUTOSEL 5.16 25/27] sfc: extend the locking on mcdi->seqno Sasha Levin
@ 2022-03-09 16:17 ` Sasha Levin
11 siblings, 0 replies; 16+ messages in thread
From: Sasha Levin @ 2022-03-09 16:17 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Christophe JAILLET, David S . Miller, Sasha Levin, rmody,
GR-Linux-NIC-Dev, kuba, netdev
From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
[ Upstream commit 8ccffe9ac3239e549beaa0a9d5e1a1eac94e866c ]
Fix an error message and report the correct failing function.
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/broadcom/bnx2.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
index babc955ba64e..b47a8237c6dd 100644
--- a/drivers/net/ethernet/broadcom/bnx2.c
+++ b/drivers/net/ethernet/broadcom/bnx2.c
@@ -8212,7 +8212,7 @@ bnx2_init_board(struct pci_dev *pdev, struct net_device *dev)
rc = dma_set_coherent_mask(&pdev->dev, persist_dma_mask);
if (rc) {
dev_err(&pdev->dev,
- "pci_set_consistent_dma_mask failed, aborting\n");
+ "dma_set_coherent_mask failed, aborting\n");
goto err_out_unmap;
}
} else if ((rc = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) != 0) {
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH AUTOSEL 5.16 17/27] atm: firestream: check the return value of ioremap() in fs_init()
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 17/27] atm: firestream: check the return value of ioremap() in fs_init() Sasha Levin
@ 2022-03-09 16:48 ` Jakub Kicinski
2022-03-16 14:49 ` Sasha Levin
0 siblings, 1 reply; 16+ messages in thread
From: Jakub Kicinski @ 2022-03-09 16:48 UTC (permalink / raw)
To: Sasha Levin
Cc: linux-kernel, stable, Jia-Ju Bai, TOTE Robot, David S . Miller,
3chas3, linux-atm-general, netdev
On Wed, 9 Mar 2022 11:16:54 -0500 Sasha Levin wrote:
> From: Jia-Ju Bai <baijiaju1990@gmail.com>
>
> [ Upstream commit d4e26aaea7f82ba884dcb4acfe689406bc092dc3 ]
>
> The function ioremap() in fs_init() can fail, so its return value should
> be checked.
I'd hold off on backporting the bot fixes. They break more than they
fix.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH AUTOSEL 5.16 16/27] net: sparx5: Add #include to remove warning
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 16/27] net: sparx5: Add #include to remove warning Sasha Levin
@ 2022-03-09 16:49 ` Jakub Kicinski
2022-03-16 14:45 ` Sasha Levin
0 siblings, 1 reply; 16+ messages in thread
From: Jakub Kicinski @ 2022-03-09 16:49 UTC (permalink / raw)
To: Sasha Levin
Cc: linux-kernel, stable, Casper Andersson, Joacim Zetterling,
David S . Miller, lars.povlsen, Steen.Hegelund, UNGLinuxDriver,
bjarni.jonasson, netdev, linux-arm-kernel
On Wed, 9 Mar 2022 11:16:53 -0500 Sasha Levin wrote:
> main.h uses NUM_TARGETS from main_regs.h, but
> the missing include never causes any errors
> because everywhere main.h is (currently)
> included, main_regs.h is included before.
> But since it is dependent on main_regs.h
> it should always be included.
This is not fixing anything in the current trees.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH AUTOSEL 5.16 16/27] net: sparx5: Add #include to remove warning
2022-03-09 16:49 ` Jakub Kicinski
@ 2022-03-16 14:45 ` Sasha Levin
0 siblings, 0 replies; 16+ messages in thread
From: Sasha Levin @ 2022-03-16 14:45 UTC (permalink / raw)
To: Jakub Kicinski
Cc: linux-kernel, stable, Casper Andersson, Joacim Zetterling,
David S . Miller, lars.povlsen, Steen.Hegelund, UNGLinuxDriver,
bjarni.jonasson, netdev, linux-arm-kernel
On Wed, Mar 09, 2022 at 08:49:11AM -0800, Jakub Kicinski wrote:
>On Wed, 9 Mar 2022 11:16:53 -0500 Sasha Levin wrote:
>> main.h uses NUM_TARGETS from main_regs.h, but
>> the missing include never causes any errors
>> because everywhere main.h is (currently)
>> included, main_regs.h is included before.
>> But since it is dependent on main_regs.h
>> it should always be included.
>
>This is not fixing anything in the current trees.
I'll drop it, thanks!
--
Thanks,
Sasha
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH AUTOSEL 5.16 17/27] atm: firestream: check the return value of ioremap() in fs_init()
2022-03-09 16:48 ` Jakub Kicinski
@ 2022-03-16 14:49 ` Sasha Levin
0 siblings, 0 replies; 16+ messages in thread
From: Sasha Levin @ 2022-03-16 14:49 UTC (permalink / raw)
To: Jakub Kicinski
Cc: linux-kernel, stable, Jia-Ju Bai, TOTE Robot, David S . Miller,
3chas3, linux-atm-general, netdev
On Wed, Mar 09, 2022 at 08:48:56AM -0800, Jakub Kicinski wrote:
>On Wed, 9 Mar 2022 11:16:54 -0500 Sasha Levin wrote:
>> From: Jia-Ju Bai <baijiaju1990@gmail.com>
>>
>> [ Upstream commit d4e26aaea7f82ba884dcb4acfe689406bc092dc3 ]
>>
>> The function ioremap() in fs_init() can fail, so its return value should
>> be checked.
>
>I'd hold off on backporting the bot fixes. They break more than they
>fix.
That's why we give AUTOSEL an extra week to soak :)
--
Thanks,
Sasha
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2022-03-16 14:49 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20220309161711.135679-1-sashal@kernel.org>
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 03/27] xfrm: Check if_id in xfrm_migrate Sasha Levin
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 04/27] xfrm: Fix xfrm migrate issues when address family changes Sasha Levin
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 11/27] mac80211: refuse aggregations sessions before authorized Sasha Levin
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 14/27] Bluetooth: hci_core: Fix leaking sent_cmd skb Sasha Levin
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 15/27] can: rcar_canfd: rcar_canfd_channel_probe(): register the CAN device when fully ready Sasha Levin
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 16/27] net: sparx5: Add #include to remove warning Sasha Levin
2022-03-09 16:49 ` Jakub Kicinski
2022-03-16 14:45 ` Sasha Levin
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 17/27] atm: firestream: check the return value of ioremap() in fs_init() Sasha Levin
2022-03-09 16:48 ` Jakub Kicinski
2022-03-16 14:49 ` Sasha Levin
2022-03-09 16:16 ` [PATCH AUTOSEL 5.16 21/27] iwlwifi: don't advertise TWT support Sasha Levin
2022-03-09 16:17 ` [PATCH AUTOSEL 5.16 23/27] nl80211: Update bss channel on channel switch for P2P_CLIENT Sasha Levin
2022-03-09 16:17 ` [PATCH AUTOSEL 5.16 24/27] tcp: make tcp_read_sock() more robust Sasha Levin
2022-03-09 16:17 ` [PATCH AUTOSEL 5.16 25/27] sfc: extend the locking on mcdi->seqno Sasha Levin
2022-03-09 16:17 ` [PATCH AUTOSEL 5.16 26/27] bnx2: Fix an error message Sasha Levin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).