Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 74eda55d authored by Dmitry Eremin-Solenikov's avatar Dmitry Eremin-Solenikov Committed by David S. Miller
Browse files

af_ieee802154: minor cleanup in dgram_bind



1) fix ro->bound protection by socket lock
2) make ro->bound bit instead of int

Signed-off-by: default avatarDmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8e753dd0
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -40,9 +40,10 @@ static DEFINE_RWLOCK(dgram_lock);
struct dgram_sock {
	struct sock sk;

	int bound;
	struct ieee802154_addr src_addr;
	struct ieee802154_addr dst_addr;

	unsigned bound:1;
};

static inline struct dgram_sock *dgram_sk(const struct sock *sk)
@@ -86,18 +87,18 @@ static int dgram_bind(struct sock *sk, struct sockaddr *uaddr, int len)
{
	struct sockaddr_ieee802154 *addr = (struct sockaddr_ieee802154 *)uaddr;
	struct dgram_sock *ro = dgram_sk(sk);
	int err = 0;
	int err = -EINVAL;
	struct net_device *dev;

	lock_sock(sk);

	ro->bound = 0;

	if (len < sizeof(*addr))
		return -EINVAL;
		goto out;

	if (addr->family != AF_IEEE802154)
		return -EINVAL;

	lock_sock(sk);
		goto out;

	dev = ieee802154_get_dev(sock_net(sk), &addr->addr);
	if (!dev) {
@@ -113,6 +114,7 @@ static int dgram_bind(struct sock *sk, struct sockaddr *uaddr, int len)
	memcpy(&ro->src_addr, &addr->addr, sizeof(struct ieee802154_addr));

	ro->bound = 1;
	err = 0;
out_put:
	dev_put(dev);
out: