diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-10-05 11:50:15 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-10-05 11:50:15 -0400 |
commit | 9819a30c11ea439e5e3c81f5539c4d42d6c76314 (patch) | |
tree | eee29b4735a2ddb944260ad3d281efd4a56788cc /net/ipv6/addrconf.c | |
parent | 6fe137cbe3e85e832a169006e8ccc04cec69c653 (diff) | |
parent | ef129d34149ea23d0d442844fc25ae26a85589fc (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from David Miller:
1) Fix ieeeu02154 atusb driver use-after-free, from Johan Hovold.
2) Need to validate TCA_CBQ_WRROPT netlink attributes, from Eric
Dumazet.
3) txq null deref in mac80211, from Miaoqing Pan.
4) ionic driver needs to select NET_DEVLINK, from Arnd Bergmann.
5) Need to disable bh during nft_connlimit GC, from Pablo Neira Ayuso.
6) Avoid division by zero in taprio scheduler, from Vladimir Oltean.
7) Various xgmac fixes in stmmac driver from Jose Abreu.
8) Avoid 64-bit division in mlx5 leading to link errors on 32-bit from
Michal Kubecek.
9) Fix bad VLAN check in rtl8366 DSA driver, from Linus Walleij.
10) Fix sleep while atomic in sja1105, from Vladimir Oltean.
11) Suspend/resume deadlock in stmmac, from Thierry Reding.
12) Various UDP GSO fixes from Josh Hunt.
13) Fix slab out of bounds access in tcp_zerocopy_receive(), from Eric
Dumazet.
14) Fix OOPS in __ipv6_ifa_notify(), from David Ahern.
15) Memory leak in NFC's llcp_sock_bind, from Eric Dumazet.
* git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (72 commits)
selftests/net: add nettest to .gitignore
net: qlogic: Fix memory leak in ql_alloc_large_buffers
nfc: fix memory leak in llcp_sock_bind()
sch_dsmark: fix potential NULL deref in dsmark_init()
net: phy: at803x: use operating parameters from PHY-specific status
net: phy: extract pause mode
net: phy: extract link partner advertisement reading
net: phy: fix write to mii-ctrl1000 register
ipv6: Handle missing host route in __ipv6_ifa_notify
net: phy: allow for reset line to be tied to a sleepy GPIO controller
net: ipv4: avoid mixed n_redirects and rate_tokens usage
r8152: Set macpassthru in reset_resume callback
cxgb4:Fix out-of-bounds MSI-X info array access
Revert "ipv6: Handle race in addrconf_dad_work"
net: make sock_prot_memory_pressure() return "const char *"
rxrpc: Fix rxrpc_recvmsg tracepoint
qmi_wwan: add support for Cinterion CLS8 devices
tcp: fix slab-out-of-bounds in tcp_zerocopy_receive()
lib: textsearch: fix escapes in example code
udp: only do GSO if # of segs > 1
...
Diffstat (limited to 'net/ipv6/addrconf.c')
-rw-r--r-- | net/ipv6/addrconf.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 6a576ff92c39..34ccef18b40e 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
@@ -5964,13 +5964,20 @@ static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp) | |||
5964 | switch (event) { | 5964 | switch (event) { |
5965 | case RTM_NEWADDR: | 5965 | case RTM_NEWADDR: |
5966 | /* | 5966 | /* |
5967 | * If the address was optimistic | 5967 | * If the address was optimistic we inserted the route at the |
5968 | * we inserted the route at the start of | 5968 | * start of our DAD process, so we don't need to do it again. |
5969 | * our DAD process, so we don't need | 5969 | * If the device was taken down in the middle of the DAD |
5970 | * to do it again | 5970 | * cycle there is a race where we could get here without a |
5971 | * host route, so nothing to insert. That will be fixed when | ||
5972 | * the device is brought up. | ||
5971 | */ | 5973 | */ |
5972 | if (!rcu_access_pointer(ifp->rt->fib6_node)) | 5974 | if (ifp->rt && !rcu_access_pointer(ifp->rt->fib6_node)) { |
5973 | ip6_ins_rt(net, ifp->rt); | 5975 | ip6_ins_rt(net, ifp->rt); |
5976 | } else if (!ifp->rt && (ifp->idev->dev->flags & IFF_UP)) { | ||
5977 | pr_warn("BUG: Address %pI6c on device %s is missing its host route.\n", | ||
5978 | &ifp->addr, ifp->idev->dev->name); | ||
5979 | } | ||
5980 | |||
5974 | if (ifp->idev->cnf.forwarding) | 5981 | if (ifp->idev->cnf.forwarding) |
5975 | addrconf_join_anycast(ifp); | 5982 | addrconf_join_anycast(ifp); |
5976 | if (!ipv6_addr_any(&ifp->peer_addr)) | 5983 | if (!ipv6_addr_any(&ifp->peer_addr)) |