Commits
Suman Anna committed e90fa6b23e1
net/rpmsg: unblock reader threads operating on errored sockets The rpmsg_proto driver is used to provide a socket interface to userspace under the AF_RPMSG address family, and is used by the TI IPC MessageQ stack. The typical usage for receiving messages include a thread blocked on a select() call with appropriate socket fds, followed by a recvfrom() on the fd returned/marked ready by select(). The rpmsg_sock_poll() function implements the logic needed by the select() call, and marks a socket ready only when there is data to be read currently. Any reader thread waiting on the select() call to return is currently not unblocked when a remote processor goes through an error recovery, and can remain blocked forever as its remote processor peer thread may never send it another message. Enhance the rpmsg_proto driver so that a waiting thread can be unblocked by waking it up during the process of marking the open sockets with the error status RPMSG_ERROR. This is achieved by using the socket's .sk_error_report() ops, and is preferred over the .sk_state_change() ops to wakeup only a single exclusive thread. Signed-off-by: Suman Anna <s-anna@ti.com>