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

Commit 12e5bdfe authored by Samuel Ortiz's avatar Samuel Ortiz Committed by John W. Linville
Browse files

NFC: Fix LLCP getname socket op



Set the right target index and use a better socket declaration routine.

Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent 025f1520
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -283,22 +283,25 @@ static int llcp_sock_accept(struct socket *sock, struct socket *newsock,
	return ret;
}

static int llcp_sock_getname(struct socket *sock, struct sockaddr *addr,
static int llcp_sock_getname(struct socket *sock, struct sockaddr *uaddr,
			     int *len, int peer)
{
	struct sockaddr_nfc_llcp *llcp_addr = (struct sockaddr_nfc_llcp *)addr;
	struct sock *sk = sock->sk;
	struct nfc_llcp_sock *llcp_sock = nfc_llcp_sock(sk);
	DECLARE_SOCKADDR(struct sockaddr_nfc_llcp *, llcp_addr, uaddr);

	pr_debug("%p\n", sk);
	pr_debug("%p %d %d %d\n", sk, llcp_sock->target_idx,
		 llcp_sock->dsap, llcp_sock->ssap);

	if (llcp_sock == NULL || llcp_sock->dev == NULL)
		return -EBADFD;

	addr->sa_family = AF_NFC;
	uaddr->sa_family = AF_NFC;

	*len = sizeof(struct sockaddr_nfc_llcp);

	llcp_addr->dev_idx = llcp_sock->dev->idx;
	llcp_addr->target_idx = llcp_sock->target_idx;
	llcp_addr->dsap = llcp_sock->dsap;
	llcp_addr->ssap = llcp_sock->ssap;
	llcp_addr->service_name_len = llcp_sock->service_name_len;