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

Commit 3e21b231 authored by Sreelakshmi Gownipalli's avatar Sreelakshmi Gownipalli Committed by Gerrit - the friendly Code Review server
Browse files

diag: Read data from socket queue completely.



Read the data from sockets completely when there is data pending to be
read with valid packet length.

Change-Id: I5bf1de24ab378306ebe7edbad29998896d7cab08
Signed-off-by: default avatarSreelakshmi Gownipalli <sgownipa@codeaurora.org>
parent 171a12e7
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -656,10 +656,6 @@ static int diag_socket_read(void *ctxt, unsigned char *buf, int buf_len)
		read_msg.msg_name = &src_addr;
		read_msg.msg_namelen = sizeof(src_addr);

		spin_lock_irqsave(&info->lock, flags);
		info->data_ready--;
		spin_unlock_irqrestore(&info->lock, flags);

		err = kernel_sock_ioctl(info->hdl, TIOCINQ,
					(unsigned long)&pkt_len);
		if (err || pkt_len < 0)
@@ -670,6 +666,10 @@ static int diag_socket_read(void *ctxt, unsigned char *buf, int buf_len)
			break;
		}

		spin_lock_irqsave(&info->lock, flags);
		info->data_ready--;
		spin_unlock_irqrestore(&info->lock, flags);

		read_len = kernel_recvmsg(info->hdl, &read_msg, &iov, 1,
					  pkt_len, MSG_DONTWAIT);
		if (unlikely(read_len == -ENETRESET)) {