summaryrefslogtreecommitdiff
path: root/net/llc
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2020-07-26 19:52:16 +0200
committerIngo Molnar <mingo@kernel.org>2020-07-26 19:52:30 +0200
commit2d65685a4a6ff6ef6bfe42717222db92c04224c2 (patch)
tree894aebbf77ce53375e999cd5c6bb34ee5d28bb9f /net/llc
parentde0038bfaf53af0e8bc4961b7aacdcb79f43bf08 (diff)
parentfbe0d451bcea569fc0ed3455511a90646c8a9c81 (diff)
downloadlwn-2d65685a4a6ff6ef6bfe42717222db92c04224c2.tar.gz
lwn-2d65685a4a6ff6ef6bfe42717222db92c04224c2.zip
Merge branch 'x86/urgent' into x86/cleanups
Refresh the branch for a dependent commit. Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'net/llc')
-rw-r--r--net/llc/af_llc.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/net/llc/af_llc.c b/net/llc/af_llc.c
index 54fb8d452a7b..6e53e43c1907 100644
--- a/net/llc/af_llc.c
+++ b/net/llc/af_llc.c
@@ -273,6 +273,10 @@ static int llc_ui_autobind(struct socket *sock, struct sockaddr_llc *addr)
if (!sock_flag(sk, SOCK_ZAPPED))
goto out;
+ if (!addr->sllc_arphrd)
+ addr->sllc_arphrd = ARPHRD_ETHER;
+ if (addr->sllc_arphrd != ARPHRD_ETHER)
+ goto out;
rc = -ENODEV;
if (sk->sk_bound_dev_if) {
llc->dev = dev_get_by_index(&init_net, sk->sk_bound_dev_if);
@@ -328,7 +332,9 @@ static int llc_ui_bind(struct socket *sock, struct sockaddr *uaddr, int addrlen)
if (unlikely(!sock_flag(sk, SOCK_ZAPPED) || addrlen != sizeof(*addr)))
goto out;
rc = -EAFNOSUPPORT;
- if (unlikely(addr->sllc_family != AF_LLC))
+ if (!addr->sllc_arphrd)
+ addr->sllc_arphrd = ARPHRD_ETHER;
+ if (unlikely(addr->sllc_family != AF_LLC || addr->sllc_arphrd != ARPHRD_ETHER))
goto out;
dprintk("%s: binding %02X\n", __func__, addr->sllc_sap);
rc = -ENODEV;
@@ -336,8 +342,6 @@ static int llc_ui_bind(struct socket *sock, struct sockaddr *uaddr, int addrlen)
if (sk->sk_bound_dev_if) {
llc->dev = dev_get_by_index_rcu(&init_net, sk->sk_bound_dev_if);
if (llc->dev) {
- if (!addr->sllc_arphrd)
- addr->sllc_arphrd = llc->dev->type;
if (is_zero_ether_addr(addr->sllc_mac))
memcpy(addr->sllc_mac, llc->dev->dev_addr,
IFHWADDRLEN);