2020-09-25 13:01:31

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 5.8 00/56] 5.8.12-rc1 review

This is the start of the stable review cycle for the 5.8.12 release.
There are 56 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.

Responses should be made by Sun, 27 Sep 2020 12:47:02 +0000.
Anything received after that time might be too late.

The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.8.12-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.8.y
and the diffstat can be found below.

thanks,

greg k-h

-------------
Pseudo-Shortlog of commits:

Greg Kroah-Hartman <[email protected]>
Linux 5.8.12-rc1

Maor Dickman <[email protected]>
net/mlx5e: Fix endianness when calculating pedit mask first bit

Maxim Mikityanskiy <[email protected]>
net/mlx5e: Use synchronize_rcu to sync with NAPI

Maxim Mikityanskiy <[email protected]>
net/mlx5e: Use RCU to protect rq->xdp_prog

Taehee Yoo <[email protected]>
Revert "netns: don't disable BHs when locking "nsid_lock""

Parshuram Thombare <[email protected]>
net: macb: fix for pause frame receive enable bit

Matthias Schiffer <[email protected]>
net: dsa: microchip: ksz8795: really set the correct number of ports

Vladimir Oltean <[email protected]>
net: dsa: link interfaces with the DSA master to get rid of lockdep warnings

Dexuan Cui <[email protected]>
hv_netvsc: Fix hibernation for mlx5 VF driver

Luo bin <[email protected]>
hinic: fix rewaking txq after netif_tx_disable

Jianbo Liu <[email protected]>
net/mlx5e: Fix memory leak of tunnel info when rule under multipath not ready

Vadym Kochan <[email protected]>
net: ipa: fix u32_replace_bits by u32p_xxx version

Jason A. Donenfeld <[email protected]>
wireguard: peerlookup: take lock before checking hash in replace operation

Jason A. Donenfeld <[email protected]>
wireguard: noise: take lock when removing handshake entry from table

Grygorii Strashko <[email protected]>
net: ethernet: ti: cpsw_new: fix suspend/resume

Eric Dumazet <[email protected]>
net: add __must_check to skb_put_padto()

Eric Dumazet <[email protected]>
net: qrtr: check skb_put_padto() return value

Florian Fainelli <[email protected]>
net: phy: Do not warn in phy_stop() on PHY_DOWN

Florian Fainelli <[email protected]>
net: phy: Avoid NPD upon phy_detach() when driver is unbound

Hauke Mehrtens <[email protected]>
net: lantiq: Disable IRQs only if NAPI gets scheduled

Hauke Mehrtens <[email protected]>
net: lantiq: Use napi_complete_done()

Hauke Mehrtens <[email protected]>
net: lantiq: use netif_tx_napi_add() for TX NAPI

Hauke Mehrtens <[email protected]>
net: lantiq: Wake TX queue again

Michael Chan <[email protected]>
bnxt_en: Protect bnxt_set_eee() and bnxt_set_pauseparam() with mutex.

Edwin Peer <[email protected]>
bnxt_en: return proper error codes in bnxt_show_temp

Vasundhara Volam <[email protected]>
bnxt_en: Use memcpy to copy VPD field info.

Tariq Toukan <[email protected]>
net/mlx5e: TLS, Do not expose FPGA TLS counter if not supported

Maor Dickman <[email protected]>
net/mlx5e: Enable adding peer miss rules only if merged eswitch is supported

Xin Long <[email protected]>
tipc: use skb_unshare() instead in tipc_buf_append()

Tetsuo Handa <[email protected]>
tipc: fix shutdown() of connection oriented socket

Peilin Ye <[email protected]>
tipc: Fix memory leak in tipc_group_create_member()

Vinicius Costa Gomes <[email protected]>
taprio: Fix allowing too small intervals

Jakub Kicinski <[email protected]>
nfp: use correct define to return NONE fec

Henry Ptasinski <[email protected]>
net: sctp: Fix IPv6 ancestor_size calc in sctp_copy_descendant

Yunsheng Lin <[email protected]>
net: sch_generic: aviod concurrent reset and enqueue op for lockless qdisc

Xin Long <[email protected]>
net: sched: initialize with 0 before setting erspan md->u

Yoshihiro Shimoda <[email protected]>
net: phy: call phy_disable_interrupts() in phy_attach_direct() instead

Maor Gottlieb <[email protected]>
net/mlx5: Fix FTE cleanup

Necip Fazil Yildiran <[email protected]>
net: ipv6: fix kconfig dependency warning for IPV6_SEG6_HMAC

Ido Schimmel <[email protected]>
net: Fix bridge enslavement failure

Linus Walleij <[email protected]>
net: dsa: rtl8366: Properly clear member config

Petr Machata <[email protected]>
net: DCB: Validate DCB_ATTR_DCB_BUFFER argument

Vladimir Oltean <[email protected]>
net: bridge: br_vlan_get_pvid_rcu() should dereference the VLAN group under RCU

Eric Dumazet <[email protected]>
ipv6: avoid lockdep issue in fib6_del()

David Ahern <[email protected]>
ipv4: Update exception handling for multipath routes via same device

David Ahern <[email protected]>
ipv4: Initialize flowi4_multipath_hash in data path

Wei Wang <[email protected]>
ip: fix tos reflection in ack and reset packets

Luo bin <[email protected]>
hinic: bump up the timeout of SET_FUNC_STATE cmd

Dan Carpenter <[email protected]>
hdlc_ppp: add range checks in ppp_cp_parse_cr()

Mark Gray <[email protected]>
geneve: add transport ports in route lookup for geneve

Ganji Aravind <[email protected]>
cxgb4: Fix offset when clearing filter byte counters

Raju Rangoju <[email protected]>
cxgb4: fix memory leak during module unload

Vasundhara Volam <[email protected]>
bnxt_en: Fix NULL ptr dereference crash in bnxt_fw_reset_task()

Vasundhara Volam <[email protected]>
bnxt_en: Avoid sending firmware messages when AER error is detected.

Cong Wang <[email protected]>
act_ife: load meta modules before tcf_idr_check_alloc()

Jakub Kicinski <[email protected]>
ibmvnic: add missing parenthesis in do_reset()

Mingming Cao <[email protected]>
ibmvnic fix NULL tx_pools and rx_tools issue at do_reset


-------------

Diffstat:

Makefile | 4 +-
drivers/net/dsa/microchip/ksz8795.c | 2 +-
drivers/net/dsa/rtl8366.c | 20 ++++---
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 40 ++++++++-----
drivers/net/ethernet/broadcom/bnxt/bnxt.h | 4 ++
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 31 +++++++----
drivers/net/ethernet/cadence/macb_main.c | 3 +-
drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c | 9 ++-
drivers/net/ethernet/chelsio/cxgb4/cxgb4_mps.c | 2 +-
drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c | 16 ++++--
drivers/net/ethernet/huawei/hinic/hinic_main.c | 24 ++++++++
drivers/net/ethernet/huawei/hinic/hinic_tx.c | 18 +-----
drivers/net/ethernet/ibm/ibmvnic.c | 21 ++++++-
drivers/net/ethernet/lantiq_xrx200.c | 21 ++++---
drivers/net/ethernet/mellanox/mlx5/core/en.h | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c | 2 +-
.../net/ethernet/mellanox/mlx5/core/en/xsk/rx.c | 14 +----
.../net/ethernet/mellanox/mlx5/core/en/xsk/setup.c | 3 +-
.../mellanox/mlx5/core/en_accel/tls_stats.c | 12 ++--
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 65 ++++++++++------------
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 12 +---
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 39 +++++++------
drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c | 17 ++++--
.../ethernet/mellanox/mlx5/core/eswitch_offloads.c | 52 +++++++++--------
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 8 +--
.../net/ethernet/netronome/nfp/nfp_net_ethtool.c | 4 +-
drivers/net/ethernet/ti/cpsw_new.c | 53 ++++++++++++++++++
drivers/net/geneve.c | 37 ++++++++----
drivers/net/hyperv/netvsc_drv.c | 16 ++++--
drivers/net/ipa/ipa_table.c | 4 +-
drivers/net/phy/phy.c | 2 +-
drivers/net/phy/phy_device.c | 11 ++--
drivers/net/wan/hdlc_ppp.c | 16 ++++--
drivers/net/wireguard/noise.c | 5 +-
drivers/net/wireguard/peerlookup.c | 11 +++-
include/linux/skbuff.h | 7 ++-
include/net/flow.h | 1 +
include/net/sctp/structs.h | 8 ++-
net/bridge/br_vlan.c | 27 +++++----
net/core/dev.c | 2 +-
net/core/filter.c | 1 +
net/core/net_namespace.c | 22 ++++----
net/dcb/dcbnl.c | 8 +++
net/dsa/slave.c | 18 +++++-
net/ipv4/fib_frontend.c | 1 +
net/ipv4/ip_output.c | 3 +-
net/ipv4/route.c | 14 +++--
net/ipv6/Kconfig | 1 +
net/ipv6/ip6_fib.c | 13 +++--
net/qrtr/qrtr.c | 21 +++----
net/sched/act_ife.c | 44 +++++++++++----
net/sched/cls_flower.c | 1 +
net/sched/sch_generic.c | 48 +++++++++++-----
net/sched/sch_taprio.c | 28 ++++++----
net/sctp/socket.c | 9 +--
net/tipc/group.c | 14 +++--
net/tipc/msg.c | 3 +-
net/tipc/socket.c | 5 +-
58 files changed, 573 insertions(+), 326 deletions(-)



2020-09-25 13:01:40

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 5.8 26/56] taprio: Fix allowing too small intervals

From: Vinicius Costa Gomes <[email protected]>

[ Upstream commit b5b73b26b3ca34574124ed7ae9c5ba8391a7f176 ]

It's possible that the user specifies an interval that couldn't allow
any packet to be transmitted. This also avoids the issue of the
hrtimer handler starving the other threads because it's running too
often.

The solution is to reject interval sizes that according to the current
link speed wouldn't allow any packet to be transmitted.

Reported-by: [email protected]
Fixes: 5a781ccbd19e ("tc: Add support for configuring the taprio scheduler")
Signed-off-by: Vinicius Costa Gomes <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
net/sched/sch_taprio.c | 28 +++++++++++++++++-----------
1 file changed, 17 insertions(+), 11 deletions(-)

--- a/net/sched/sch_taprio.c
+++ b/net/sched/sch_taprio.c
@@ -777,9 +777,11 @@ static const struct nla_policy taprio_po
[TCA_TAPRIO_ATTR_TXTIME_DELAY] = { .type = NLA_U32 },
};

-static int fill_sched_entry(struct nlattr **tb, struct sched_entry *entry,
+static int fill_sched_entry(struct taprio_sched *q, struct nlattr **tb,
+ struct sched_entry *entry,
struct netlink_ext_ack *extack)
{
+ int min_duration = length_to_duration(q, ETH_ZLEN);
u32 interval = 0;

if (tb[TCA_TAPRIO_SCHED_ENTRY_CMD])
@@ -794,7 +796,10 @@ static int fill_sched_entry(struct nlatt
interval = nla_get_u32(
tb[TCA_TAPRIO_SCHED_ENTRY_INTERVAL]);

- if (interval == 0) {
+ /* The interval should allow at least the minimum ethernet
+ * frame to go out.
+ */
+ if (interval < min_duration) {
NL_SET_ERR_MSG(extack, "Invalid interval for schedule entry");
return -EINVAL;
}
@@ -804,8 +809,9 @@ static int fill_sched_entry(struct nlatt
return 0;
}

-static int parse_sched_entry(struct nlattr *n, struct sched_entry *entry,
- int index, struct netlink_ext_ack *extack)
+static int parse_sched_entry(struct taprio_sched *q, struct nlattr *n,
+ struct sched_entry *entry, int index,
+ struct netlink_ext_ack *extack)
{
struct nlattr *tb[TCA_TAPRIO_SCHED_ENTRY_MAX + 1] = { };
int err;
@@ -819,10 +825,10 @@ static int parse_sched_entry(struct nlat

entry->index = index;

- return fill_sched_entry(tb, entry, extack);
+ return fill_sched_entry(q, tb, entry, extack);
}

-static int parse_sched_list(struct nlattr *list,
+static int parse_sched_list(struct taprio_sched *q, struct nlattr *list,
struct sched_gate_list *sched,
struct netlink_ext_ack *extack)
{
@@ -847,7 +853,7 @@ static int parse_sched_list(struct nlatt
return -ENOMEM;
}

- err = parse_sched_entry(n, entry, i, extack);
+ err = parse_sched_entry(q, n, entry, i, extack);
if (err < 0) {
kfree(entry);
return err;
@@ -862,7 +868,7 @@ static int parse_sched_list(struct nlatt
return i;
}

-static int parse_taprio_schedule(struct nlattr **tb,
+static int parse_taprio_schedule(struct taprio_sched *q, struct nlattr **tb,
struct sched_gate_list *new,
struct netlink_ext_ack *extack)
{
@@ -883,8 +889,8 @@ static int parse_taprio_schedule(struct
new->cycle_time = nla_get_s64(tb[TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME]);

if (tb[TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST])
- err = parse_sched_list(
- tb[TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST], new, extack);
+ err = parse_sched_list(q, tb[TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST],
+ new, extack);
if (err < 0)
return err;

@@ -1474,7 +1480,7 @@ static int taprio_change(struct Qdisc *s
goto free_sched;
}

- err = parse_taprio_schedule(tb, new_admin, extack);
+ err = parse_taprio_schedule(q, tb, new_admin, extack);
if (err < 0)
goto free_sched;



2020-09-25 13:01:56

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 5.8 54/56] net/mlx5e: Use RCU to protect rq->xdp_prog

From: Maxim Mikityanskiy <[email protected]>

[ Upstream commit fe45386a208277cae4648106133c08246eecd012 ]

Currently, the RQs are temporarily deactivated while hot-replacing the
XDP program, and napi_synchronize is used to make sure rq->xdp_prog is
not in use. However, napi_synchronize is not ideal: instead of waiting
till the end of a NAPI cycle, it polls and waits until NAPI is not
running, sleeping for 1ms between the periodic checks. Under heavy
workloads, this loop will never end, which may even lead to a kernel
panic if the kernel detects the hangup. Such workloads include XSK TX
and possibly also heavy RX (XSK or normal).

The fix is inspired by commit 326fe02d1ed6 ("net/mlx4_en: protect
ring->xdp_prog with rcu_read_lock"). As mlx5e_xdp_handle is already
protected by rcu_read_lock, and bpf_prog_put uses call_rcu to free the
program, there is no need for additional synchronization if proper RCU
functions are used to access the pointer. This patch converts all
accesses to rq->xdp_prog to use RCU functions.

Fixes: 86994156c736 ("net/mlx5e: XDP fast RX drop bpf programs support")
Fixes: db05815b36cb ("net/mlx5e: Add XSK zero-copy support")
Signed-off-by: Maxim Mikityanskiy <[email protected]>
Reviewed-by: Tariq Toukan <[email protected]>
Signed-off-by: Saeed Mahameed <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/net/ethernet/mellanox/mlx5/core/en.h | 2
drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c | 2
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 53 ++++++++++------------
3 files changed, 27 insertions(+), 30 deletions(-)

--- a/drivers/net/ethernet/mellanox/mlx5/core/en.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h
@@ -604,7 +604,7 @@ struct mlx5e_rq {
struct dim dim; /* Dynamic Interrupt Moderation */

/* XDP */
- struct bpf_prog *xdp_prog;
+ struct bpf_prog __rcu *xdp_prog;
struct mlx5e_xdpsq *xdpsq;
DECLARE_BITMAP(flags, 8);
struct page_pool *page_pool;
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c
@@ -121,7 +121,7 @@ mlx5e_xmit_xdp_buff(struct mlx5e_xdpsq *
bool mlx5e_xdp_handle(struct mlx5e_rq *rq, struct mlx5e_dma_info *di,
u32 *len, struct xdp_buff *xdp)
{
- struct bpf_prog *prog = READ_ONCE(rq->xdp_prog);
+ struct bpf_prog *prog = rcu_dereference(rq->xdp_prog);
u32 act;
int err;

--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -401,7 +401,7 @@ static int mlx5e_alloc_rq(struct mlx5e_c

if (params->xdp_prog)
bpf_prog_inc(params->xdp_prog);
- rq->xdp_prog = params->xdp_prog;
+ RCU_INIT_POINTER(rq->xdp_prog, params->xdp_prog);

rq_xdp_ix = rq->ix;
if (xsk)
@@ -410,7 +410,7 @@ static int mlx5e_alloc_rq(struct mlx5e_c
if (err < 0)
goto err_rq_wq_destroy;

- rq->buff.map_dir = rq->xdp_prog ? DMA_BIDIRECTIONAL : DMA_FROM_DEVICE;
+ rq->buff.map_dir = params->xdp_prog ? DMA_BIDIRECTIONAL : DMA_FROM_DEVICE;
rq->buff.headroom = mlx5e_get_rq_headroom(mdev, params, xsk);
pool_size = 1 << params->log_rq_mtu_frames;

@@ -605,8 +605,8 @@ err_free:
}

err_rq_wq_destroy:
- if (rq->xdp_prog)
- bpf_prog_put(rq->xdp_prog);
+ if (params->xdp_prog)
+ bpf_prog_put(params->xdp_prog);
xdp_rxq_info_unreg(&rq->xdp_rxq);
page_pool_destroy(rq->page_pool);
mlx5_wq_destroy(&rq->wq_ctrl);
@@ -616,10 +616,16 @@ err_rq_wq_destroy:

static void mlx5e_free_rq(struct mlx5e_rq *rq)
{
+ struct mlx5e_channel *c = rq->channel;
+ struct bpf_prog *old_prog = NULL;
int i;

- if (rq->xdp_prog)
- bpf_prog_put(rq->xdp_prog);
+ /* drop_rq has neither channel nor xdp_prog. */
+ if (c)
+ old_prog = rcu_dereference_protected(rq->xdp_prog,
+ lockdep_is_held(&c->priv->state_lock));
+ if (old_prog)
+ bpf_prog_put(old_prog);

switch (rq->wq_type) {
case MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ:
@@ -4423,6 +4429,16 @@ static int mlx5e_xdp_allowed(struct mlx5
return 0;
}

+static void mlx5e_rq_replace_xdp_prog(struct mlx5e_rq *rq, struct bpf_prog *prog)
+{
+ struct bpf_prog *old_prog;
+
+ old_prog = rcu_replace_pointer(rq->xdp_prog, prog,
+ lockdep_is_held(&rq->channel->priv->state_lock));
+ if (old_prog)
+ bpf_prog_put(old_prog);
+}
+
static int mlx5e_xdp_set(struct net_device *netdev, struct bpf_prog *prog)
{
struct mlx5e_priv *priv = netdev_priv(netdev);
@@ -4481,29 +4497,10 @@ static int mlx5e_xdp_set(struct net_devi
*/
for (i = 0; i < priv->channels.num; i++) {
struct mlx5e_channel *c = priv->channels.c[i];
- bool xsk_open = test_bit(MLX5E_CHANNEL_STATE_XSK, c->state);
-
- clear_bit(MLX5E_RQ_STATE_ENABLED, &c->rq.state);
- if (xsk_open)
- clear_bit(MLX5E_RQ_STATE_ENABLED, &c->xskrq.state);
- napi_synchronize(&c->napi);
- /* prevent mlx5e_poll_rx_cq from accessing rq->xdp_prog */
-
- old_prog = xchg(&c->rq.xdp_prog, prog);
- if (old_prog)
- bpf_prog_put(old_prog);
-
- if (xsk_open) {
- old_prog = xchg(&c->xskrq.xdp_prog, prog);
- if (old_prog)
- bpf_prog_put(old_prog);
- }

- set_bit(MLX5E_RQ_STATE_ENABLED, &c->rq.state);
- if (xsk_open)
- set_bit(MLX5E_RQ_STATE_ENABLED, &c->xskrq.state);
- /* napi_schedule in case we have missed anything */
- napi_schedule(&c->napi);
+ mlx5e_rq_replace_xdp_prog(&c->rq, prog);
+ if (test_bit(MLX5E_CHANNEL_STATE_XSK, c->state))
+ mlx5e_rq_replace_xdp_prog(&c->xskrq, prog);
}

unlock:


2020-09-25 13:01:56

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 5.8 55/56] net/mlx5e: Use synchronize_rcu to sync with NAPI

From: Maxim Mikityanskiy <[email protected]>

[ Upstream commit 9c25a22dfb00270372224721fed646965420323a ]

As described in the previous commit, napi_synchronize doesn't quite fit
the purpose when we just need to wait until the currently running NAPI
quits. Its implementation waits until NAPI is not running by polling and
waiting for 1ms in between. In cases where we need to deactivate one
queue (e.g., recovery flows) or where we deactivate them one-by-one
(deactivate channel flow), we may get stuck in napi_synchronize forever
if other queues keep NAPI active, causing a soft lockup. Depending on
kernel configuration (CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC), it may result
in a kernel panic.

To fix the issue, use synchronize_rcu to wait for NAPI to quit, and wrap
the whole NAPI in rcu_read_lock.

Fixes: acc6c5953af1 ("net/mlx5e: Split open/close channels to stages")
Signed-off-by: Maxim Mikityanskiy <[email protected]>
Reviewed-by: Tariq Toukan <[email protected]>
Signed-off-by: Saeed Mahameed <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c | 14 ++------------
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c | 3 +--
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 12 ++++--------
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 12 ++----------
drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c | 17 +++++++++++++----
5 files changed, 22 insertions(+), 36 deletions(-)

--- a/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c
@@ -31,7 +31,6 @@ struct sk_buff *mlx5e_xsk_skb_from_cqe_m
{
struct xdp_buff *xdp = wi->umr.dma_info[page_idx].xsk;
u32 cqe_bcnt32 = cqe_bcnt;
- bool consumed;

/* Check packet size. Note LRO doesn't use linear SKB */
if (unlikely(cqe_bcnt > rq->hw_mtu)) {
@@ -51,10 +50,6 @@ struct sk_buff *mlx5e_xsk_skb_from_cqe_m
xsk_buff_dma_sync_for_cpu(xdp);
prefetch(xdp->data);

- rcu_read_lock();
- consumed = mlx5e_xdp_handle(rq, NULL, &cqe_bcnt32, xdp);
- rcu_read_unlock();
-
/* Possible flows:
* - XDP_REDIRECT to XSKMAP:
* The page is owned by the userspace from now.
@@ -70,7 +65,7 @@ struct sk_buff *mlx5e_xsk_skb_from_cqe_m
* allocated first from the Reuse Ring, so it has enough space.
*/

- if (likely(consumed)) {
+ if (likely(mlx5e_xdp_handle(rq, NULL, &cqe_bcnt32, xdp))) {
if (likely(__test_and_clear_bit(MLX5E_RQ_FLAG_XDP_XMIT, rq->flags)))
__set_bit(page_idx, wi->xdp_xmit_bitmap); /* non-atomic */
return NULL; /* page/packet was consumed by XDP */
@@ -88,7 +83,6 @@ struct sk_buff *mlx5e_xsk_skb_from_cqe_l
u32 cqe_bcnt)
{
struct xdp_buff *xdp = wi->di->xsk;
- bool consumed;

/* wi->offset is not used in this function, because xdp->data and the
* DMA address point directly to the necessary place. Furthermore, the
@@ -107,11 +101,7 @@ struct sk_buff *mlx5e_xsk_skb_from_cqe_l
return NULL;
}

- rcu_read_lock();
- consumed = mlx5e_xdp_handle(rq, NULL, &cqe_bcnt, xdp);
- rcu_read_unlock();
-
- if (likely(consumed))
+ if (likely(mlx5e_xdp_handle(rq, NULL, &cqe_bcnt, xdp)))
return NULL; /* page/packet was consumed by XDP */

/* XDP_PASS: copy the data from the UMEM to a new SKB. The frame reuse
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
@@ -143,8 +143,7 @@ err_free_cparam:
void mlx5e_close_xsk(struct mlx5e_channel *c)
{
clear_bit(MLX5E_CHANNEL_STATE_XSK, c->state);
- napi_synchronize(&c->napi);
- synchronize_rcu(); /* Sync with the XSK wakeup. */
+ synchronize_rcu(); /* Sync with the XSK wakeup and with NAPI. */

mlx5e_close_rq(&c->xskrq);
mlx5e_close_cq(&c->xskrq.cq);
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -911,7 +911,7 @@ void mlx5e_activate_rq(struct mlx5e_rq *
void mlx5e_deactivate_rq(struct mlx5e_rq *rq)
{
clear_bit(MLX5E_RQ_STATE_ENABLED, &rq->state);
- napi_synchronize(&rq->channel->napi); /* prevent mlx5e_post_rx_wqes */
+ synchronize_rcu(); /* Sync with NAPI to prevent mlx5e_post_rx_wqes. */
}

void mlx5e_close_rq(struct mlx5e_rq *rq)
@@ -1356,12 +1356,10 @@ void mlx5e_tx_disable_queue(struct netde

static void mlx5e_deactivate_txqsq(struct mlx5e_txqsq *sq)
{
- struct mlx5e_channel *c = sq->channel;
struct mlx5_wq_cyc *wq = &sq->wq;

clear_bit(MLX5E_SQ_STATE_ENABLED, &sq->state);
- /* prevent netif_tx_wake_queue */
- napi_synchronize(&c->napi);
+ synchronize_rcu(); /* Sync with NAPI to prevent netif_tx_wake_queue. */

mlx5e_tx_disable_queue(sq->txq);

@@ -1436,10 +1434,8 @@ void mlx5e_activate_icosq(struct mlx5e_i

void mlx5e_deactivate_icosq(struct mlx5e_icosq *icosq)
{
- struct mlx5e_channel *c = icosq->channel;
-
clear_bit(MLX5E_SQ_STATE_ENABLED, &icosq->state);
- napi_synchronize(&c->napi);
+ synchronize_rcu(); /* Sync with NAPI. */
}

void mlx5e_close_icosq(struct mlx5e_icosq *sq)
@@ -1517,7 +1513,7 @@ void mlx5e_close_xdpsq(struct mlx5e_xdps
struct mlx5e_channel *c = sq->channel;

clear_bit(MLX5E_SQ_STATE_ENABLED, &sq->state);
- napi_synchronize(&c->napi);
+ synchronize_rcu(); /* Sync with NAPI. */

mlx5e_destroy_sq(c->mdev, sq->sqn);
mlx5e_free_xdpsq_descs(sq);
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
@@ -1072,7 +1072,6 @@ mlx5e_skb_from_cqe_linear(struct mlx5e_r
struct xdp_buff xdp;
struct sk_buff *skb;
void *va, *data;
- bool consumed;
u32 frag_size;

va = page_address(di->page) + wi->offset;
@@ -1084,11 +1083,8 @@ mlx5e_skb_from_cqe_linear(struct mlx5e_r
prefetchw(va); /* xdp_frame data area */
prefetch(data);

- rcu_read_lock();
mlx5e_fill_xdp_buff(rq, va, rx_headroom, cqe_bcnt, &xdp);
- consumed = mlx5e_xdp_handle(rq, di, &cqe_bcnt, &xdp);
- rcu_read_unlock();
- if (consumed)
+ if (mlx5e_xdp_handle(rq, di, &cqe_bcnt, &xdp))
return NULL; /* page/packet was consumed by XDP */

rx_headroom = xdp.data - xdp.data_hard_start;
@@ -1369,7 +1365,6 @@ mlx5e_skb_from_cqe_mpwrq_linear(struct m
struct sk_buff *skb;
void *va, *data;
u32 frag_size;
- bool consumed;

/* Check packet size. Note LRO doesn't use linear SKB */
if (unlikely(cqe_bcnt > rq->hw_mtu)) {
@@ -1386,11 +1381,8 @@ mlx5e_skb_from_cqe_mpwrq_linear(struct m
prefetchw(va); /* xdp_frame data area */
prefetch(data);

- rcu_read_lock();
mlx5e_fill_xdp_buff(rq, va, rx_headroom, cqe_bcnt32, &xdp);
- consumed = mlx5e_xdp_handle(rq, di, &cqe_bcnt32, &xdp);
- rcu_read_unlock();
- if (consumed) {
+ if (mlx5e_xdp_handle(rq, di, &cqe_bcnt32, &xdp)) {
if (__test_and_clear_bit(MLX5E_RQ_FLAG_XDP_XMIT, rq->flags))
__set_bit(page_idx, wi->xdp_xmit_bitmap); /* non-atomic */
return NULL; /* page/packet was consumed by XDP */
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c
@@ -121,13 +121,17 @@ int mlx5e_napi_poll(struct napi_struct *
struct mlx5e_xdpsq *xsksq = &c->xsksq;
struct mlx5e_rq *xskrq = &c->xskrq;
struct mlx5e_rq *rq = &c->rq;
- bool xsk_open = test_bit(MLX5E_CHANNEL_STATE_XSK, c->state);
bool aff_change = false;
bool busy_xsk = false;
bool busy = false;
int work_done = 0;
+ bool xsk_open;
int i;

+ rcu_read_lock();
+
+ xsk_open = test_bit(MLX5E_CHANNEL_STATE_XSK, c->state);
+
ch_stats->poll++;

for (i = 0; i < c->num_tc; i++)
@@ -167,8 +171,10 @@ int mlx5e_napi_poll(struct napi_struct *
busy |= busy_xsk;

if (busy) {
- if (likely(mlx5e_channel_no_affinity_change(c)))
- return budget;
+ if (likely(mlx5e_channel_no_affinity_change(c))) {
+ work_done = budget;
+ goto out;
+ }
ch_stats->aff_change++;
aff_change = true;
if (budget && work_done == budget)
@@ -176,7 +182,7 @@ int mlx5e_napi_poll(struct napi_struct *
}

if (unlikely(!napi_complete_done(napi, work_done)))
- return work_done;
+ goto out;

ch_stats->arm++;

@@ -203,6 +209,9 @@ int mlx5e_napi_poll(struct napi_struct *
ch_stats->force_irq++;
}

+out:
+ rcu_read_unlock();
+
return work_done;
}



2020-09-25 13:01:58

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 5.8 42/56] net: add __must_check to skb_put_padto()

From: Eric Dumazet <[email protected]>

[ Upstream commit 4a009cb04aeca0de60b73f37b102573354214b52 ]

skb_put_padto() and __skb_put_padto() callers
must check return values or risk use-after-free.

Signed-off-by: Eric Dumazet <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
include/linux/skbuff.h | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)

--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -3208,8 +3208,9 @@ static inline int skb_padto(struct sk_bu
* is untouched. Otherwise it is extended. Returns zero on
* success. The skb is freed on error if @free_on_error is true.
*/
-static inline int __skb_put_padto(struct sk_buff *skb, unsigned int len,
- bool free_on_error)
+static inline int __must_check __skb_put_padto(struct sk_buff *skb,
+ unsigned int len,
+ bool free_on_error)
{
unsigned int size = skb->len;

@@ -3232,7 +3233,7 @@ static inline int __skb_put_padto(struct
* is untouched. Otherwise it is extended. Returns zero on
* success. The skb is freed on error.
*/
-static inline int skb_put_padto(struct sk_buff *skb, unsigned int len)
+static inline int __must_check skb_put_padto(struct sk_buff *skb, unsigned int len)
{
return __skb_put_padto(skb, len, true);
}


2020-09-25 13:02:03

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 5.8 46/56] net: ipa: fix u32_replace_bits by u32p_xxx version

From: Vadym Kochan <[email protected]>

[ Upstream commit c047dc1d260f2593035d63747d616c3512f9d6b6 ]

Looks like u32p_replace_bits() should be used instead of
u32_replace_bits() which does not modifies the value but returns the
modified version.

Fixes: 2b9feef2b6c2 ("soc: qcom: ipa: filter and routing tables")
Signed-off-by: Vadym Kochan <[email protected]>
Reviewed-by: Alex Elder <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/net/ipa/ipa_table.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/net/ipa/ipa_table.c
+++ b/drivers/net/ipa/ipa_table.c
@@ -521,7 +521,7 @@ static void ipa_filter_tuple_zero(struct
val = ioread32(endpoint->ipa->reg_virt + offset);

/* Zero all filter-related fields, preserving the rest */
- u32_replace_bits(val, 0, IPA_REG_ENDP_FILTER_HASH_MSK_ALL);
+ u32p_replace_bits(&val, 0, IPA_REG_ENDP_FILTER_HASH_MSK_ALL);

iowrite32(val, endpoint->ipa->reg_virt + offset);
}
@@ -572,7 +572,7 @@ static void ipa_route_tuple_zero(struct
val = ioread32(ipa->reg_virt + offset);

/* Zero all route-related fields, preserving the rest */
- u32_replace_bits(val, 0, IPA_REG_ENDP_ROUTER_HASH_MSK_ALL);
+ u32p_replace_bits(&val, 0, IPA_REG_ENDP_ROUTER_HASH_MSK_ALL);

iowrite32(val, ipa->reg_virt + offset);
}


2020-09-25 13:02:31

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 5.8 06/56] cxgb4: fix memory leak during module unload

From: Raju Rangoju <[email protected]>

[ Upstream commit f4a26a9b311d7ff9db461278faf2869d06496ef8 ]

Fix the memory leak in mps during module unload
path by freeing mps reference entries if the list
adpter->mps_ref is not already empty

Fixes: 28b3870578ef ("cxgb4: Re-work the logic for mps refcounting")
Signed-off-by: Raju Rangoju <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/net/ethernet/chelsio/cxgb4/cxgb4_mps.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_mps.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_mps.c
@@ -229,7 +229,7 @@ void cxgb4_free_mps_ref_entries(struct a
{
struct mps_entries_ref *mps_entry, *tmp;

- if (!list_empty(&adap->mps_ref))
+ if (list_empty(&adap->mps_ref))
return;

spin_lock(&adap->mps_ref_lock);


2020-09-25 13:02:34

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 5.8 31/56] net/mlx5e: TLS, Do not expose FPGA TLS counter if not supported

From: Tariq Toukan <[email protected]>

[ Upstream commit 8f0bcd19b1da3f264223abea985b9462e85a3718 ]

The set of TLS TX global SW counters in mlx5e_tls_sw_stats_desc
is updated from all rings by using atomic ops.
This set of stats is used only in the FPGA TLS use case, not in
the Connect-X TLS one, where regular per-ring counters are used.

Do not expose them in the Connect-X use case, as this would cause
counter duplication. For example, tx_tls_drop_no_sync_data would
appear twice in the ethtool stats.

Fixes: d2ead1f360e8 ("net/mlx5e: Add kTLS TX HW offload support")
Signed-off-by: Tariq Toukan <[email protected]>
Reviewed-by: Moshe Shemesh <[email protected]>
Signed-off-by: Saeed Mahameed <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls_stats.c | 12 +++++++----
1 file changed, 8 insertions(+), 4 deletions(-)

--- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls_stats.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls_stats.c
@@ -35,7 +35,6 @@
#include <net/sock.h>

#include "en.h"
-#include "accel/tls.h"
#include "fpga/sdk.h"
#include "en_accel/tls.h"

@@ -51,9 +50,14 @@ static const struct counter_desc mlx5e_t

#define NUM_TLS_SW_COUNTERS ARRAY_SIZE(mlx5e_tls_sw_stats_desc)

+static bool is_tls_atomic_stats(struct mlx5e_priv *priv)
+{
+ return priv->tls && !mlx5_accel_is_ktls_device(priv->mdev);
+}
+
int mlx5e_tls_get_count(struct mlx5e_priv *priv)
{
- if (!priv->tls)
+ if (!is_tls_atomic_stats(priv))
return 0;

return NUM_TLS_SW_COUNTERS;
@@ -63,7 +67,7 @@ int mlx5e_tls_get_strings(struct mlx5e_p
{
unsigned int i, idx = 0;

- if (!priv->tls)
+ if (!is_tls_atomic_stats(priv))
return 0;

for (i = 0; i < NUM_TLS_SW_COUNTERS; i++)
@@ -77,7 +81,7 @@ int mlx5e_tls_get_stats(struct mlx5e_pri
{
int i, idx = 0;

- if (!priv->tls)
+ if (!is_tls_atomic_stats(priv))
return 0;

for (i = 0; i < NUM_TLS_SW_COUNTERS; i++)


2020-09-25 13:02:46

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 5.8 16/56] net: DCB: Validate DCB_ATTR_DCB_BUFFER argument

From: Petr Machata <[email protected]>

[ Upstream commit 297e77e53eadb332d5062913447b104a772dc33b ]

The parameter passed via DCB_ATTR_DCB_BUFFER is a struct dcbnl_buffer. The
field prio2buffer is an array of IEEE_8021Q_MAX_PRIORITIES bytes, where
each value is a number of a buffer to direct that priority's traffic to.
That value is however never validated to lie within the bounds set by
DCBX_MAX_BUFFERS. The only driver that currently implements the callback is
mlx5 (maintainers CCd), and that does not do any validation either, in
particual allowing incorrect configuration if the prio2buffer value does
not fit into 4 bits.

Instead of offloading the need to validate the buffer index to drivers, do
it right there in core, and bounce the request if the value is too large.

CC: Parav Pandit <[email protected]>
CC: Saeed Mahameed <[email protected]>
Fixes: e549f6f9c098 ("net/dcb: Add dcbnl buffer attribute")
Signed-off-by: Petr Machata <[email protected]>
Reviewed-by: Ido Schimmel <[email protected]>
Reviewed-by: Jiri Pirko <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
net/dcb/dcbnl.c | 8 ++++++++
1 file changed, 8 insertions(+)

--- a/net/dcb/dcbnl.c
+++ b/net/dcb/dcbnl.c
@@ -1426,6 +1426,7 @@ static int dcbnl_ieee_set(struct net_dev
{
const struct dcbnl_rtnl_ops *ops = netdev->dcbnl_ops;
struct nlattr *ieee[DCB_ATTR_IEEE_MAX + 1];
+ int prio;
int err;

if (!ops)
@@ -1475,6 +1476,13 @@ static int dcbnl_ieee_set(struct net_dev
struct dcbnl_buffer *buffer =
nla_data(ieee[DCB_ATTR_DCB_BUFFER]);

+ for (prio = 0; prio < ARRAY_SIZE(buffer->prio2buffer); prio++) {
+ if (buffer->prio2buffer[prio] >= DCBX_MAX_BUFFERS) {
+ err = -EINVAL;
+ goto err;
+ }
+ }
+
err = ops->dcbnl_setbuffer(netdev, buffer);
if (err)
goto err;


2020-09-25 13:02:49

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 5.8 13/56] ipv4: Update exception handling for multipath routes via same device

From: David Ahern <[email protected]>

[ Upstream commit 2fbc6e89b2f1403189e624cabaf73e189c5e50c6 ]

Kfir reported that pmtu exceptions are not created properly for
deployments where multipath routes use the same device.

After some digging I see 2 compounding problems:
1. ip_route_output_key_hash_rcu is updating the flowi4_oif *after*
the route lookup. This is the second use case where this has
been a problem (the first is related to use of vti devices with
VRF). I can not find any reason for the oif to be changed after the
lookup; the code goes back to the start of git. It does not seem
logical so remove it.

2. fib_lookups for exceptions do not call fib_select_path to handle
multipath route selection based on the hash.

The end result is that the fib_lookup used to add the exception
always creates it based using the first leg of the route.

An example topology showing the problem:

| host1
+------+
| eth0 | .209
+------+
|
+------+
switch | br0 |
+------+
|
+---------+---------+
| host2 | host3
+------+ +------+
| eth0 | .250 | eth0 | 192.168.252.252
+------+ +------+

+-----+ +-----+
| vti | .2 | vti | 192.168.247.3
+-----+ +-----+
\ /
=================================
tunnels
192.168.247.1/24

for h in host1 host2 host3; do
ip netns add ${h}
ip -netns ${h} link set lo up
ip netns exec ${h} sysctl -wq net.ipv4.ip_forward=1
done

ip netns add switch
ip -netns switch li set lo up
ip -netns switch link add br0 type bridge stp 0
ip -netns switch link set br0 up

for n in 1 2 3; do
ip -netns switch link add eth-sw type veth peer name eth-h${n}
ip -netns switch li set eth-h${n} master br0 up
ip -netns switch li set eth-sw netns host${n} name eth0
done

ip -netns host1 addr add 192.168.252.209/24 dev eth0
ip -netns host1 link set dev eth0 up
ip -netns host1 route add 192.168.247.0/24 \
nexthop via 192.168.252.250 dev eth0 nexthop via 192.168.252.252 dev eth0

ip -netns host2 addr add 192.168.252.250/24 dev eth0
ip -netns host2 link set dev eth0 up

ip -netns host2 addr add 192.168.252.252/24 dev eth0
ip -netns host3 link set dev eth0 up

ip netns add tunnel
ip -netns tunnel li set lo up
ip -netns tunnel li add br0 type bridge
ip -netns tunnel li set br0 up
for n in $(seq 11 20); do
ip -netns tunnel addr add dev br0 192.168.247.${n}/24
done

for n in 2 3
do
ip -netns tunnel link add vti${n} type veth peer name eth${n}
ip -netns tunnel link set eth${n} mtu 1360 master br0 up
ip -netns tunnel link set vti${n} netns host${n} mtu 1360 up
ip -netns host${n} addr add dev vti${n} 192.168.247.${n}/24
done
ip -netns tunnel ro add default nexthop via 192.168.247.2 nexthop via 192.168.247.3

ip netns exec host1 ping -M do -s 1400 -c3 -I 192.168.252.209 192.168.247.11
ip netns exec host1 ping -M do -s 1400 -c3 -I 192.168.252.209 192.168.247.15
ip -netns host1 ro ls cache

Before this patch the cache always shows exceptions against the first
leg in the multipath route; 192.168.252.250 per this example. Since the
hash has an initial random seed, you may need to vary the final octet
more than what is listed. In my tests, using addresses between 11 and 19
usually found 1 that used both legs.

With this patch, the cache will have exceptions for both legs.

Fixes: 4895c771c7f0 ("ipv4: Add FIB nexthop exceptions")
Reported-by: Kfir Itzhak <[email protected]>
Signed-off-by: David Ahern <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
net/ipv4/route.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)

--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -786,8 +786,10 @@ static void __ip_do_redirect(struct rtab
neigh_event_send(n, NULL);
} else {
if (fib_lookup(net, fl4, &res, 0) == 0) {
- struct fib_nh_common *nhc = FIB_RES_NHC(res);
+ struct fib_nh_common *nhc;

+ fib_select_path(net, &res, fl4, skb);
+ nhc = FIB_RES_NHC(res);
update_or_create_fnhe(nhc, fl4->daddr, new_gw,
0, false,
jiffies + ip_rt_gc_timeout);
@@ -1013,6 +1015,7 @@ out: kfree_skb(skb);
static void __ip_rt_update_pmtu(struct rtable *rt, struct flowi4 *fl4, u32 mtu)
{
struct dst_entry *dst = &rt->dst;
+ struct net *net = dev_net(dst->dev);
u32 old_mtu = ipv4_mtu(dst);
struct fib_result res;
bool lock = false;
@@ -1033,9 +1036,11 @@ static void __ip_rt_update_pmtu(struct r
return;

rcu_read_lock();
- if (fib_lookup(dev_net(dst->dev), fl4, &res, 0) == 0) {
- struct fib_nh_common *nhc = FIB_RES_NHC(res);
+ if (fib_lookup(net, fl4, &res, 0) == 0) {
+ struct fib_nh_common *nhc;

+ fib_select_path(net, &res, fl4, NULL);
+ nhc = FIB_RES_NHC(res);
update_or_create_fnhe(nhc, fl4->daddr, 0, mtu, lock,
jiffies + ip_rt_mtu_expires);
}
@@ -2663,8 +2668,6 @@ struct rtable *ip_route_output_key_hash_
fib_select_path(net, res, fl4, skb);

dev_out = FIB_RES_DEV(*res);
- fl4->flowi4_oif = dev_out->ifindex;
-

make_route:
rth = __mkroute_output(res, fl4, orig_oif, dev_out, flags);


2020-09-25 18:35:20

by Naresh Kamboju

[permalink] [raw]
Subject: Re: [PATCH 5.8 00/56] 5.8.12-rc1 review

On Fri, 25 Sep 2020 at 18:18, Greg Kroah-Hartman
<[email protected]> wrote:
>
> This is the start of the stable review cycle for the 5.8.12 release.
> There are 56 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Sun, 27 Sep 2020 12:47:02 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
> https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.8.12-rc1.gz
> or in the git tree and branch at:
> git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.8.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
>

Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.

Tested-by: Linux Kernel Functional Testing <[email protected]>

Summary
------------------------------------------------------------------------

kernel: 5.8.12-rc1
git repo: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc
git branch: linux-5.8.y
git commit: cf9938637c5c627f01905a4b4e29c02c1c6187fa
git describe: v5.8.11-57-gcf9938637c5c
Test details: https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.8.y/build/v5.8.11-57-gcf9938637c5c


No regressions (compared to build v5.8.11)

No fixes (compared to build v5.8.11)

Ran 30889 total tests in the following environments and test suites.

Environments
--------------
- dragonboard-410c
- hi6220-hikey
- i386
- juno-r2
- juno-r2-compat
- juno-r2-kasan
- nxp-ls2088
- qemu_arm
- qemu_arm64
- qemu_i386
- qemu_x86_64
- x15
- x86
- x86-kasan

Test Suites
-----------
* linux-log-parser
* ltp-cap_bounds-tests
* ltp-commands-tests
* ltp-containers-tests
* ltp-cpuhotplug-tests
* ltp-crypto-tests
* ltp-dio-tests
* ltp-fcntl-locktests-tests
* ltp-filecaps-tests
* ltp-fs_bind-tests
* ltp-fs_perms_simple-tests
* ltp-fsx-tests
* ltp-io-tests
* ltp-ipc-tests
* ltp-math-tests
* ltp-syscalls-tests
* libhugetlbfs
* ltp-fs-tests
* ltp-hugetlb-tests
* ltp-mm-tests
* ltp-nptl-tests
* ltp-pty-tests
* ltp-securebits-tests
* ltp-tracing-tests
* v4l2-compliance
* ltp-controllers-tests
* ltp-cve-tests
* ltp-open-posix-tests
* ltp-sched-tests
* network-basic-tests

--
Linaro LKFT
https://lkft.linaro.org

2020-09-25 20:34:52

by Shuah Khan

[permalink] [raw]
Subject: Re: [PATCH 5.8 00/56] 5.8.12-rc1 review

On 9/25/20 6:47 AM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 5.8.12 release.
> There are 56 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Sun, 27 Sep 2020 12:47:02 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
> https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.8.12-rc1.gz
> or in the git tree and branch at:
> git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.8.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
>

Compiled and booted on my test system. No dmesg regressions.

Tested-by: Shuah Khan <[email protected]>

thanks,
-- Shuah

2020-09-25 21:23:35

by Jeffrin Thalakkottoor

[permalink] [raw]
Subject: Re: [PATCH 5.8 00/56] 5.8.12-rc1 review

On Fri, 2020-09-25 at 14:47 +0200, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 5.8.12 release.
> There are 56 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied,
> please
> let me know.
>
> Responses should be made by Sun, 27 Sep 2020 12:47:02 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in on
> greg k-

Compiled and booted 5.8.12-rc1+ . "dmesg -l err" did not report any
error or errors.

Tested-by: Jeffrin Jose T <[email protected]>


--
software engineer
rajagiri school of engineering and technology

2020-09-26 15:48:17

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH 5.8 00/56] 5.8.12-rc1 review

On Fri, Sep 25, 2020 at 02:47:50PM +0200, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 5.8.12 release.
> There are 56 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Sun, 27 Sep 2020 12:47:02 +0000.
> Anything received after that time might be too late.
>

Build results:
total: 154 pass: 153 fail: 1
Failed builds:
powerpc:allmodconfig
Qemu test results:
total: 430 pass: 430 fail: 0

The powerpc failure is the usual spurious 'Inconsistent kallsyms data'.
Hopefully a fix will find its way into mainline soon.

Tested-by: Guenter Roeck <[email protected]>

Guenter

2020-09-26 16:11:27

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH 5.8 00/56] 5.8.12-rc1 review

On Sat, Sep 26, 2020 at 12:02:42AM +0530, Naresh Kamboju wrote:
> On Fri, 25 Sep 2020 at 18:18, Greg Kroah-Hartman
> <[email protected]> wrote:
> >
> > This is the start of the stable review cycle for the 5.8.12 release.
> > There are 56 patches in this series, all will be posted as a response
> > to this one. If anyone has any issues with these being applied, please
> > let me know.
> >
> > Responses should be made by Sun, 27 Sep 2020 12:47:02 +0000.
> > Anything received after that time might be too late.
> >
> > The whole patch series can be found in one patch at:
> > https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.8.12-rc1.gz
> > or in the git tree and branch at:
> > git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.8.y
> > and the diffstat can be found below.
> >
> > thanks,
> >
> > greg k-h
> >
>
> Results from Linaro’s test farm.
> No regressions on arm64, arm, x86_64, and i386.
>
> Tested-by: Linux Kernel Functional Testing <[email protected]>

Thanks for testing all of these and letting me know.

greg k-h

2020-09-26 16:11:38

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH 5.8 00/56] 5.8.12-rc1 review

On Fri, Sep 25, 2020 at 02:01:18PM -0600, Shuah Khan wrote:
> On 9/25/20 6:47 AM, Greg Kroah-Hartman wrote:
> > This is the start of the stable review cycle for the 5.8.12 release.
> > There are 56 patches in this series, all will be posted as a response
> > to this one. If anyone has any issues with these being applied, please
> > let me know.
> >
> > Responses should be made by Sun, 27 Sep 2020 12:47:02 +0000.
> > Anything received after that time might be too late.
> >
> > The whole patch series can be found in one patch at:
> > https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.8.12-rc1.gz
> > or in the git tree and branch at:
> > git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.8.y
> > and the diffstat can be found below.
> >
> > thanks,
> >
> > greg k-h
> >
>
> Compiled and booted on my test system. No dmesg regressions.
>
> Tested-by: Shuah Khan <[email protected]>

Thanks for testing all of these and letting me know.

greg k-h

2020-09-26 16:14:39

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH 5.8 00/56] 5.8.12-rc1 review

On Sat, Sep 26, 2020 at 08:44:56AM -0700, Guenter Roeck wrote:
> On Fri, Sep 25, 2020 at 02:47:50PM +0200, Greg Kroah-Hartman wrote:
> > This is the start of the stable review cycle for the 5.8.12 release.
> > There are 56 patches in this series, all will be posted as a response
> > to this one. If anyone has any issues with these being applied, please
> > let me know.
> >
> > Responses should be made by Sun, 27 Sep 2020 12:47:02 +0000.
> > Anything received after that time might be too late.
> >
>
> Build results:
> total: 154 pass: 153 fail: 1
> Failed builds:
> powerpc:allmodconfig
> Qemu test results:
> total: 430 pass: 430 fail: 0
>
> The powerpc failure is the usual spurious 'Inconsistent kallsyms data'.
> Hopefully a fix will find its way into mainline soon.

Hopefully...

> Tested-by: Guenter Roeck <[email protected]>

Thanks for testing all of these and letting me know.

greg k-h

2020-09-26 16:14:57

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH 5.8 00/56] 5.8.12-rc1 review

On Sat, Sep 26, 2020 at 02:52:03AM +0530, Jeffrin Jose T wrote:
> On Fri, 2020-09-25 at 14:47 +0200, Greg Kroah-Hartman wrote:
> > This is the start of the stable review cycle for the 5.8.12 release.
> > There are 56 patches in this series, all will be posted as a response
> > to this one. If anyone has any issues with these being applied,
> > please
> > let me know.
> >
> > Responses should be made by Sun, 27 Sep 2020 12:47:02 +0000.
> > Anything received after that time might be too late.
> >
> > The whole patch series can be found in on
> > greg k-
>
> Compiled and booted 5.8.12-rc1+ . "dmesg -l err" did not report any
> error or errors.
>
> Tested-by: Jeffrin Jose T <[email protected]>

Thanks for testing this one!

greg k-h