Skip to content

Commit 42e66b1

Browse files
committed
Merge tag 'net-6.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from Paolo Abeni: "Including fixes from bluetooth, bpf and wireless. Current release - regressions: - bpf: - fix wrong last sg check in sk_msg_recvmsg() - fix kernel BUG in purge_effective_progs() - mac80211: - fix possible leak in ieee80211_tx_control_port() - potential NULL dereference in ieee80211_tx_control_port() Current release - new code bugs: - nfp: fix the access to management firmware hanging Previous releases - regressions: - ip: fix triggering of 'icmp redirect' - sched: tbf: don't call qdisc_put() while holding tree lock - bpf: fix corrupted packets for XDP_SHARED_UMEM - bluetooth: hci_sync: fix suspend performance regression - micrel: fix probe failure Previous releases - always broken: - tcp: make global challenge ack rate limitation per net-ns and default disabled - tg3: fix potential hang-up on system reboot - mac802154: fix reception for no-daddr packets Misc: - r8152: add PID for the lenovo onelink+ dock" * tag 'net-6.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (56 commits) net/smc: Remove redundant refcount increase Revert "sch_cake: Return __NET_XMIT_STOLEN when consuming enqueued skb" tcp: make global challenge ack rate limitation per net-ns and default disabled tcp: annotate data-race around challenge_timestamp net: dsa: hellcreek: Print warning only once ip: fix triggering of 'icmp redirect' sch_cake: Return __NET_XMIT_STOLEN when consuming enqueued skb selftests: net: sort .gitignore file Documentation: networking: correct possessive "its" kcm: fix strp_init() order and cleanup mlxbf_gige: compute MDIO period based on i1clk ethernet: rocker: fix sleep in atomic context bug in neigh_timer_handler net: lan966x: improve error handle in lan966x_fdma_rx_get_frame() nfp: fix the access to management firmware hanging net: phy: micrel: Make the GPIO to be non-exclusive net: virtio_net: fix notification coalescing comments net/sched: fix netdevice reference leaks in attach_default_qdiscs() net: sched: tbf: don't call qdisc_put() while holding tree lock net: Use u64_stats_fetch_begin_irq() for stats fetch. net: dsa: xrs700x: Use irqsave variant for u64 stats update ...
2 parents d330076 + a8424a9 commit 42e66b1

File tree

70 files changed

+478
-249
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+478
-249
lines changed

Documentation/networking/devlink/netdevsim.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ The ``netdevsim`` driver supports rate objects management, which includes:
6767
- setting tx_share and tx_max rate values for any rate object type;
6868
- setting parent node for any rate object type.
6969

70-
Rate nodes and it's parameters are exposed in ``netdevsim`` debugfs in RO mode.
70+
Rate nodes and their parameters are exposed in ``netdevsim`` debugfs in RO mode.
7171
For example created rate node with name ``some_group``:
7272

7373
.. code:: shell

Documentation/networking/driver.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Transmit path guidelines:
88

99
1) The ndo_start_xmit method must not return NETDEV_TX_BUSY under
1010
any normal circumstances. It is considered a hard error unless
11-
there is no way your device can tell ahead of time when it's
11+
there is no way your device can tell ahead of time when its
1212
transmit function will become busy.
1313

1414
Instead it must maintain the queue properly. For example,

Documentation/networking/ip-sysctl.rst

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1035,7 +1035,10 @@ tcp_limit_output_bytes - INTEGER
10351035
tcp_challenge_ack_limit - INTEGER
10361036
Limits number of Challenge ACK sent per second, as recommended
10371037
in RFC 5961 (Improving TCP's Robustness to Blind In-Window Attacks)
1038-
Default: 1000
1038+
Note that this per netns rate limit can allow some side channel
1039+
attacks and probably should not be enabled.
1040+
TCP stack implements per TCP socket limits anyway.
1041+
Default: INT_MAX (unlimited)
10391042

10401043
UDP variables
10411044
=============

Documentation/networking/ipvlan.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Initial Release:
1111
================
1212
This is conceptually very similar to the macvlan driver with one major
1313
exception of using L3 for mux-ing /demux-ing among slaves. This property makes
14-
the master device share the L2 with it's slave devices. I have developed this
14+
the master device share the L2 with its slave devices. I have developed this
1515
driver in conjunction with network namespaces and not sure if there is use case
1616
outside of it.
1717

Documentation/networking/l2tp.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ its tunnel close actions. For L2TPIP sockets, the socket's close
530530
handler initiates the same tunnel close actions. All sessions are
531531
first closed. Each session drops its tunnel ref. When the tunnel ref
532532
reaches zero, the tunnel puts its socket ref. When the socket is
533-
eventually destroyed, it's sk_destruct finally frees the L2TP tunnel
533+
eventually destroyed, its sk_destruct finally frees the L2TP tunnel
534534
context.
535535

536536
Sessions

Documentation/networking/switchdev.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ tools such as iproute2.
159159

160160
The switchdev driver can know a particular port's position in the topology by
161161
monitoring NETDEV_CHANGEUPPER notifications. For example, a port moved into a
162-
bond will see it's upper master change. If that bond is moved into a bridge,
162+
bond will see its upper master change. If that bond is moved into a bridge,
163163
the bond's upper master will change. And so on. The driver will track such
164164
movements to know what position a port is in in the overall topology by
165165
registering for netdevice events and acting on NETDEV_CHANGEUPPER.

drivers/net/dsa/xrs700x/xrs700x.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ static void xrs700x_read_port_counters(struct xrs700x *priv, int port)
109109
{
110110
struct xrs700x_port *p = &priv->ports[port];
111111
struct rtnl_link_stats64 stats;
112+
unsigned long flags;
112113
int i;
113114

114115
memset(&stats, 0, sizeof(stats));
@@ -138,9 +139,9 @@ static void xrs700x_read_port_counters(struct xrs700x *priv, int port)
138139
*/
139140
stats.rx_packets += stats.multicast;
140141

141-
u64_stats_update_begin(&p->syncp);
142+
flags = u64_stats_update_begin_irqsave(&p->syncp);
142143
p->stats64 = stats;
143-
u64_stats_update_end(&p->syncp);
144+
u64_stats_update_end_irqrestore(&p->syncp, flags);
144145

145146
mutex_unlock(&p->mib_mutex);
146147
}

drivers/net/ethernet/broadcom/tg3.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18076,16 +18076,20 @@ static void tg3_shutdown(struct pci_dev *pdev)
1807618076
struct net_device *dev = pci_get_drvdata(pdev);
1807718077
struct tg3 *tp = netdev_priv(dev);
1807818078

18079+
tg3_reset_task_cancel(tp);
18080+
1807918081
rtnl_lock();
18082+
1808018083
netif_device_detach(dev);
1808118084

1808218085
if (netif_running(dev))
1808318086
dev_close(dev);
1808418087

18085-
if (system_state == SYSTEM_POWER_OFF)
18086-
tg3_power_down(tp);
18088+
tg3_power_down(tp);
1808718089

1808818090
rtnl_unlock();
18091+
18092+
pci_disable_device(pdev);
1808918093
}
1809018094

1809118095
/**

drivers/net/ethernet/cortina/gemini.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1919,7 +1919,7 @@ static void gmac_get_stats64(struct net_device *netdev,
19191919

19201920
/* Racing with RX NAPI */
19211921
do {
1922-
start = u64_stats_fetch_begin(&port->rx_stats_syncp);
1922+
start = u64_stats_fetch_begin_irq(&port->rx_stats_syncp);
19231923

19241924
stats->rx_packets = port->stats.rx_packets;
19251925
stats->rx_bytes = port->stats.rx_bytes;
@@ -1931,11 +1931,11 @@ static void gmac_get_stats64(struct net_device *netdev,
19311931
stats->rx_crc_errors = port->stats.rx_crc_errors;
19321932
stats->rx_frame_errors = port->stats.rx_frame_errors;
19331933

1934-
} while (u64_stats_fetch_retry(&port->rx_stats_syncp, start));
1934+
} while (u64_stats_fetch_retry_irq(&port->rx_stats_syncp, start));
19351935

19361936
/* Racing with MIB and TX completion interrupts */
19371937
do {
1938-
start = u64_stats_fetch_begin(&port->ir_stats_syncp);
1938+
start = u64_stats_fetch_begin_irq(&port->ir_stats_syncp);
19391939

19401940
stats->tx_errors = port->stats.tx_errors;
19411941
stats->tx_packets = port->stats.tx_packets;
@@ -1945,15 +1945,15 @@ static void gmac_get_stats64(struct net_device *netdev,
19451945
stats->rx_missed_errors = port->stats.rx_missed_errors;
19461946
stats->rx_fifo_errors = port->stats.rx_fifo_errors;
19471947

1948-
} while (u64_stats_fetch_retry(&port->ir_stats_syncp, start));
1948+
} while (u64_stats_fetch_retry_irq(&port->ir_stats_syncp, start));
19491949

19501950
/* Racing with hard_start_xmit */
19511951
do {
1952-
start = u64_stats_fetch_begin(&port->tx_stats_syncp);
1952+
start = u64_stats_fetch_begin_irq(&port->tx_stats_syncp);
19531953

19541954
stats->tx_dropped = port->stats.tx_dropped;
19551955

1956-
} while (u64_stats_fetch_retry(&port->tx_stats_syncp, start));
1956+
} while (u64_stats_fetch_retry_irq(&port->tx_stats_syncp, start));
19571957

19581958
stats->rx_dropped += stats->rx_missed_errors;
19591959
}
@@ -2031,32 +2031,32 @@ static void gmac_get_ethtool_stats(struct net_device *netdev,
20312031
/* Racing with MIB interrupt */
20322032
do {
20332033
p = values;
2034-
start = u64_stats_fetch_begin(&port->ir_stats_syncp);
2034+
start = u64_stats_fetch_begin_irq(&port->ir_stats_syncp);
20352035

20362036
for (i = 0; i < RX_STATS_NUM; i++)
20372037
*p++ = port->hw_stats[i];
20382038

2039-
} while (u64_stats_fetch_retry(&port->ir_stats_syncp, start));
2039+
} while (u64_stats_fetch_retry_irq(&port->ir_stats_syncp, start));
20402040
values = p;
20412041

20422042
/* Racing with RX NAPI */
20432043
do {
20442044
p = values;
2045-
start = u64_stats_fetch_begin(&port->rx_stats_syncp);
2045+
start = u64_stats_fetch_begin_irq(&port->rx_stats_syncp);
20462046

20472047
for (i = 0; i < RX_STATUS_NUM; i++)
20482048
*p++ = port->rx_stats[i];
20492049
for (i = 0; i < RX_CHKSUM_NUM; i++)
20502050
*p++ = port->rx_csum_stats[i];
20512051
*p++ = port->rx_napi_exits;
20522052

2053-
} while (u64_stats_fetch_retry(&port->rx_stats_syncp, start));
2053+
} while (u64_stats_fetch_retry_irq(&port->rx_stats_syncp, start));
20542054
values = p;
20552055

20562056
/* Racing with TX start_xmit */
20572057
do {
20582058
p = values;
2059-
start = u64_stats_fetch_begin(&port->tx_stats_syncp);
2059+
start = u64_stats_fetch_begin_irq(&port->tx_stats_syncp);
20602060

20612061
for (i = 0; i < TX_MAX_FRAGS; i++) {
20622062
*values++ = port->tx_frag_stats[i];
@@ -2065,7 +2065,7 @@ static void gmac_get_ethtool_stats(struct net_device *netdev,
20652065
*values++ = port->tx_frags_linearized;
20662066
*values++ = port->tx_hw_csummed;
20672067

2068-
} while (u64_stats_fetch_retry(&port->tx_stats_syncp, start));
2068+
} while (u64_stats_fetch_retry_irq(&port->tx_stats_syncp, start));
20692069
}
20702070

20712071
static int gmac_get_ksettings(struct net_device *netdev,

drivers/net/ethernet/fungible/funeth/funeth_txrx.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,9 +206,9 @@ struct funeth_rxq {
206206

207207
#define FUN_QSTAT_READ(q, seq, stats_copy) \
208208
do { \
209-
seq = u64_stats_fetch_begin(&(q)->syncp); \
209+
seq = u64_stats_fetch_begin_irq(&(q)->syncp); \
210210
stats_copy = (q)->stats; \
211-
} while (u64_stats_fetch_retry(&(q)->syncp, (seq)))
211+
} while (u64_stats_fetch_retry_irq(&(q)->syncp, (seq)))
212212

213213
#define FUN_INT_NAME_LEN (IFNAMSIZ + 16)
214214

0 commit comments

Comments
 (0)