|
@@ -311,6 +311,8 @@ static int llc_ui_bind(struct socket *sock, struct sockaddr *uaddr, int addrlen)
|
|
|
int rc = -EINVAL;
|
|
int rc = -EINVAL;
|
|
|
|
|
|
|
|
dprintk("%s: binding %02X\n", __func__, addr->sllc_sap);
|
|
dprintk("%s: binding %02X\n", __func__, addr->sllc_sap);
|
|
|
|
|
+
|
|
|
|
|
+ lock_sock(sk);
|
|
|
if (unlikely(!sock_flag(sk, SOCK_ZAPPED) || addrlen != sizeof(*addr)))
|
|
if (unlikely(!sock_flag(sk, SOCK_ZAPPED) || addrlen != sizeof(*addr)))
|
|
|
goto out;
|
|
goto out;
|
|
|
rc = -EAFNOSUPPORT;
|
|
rc = -EAFNOSUPPORT;
|
|
@@ -382,6 +384,7 @@ static int llc_ui_bind(struct socket *sock, struct sockaddr *uaddr, int addrlen)
|
|
|
out_put:
|
|
out_put:
|
|
|
llc_sap_put(sap);
|
|
llc_sap_put(sap);
|
|
|
out:
|
|
out:
|
|
|
|
|
+ release_sock(sk);
|
|
|
return rc;
|
|
return rc;
|
|
|
}
|
|
}
|
|
|
|
|
|