Skip to content

Commit b45a53b

Browse files
committed
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: 1) Two read past end of buffer fixes in AF_KEY, from Eric Biggers. 2) Memory leak in key_notify_policy(), from Steffen Klassert. 3) Fix overflow with bpf arrays, from Daniel Borkmann. 4) Fix RDMA regression with mlx5 due to mlx5 no longer using pci_irq_get_affinity(), from Saeed Mahameed. 5) Missing RCU read locking in nl80211_send_iface() when it calls ieee80211_bss_get_ie(), from Dominik Brodowski. 6) cfg80211 should check dev_set_name()'s return value, from Johannes Berg. 7) Missing module license tag in 9p protocol, from Stephen Hemminger. 8) Fix crash due to too small MTU in udp ipv6 sendmsg, from Mike Maloney. 9) Fix endless loop in netlink extack code, from David Ahern. 10) TLS socket layer sets inverted error codes, resulting in an endless loop. From Robert Hering. 11) Revert openvswitch erspan tunnel support, it's mis-designed and we need to kill it before it goes into a real release. From William Tu. 12) Fix lan78xx failures in full speed USB mode, from Yuiko Oshino. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (54 commits) net, sched: fix panic when updating miniq {b,q}stats qed: Fix potential use-after-free in qed_spq_post() nfp: use the correct index for link speed table lan78xx: Fix failure in USB Full Speed sctp: do not allow the v4 socket to bind a v4mapped v6 address sctp: return error if the asoc has been peeled off in sctp_wait_for_sndbuf sctp: reinit stream if stream outcnt has been change by sinit in sendmsg ibmvnic: Fix pending MAC address changes netlink: extack: avoid parenthesized string constant warning ipv4: Make neigh lookup keys for loopback/point-to-point devices be INADDR_ANY net: Allow neigh contructor functions ability to modify the primary_key sh_eth: fix dumping ARSTR Revert "openvswitch: Add erspan tunnel support." net/tls: Fix inverted error codes to avoid endless loop ipv6: ip6_make_skb() needs to clear cork.base.dst sctp: avoid compiler warning on implicit fallthru net: ipv4: Make "ip route get" match iif lo rules again. netlink: extack needs to be reset each time through loop tipc: fix a memory leak in tipc_nl_node_get_link() ipv6: fix udpv6 sendmsg crash caused by too small MTU ...
2 parents 41aa5e5 + 81d947e commit b45a53b

Some content is hidden

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

59 files changed

+390
-239
lines changed

drivers/infiniband/hw/mlx5/main.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1324,7 +1324,8 @@ static int mlx5_ib_alloc_transport_domain(struct mlx5_ib_dev *dev, u32 *tdn)
13241324
return err;
13251325

13261326
if ((MLX5_CAP_GEN(dev->mdev, port_type) != MLX5_CAP_PORT_TYPE_ETH) ||
1327-
!MLX5_CAP_GEN(dev->mdev, disable_local_lb))
1327+
(!MLX5_CAP_GEN(dev->mdev, disable_local_lb_uc) &&
1328+
!MLX5_CAP_GEN(dev->mdev, disable_local_lb_mc)))
13281329
return err;
13291330

13301331
mutex_lock(&dev->lb_mutex);
@@ -1342,7 +1343,8 @@ static void mlx5_ib_dealloc_transport_domain(struct mlx5_ib_dev *dev, u32 tdn)
13421343
mlx5_core_dealloc_transport_domain(dev->mdev, tdn);
13431344

13441345
if ((MLX5_CAP_GEN(dev->mdev, port_type) != MLX5_CAP_PORT_TYPE_ETH) ||
1345-
!MLX5_CAP_GEN(dev->mdev, disable_local_lb))
1346+
(!MLX5_CAP_GEN(dev->mdev, disable_local_lb_uc) &&
1347+
!MLX5_CAP_GEN(dev->mdev, disable_local_lb_mc)))
13461348
return;
13471349

13481350
mutex_lock(&dev->lb_mutex);
@@ -4158,7 +4160,7 @@ static void *mlx5_ib_add(struct mlx5_core_dev *mdev)
41584160
goto err_cnt;
41594161

41604162
dev->mdev->priv.uar = mlx5_get_uars_page(dev->mdev);
4161-
if (!dev->mdev->priv.uar)
4163+
if (IS_ERR(dev->mdev->priv.uar))
41624164
goto err_cong;
41634165

41644166
err = mlx5_alloc_bfreg(dev->mdev, &dev->bfreg, false, false);
@@ -4187,7 +4189,8 @@ static void *mlx5_ib_add(struct mlx5_core_dev *mdev)
41874189
}
41884190

41894191
if ((MLX5_CAP_GEN(mdev, port_type) == MLX5_CAP_PORT_TYPE_ETH) &&
4190-
MLX5_CAP_GEN(mdev, disable_local_lb))
4192+
(MLX5_CAP_GEN(mdev, disable_local_lb_uc) ||
4193+
MLX5_CAP_GEN(mdev, disable_local_lb_mc)))
41914194
mutex_init(&dev->lb_mutex);
41924195

41934196
dev->ib_active = true;

drivers/net/ethernet/cirrus/cs89x0.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1913,3 +1913,7 @@ static struct platform_driver cs89x0_driver = {
19131913
module_platform_driver_probe(cs89x0_driver, cs89x0_platform_probe);
19141914

19151915
#endif /* CONFIG_CS89x0_PLATFORM */
1916+
1917+
MODULE_LICENSE("GPL");
1918+
MODULE_DESCRIPTION("Crystal Semiconductor (Now Cirrus Logic) CS89[02]0 network driver");
1919+
MODULE_AUTHOR("Russell Nelson <[email protected]>");

drivers/net/ethernet/ibm/ibmvnic.c

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -756,6 +756,12 @@ static int ibmvnic_login(struct net_device *netdev)
756756
}
757757
} while (adapter->renegotiate);
758758

759+
/* handle pending MAC address changes after successful login */
760+
if (adapter->mac_change_pending) {
761+
__ibmvnic_set_mac(netdev, &adapter->desired.mac);
762+
adapter->mac_change_pending = false;
763+
}
764+
759765
return 0;
760766
}
761767

@@ -993,11 +999,6 @@ static int ibmvnic_open(struct net_device *netdev)
993999

9941000
mutex_lock(&adapter->reset_lock);
9951001

996-
if (adapter->mac_change_pending) {
997-
__ibmvnic_set_mac(netdev, &adapter->desired.mac);
998-
adapter->mac_change_pending = false;
999-
}
1000-
10011002
if (adapter->state != VNIC_CLOSED) {
10021003
rc = ibmvnic_login(netdev);
10031004
if (rc) {
@@ -1527,7 +1528,7 @@ static int ibmvnic_set_mac(struct net_device *netdev, void *p)
15271528
struct ibmvnic_adapter *adapter = netdev_priv(netdev);
15281529
struct sockaddr *addr = p;
15291530

1530-
if (adapter->state != VNIC_OPEN) {
1531+
if (adapter->state == VNIC_PROBED) {
15311532
memcpy(&adapter->desired.mac, addr, sizeof(struct sockaddr));
15321533
adapter->mac_change_pending = true;
15331534
return 0;

drivers/net/ethernet/mellanox/mlx5/core/en.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -895,7 +895,7 @@ int mlx5e_vlan_rx_kill_vid(struct net_device *dev, __always_unused __be16 proto,
895895
u16 vid);
896896
void mlx5e_enable_cvlan_filter(struct mlx5e_priv *priv);
897897
void mlx5e_disable_cvlan_filter(struct mlx5e_priv *priv);
898-
void mlx5e_timestamp_set(struct mlx5e_priv *priv);
898+
void mlx5e_timestamp_init(struct mlx5e_priv *priv);
899899

900900
struct mlx5e_redirect_rqt_param {
901901
bool is_rss;

drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -922,8 +922,9 @@ static void mlx5e_dcbnl_query_dcbx_mode(struct mlx5e_priv *priv,
922922

923923
static void mlx5e_ets_init(struct mlx5e_priv *priv)
924924
{
925-
int i;
926925
struct ieee_ets ets;
926+
int err;
927+
int i;
927928

928929
if (!MLX5_CAP_GEN(priv->mdev, ets))
929930
return;
@@ -936,11 +937,16 @@ static void mlx5e_ets_init(struct mlx5e_priv *priv)
936937
ets.prio_tc[i] = i;
937938
}
938939

939-
/* tclass[prio=0]=1, tclass[prio=1]=0, tclass[prio=i]=i (for i>1) */
940-
ets.prio_tc[0] = 1;
941-
ets.prio_tc[1] = 0;
940+
if (ets.ets_cap > 1) {
941+
/* tclass[prio=0]=1, tclass[prio=1]=0, tclass[prio=i]=i (for i>1) */
942+
ets.prio_tc[0] = 1;
943+
ets.prio_tc[1] = 0;
944+
}
942945

943-
mlx5e_dcbnl_ieee_setets_core(priv, &ets);
946+
err = mlx5e_dcbnl_ieee_setets_core(priv, &ets);
947+
if (err)
948+
netdev_err(priv->netdev,
949+
"%s, Failed to init ETS: %d\n", __func__, err);
944950
}
945951

946952
enum {

drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,7 @@ void mlx5e_ethtool_get_ethtool_stats(struct mlx5e_priv *priv,
207207
return;
208208

209209
mutex_lock(&priv->state_lock);
210-
if (test_bit(MLX5E_STATE_OPENED, &priv->state))
211-
mlx5e_update_stats(priv, true);
210+
mlx5e_update_stats(priv, true);
212211
mutex_unlock(&priv->state_lock);
213212

214213
for (i = 0; i < mlx5e_num_stats_grps; i++)

drivers/net/ethernet/mellanox/mlx5/core/en_main.c

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2669,7 +2669,7 @@ void mlx5e_switch_priv_channels(struct mlx5e_priv *priv,
26692669
netif_carrier_on(netdev);
26702670
}
26712671

2672-
void mlx5e_timestamp_set(struct mlx5e_priv *priv)
2672+
void mlx5e_timestamp_init(struct mlx5e_priv *priv)
26732673
{
26742674
priv->tstamp.tx_type = HWTSTAMP_TX_OFF;
26752675
priv->tstamp.rx_filter = HWTSTAMP_FILTER_NONE;
@@ -2690,7 +2690,6 @@ int mlx5e_open_locked(struct net_device *netdev)
26902690
mlx5e_activate_priv_channels(priv);
26912691
if (priv->profile->update_carrier)
26922692
priv->profile->update_carrier(priv);
2693-
mlx5e_timestamp_set(priv);
26942693

26952694
if (priv->profile->update_stats)
26962695
queue_delayed_work(priv->wq, &priv->update_stats_work, 0);
@@ -3219,12 +3218,12 @@ static int mlx5e_set_mac(struct net_device *netdev, void *addr)
32193218
return 0;
32203219
}
32213220

3222-
#define MLX5E_SET_FEATURE(netdev, feature, enable) \
3221+
#define MLX5E_SET_FEATURE(features, feature, enable) \
32233222
do { \
32243223
if (enable) \
3225-
netdev->features |= feature; \
3224+
*features |= feature; \
32263225
else \
3227-
netdev->features &= ~feature; \
3226+
*features &= ~feature; \
32283227
} while (0)
32293228

32303229
typedef int (*mlx5e_feature_handler)(struct net_device *netdev, bool enable);
@@ -3347,6 +3346,7 @@ static int set_feature_arfs(struct net_device *netdev, bool enable)
33473346
#endif
33483347

33493348
static int mlx5e_handle_feature(struct net_device *netdev,
3349+
netdev_features_t *features,
33503350
netdev_features_t wanted_features,
33513351
netdev_features_t feature,
33523352
mlx5e_feature_handler feature_handler)
@@ -3365,34 +3365,40 @@ static int mlx5e_handle_feature(struct net_device *netdev,
33653365
return err;
33663366
}
33673367

3368-
MLX5E_SET_FEATURE(netdev, feature, enable);
3368+
MLX5E_SET_FEATURE(features, feature, enable);
33693369
return 0;
33703370
}
33713371

33723372
static int mlx5e_set_features(struct net_device *netdev,
33733373
netdev_features_t features)
33743374
{
3375+
netdev_features_t oper_features = netdev->features;
33753376
int err;
33763377

3377-
err = mlx5e_handle_feature(netdev, features, NETIF_F_LRO,
3378-
set_feature_lro);
3379-
err |= mlx5e_handle_feature(netdev, features,
3378+
err = mlx5e_handle_feature(netdev, &oper_features, features,
3379+
NETIF_F_LRO, set_feature_lro);
3380+
err |= mlx5e_handle_feature(netdev, &oper_features, features,
33803381
NETIF_F_HW_VLAN_CTAG_FILTER,
33813382
set_feature_cvlan_filter);
3382-
err |= mlx5e_handle_feature(netdev, features, NETIF_F_HW_TC,
3383-
set_feature_tc_num_filters);
3384-
err |= mlx5e_handle_feature(netdev, features, NETIF_F_RXALL,
3385-
set_feature_rx_all);
3386-
err |= mlx5e_handle_feature(netdev, features, NETIF_F_RXFCS,
3387-
set_feature_rx_fcs);
3388-
err |= mlx5e_handle_feature(netdev, features, NETIF_F_HW_VLAN_CTAG_RX,
3389-
set_feature_rx_vlan);
3383+
err |= mlx5e_handle_feature(netdev, &oper_features, features,
3384+
NETIF_F_HW_TC, set_feature_tc_num_filters);
3385+
err |= mlx5e_handle_feature(netdev, &oper_features, features,
3386+
NETIF_F_RXALL, set_feature_rx_all);
3387+
err |= mlx5e_handle_feature(netdev, &oper_features, features,
3388+
NETIF_F_RXFCS, set_feature_rx_fcs);
3389+
err |= mlx5e_handle_feature(netdev, &oper_features, features,
3390+
NETIF_F_HW_VLAN_CTAG_RX, set_feature_rx_vlan);
33903391
#ifdef CONFIG_RFS_ACCEL
3391-
err |= mlx5e_handle_feature(netdev, features, NETIF_F_NTUPLE,
3392-
set_feature_arfs);
3392+
err |= mlx5e_handle_feature(netdev, &oper_features, features,
3393+
NETIF_F_NTUPLE, set_feature_arfs);
33933394
#endif
33943395

3395-
return err ? -EINVAL : 0;
3396+
if (err) {
3397+
netdev->features = oper_features;
3398+
return -EINVAL;
3399+
}
3400+
3401+
return 0;
33963402
}
33973403

33983404
static netdev_features_t mlx5e_fix_features(struct net_device *netdev,
@@ -4139,6 +4145,8 @@ static void mlx5e_build_nic_netdev_priv(struct mlx5_core_dev *mdev,
41394145
INIT_WORK(&priv->set_rx_mode_work, mlx5e_set_rx_mode_work);
41404146
INIT_WORK(&priv->tx_timeout_work, mlx5e_tx_timeout_work);
41414147
INIT_DELAYED_WORK(&priv->update_stats_work, mlx5e_update_stats_work);
4148+
4149+
mlx5e_timestamp_init(priv);
41424150
}
41434151

41444152
static void mlx5e_set_netdev_dev_addr(struct net_device *netdev)

drivers/net/ethernet/mellanox/mlx5/core/en_rep.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -877,6 +877,8 @@ static void mlx5e_init_rep(struct mlx5_core_dev *mdev,
877877

878878
mlx5e_build_rep_params(mdev, &priv->channels.params);
879879
mlx5e_build_rep_netdev(netdev);
880+
881+
mlx5e_timestamp_init(priv);
880882
}
881883

882884
static int mlx5e_init_rep_rx(struct mlx5e_priv *priv)

drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -238,15 +238,19 @@ static int mlx5e_test_loopback_setup(struct mlx5e_priv *priv,
238238
int err = 0;
239239

240240
/* Temporarily enable local_lb */
241-
if (MLX5_CAP_GEN(priv->mdev, disable_local_lb)) {
242-
mlx5_nic_vport_query_local_lb(priv->mdev, &lbtp->local_lb);
243-
if (!lbtp->local_lb)
244-
mlx5_nic_vport_update_local_lb(priv->mdev, true);
241+
err = mlx5_nic_vport_query_local_lb(priv->mdev, &lbtp->local_lb);
242+
if (err)
243+
return err;
244+
245+
if (!lbtp->local_lb) {
246+
err = mlx5_nic_vport_update_local_lb(priv->mdev, true);
247+
if (err)
248+
return err;
245249
}
246250

247251
err = mlx5e_refresh_tirs(priv, true);
248252
if (err)
249-
return err;
253+
goto out;
250254

251255
lbtp->loopback_ok = false;
252256
init_completion(&lbtp->comp);
@@ -256,16 +260,21 @@ static int mlx5e_test_loopback_setup(struct mlx5e_priv *priv,
256260
lbtp->pt.dev = priv->netdev;
257261
lbtp->pt.af_packet_priv = lbtp;
258262
dev_add_pack(&lbtp->pt);
263+
264+
return 0;
265+
266+
out:
267+
if (!lbtp->local_lb)
268+
mlx5_nic_vport_update_local_lb(priv->mdev, false);
269+
259270
return err;
260271
}
261272

262273
static void mlx5e_test_loopback_cleanup(struct mlx5e_priv *priv,
263274
struct mlx5e_lbt_priv *lbtp)
264275
{
265-
if (MLX5_CAP_GEN(priv->mdev, disable_local_lb)) {
266-
if (!lbtp->local_lb)
267-
mlx5_nic_vport_update_local_lb(priv->mdev, false);
268-
}
276+
if (!lbtp->local_lb)
277+
mlx5_nic_vport_update_local_lb(priv->mdev, false);
269278

270279
dev_remove_pack(&lbtp->pt);
271280
mlx5e_refresh_tirs(priv, false);

drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ void mlx5i_init(struct mlx5_core_dev *mdev,
8686
mlx5e_build_nic_params(mdev, &priv->channels.params, profile->max_nch(mdev));
8787
mlx5i_build_nic_params(mdev, &priv->channels.params);
8888

89+
mlx5e_timestamp_init(priv);
90+
8991
/* netdev init */
9092
netdev->hw_features |= NETIF_F_SG;
9193
netdev->hw_features |= NETIF_F_IP_CSUM;
@@ -450,7 +452,6 @@ static int mlx5i_open(struct net_device *netdev)
450452

451453
mlx5e_refresh_tirs(epriv, false);
452454
mlx5e_activate_priv_channels(epriv);
453-
mlx5e_timestamp_set(epriv);
454455

455456
mutex_unlock(&epriv->state_lock);
456457
return 0;

drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,9 +423,13 @@ void mlx5_pps_event(struct mlx5_core_dev *mdev,
423423

424424
switch (clock->ptp_info.pin_config[pin].func) {
425425
case PTP_PF_EXTTS:
426+
ptp_event.index = pin;
427+
ptp_event.timestamp = timecounter_cyc2time(&clock->tc,
428+
be64_to_cpu(eqe->data.pps.time_stamp));
426429
if (clock->pps_info.enabled) {
427430
ptp_event.type = PTP_CLOCK_PPSUSR;
428-
ptp_event.pps_times.ts_real = ns_to_timespec64(eqe->data.pps.time_stamp);
431+
ptp_event.pps_times.ts_real =
432+
ns_to_timespec64(ptp_event.timestamp);
429433
} else {
430434
ptp_event.type = PTP_CLOCK_EXTTS;
431435
}

0 commit comments

Comments
 (0)