Commits
Suman Anna committed e5a9a772354
net/rpmsg: set error status on open sockets after recovery 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 rpmsg proto driver uses a single rpmsg_channel device published from a remote processor to transmit and receive all socket-based messages to/from that remote processor. A published rpmsg channel will be auto-removed and recreated if the associated remote processor goes through an error recovery process. Any existing open sockets (both Tx and Rx) are oblivious if the underlying rpmsg channel has been removed, and any further operations on such sockets can create a kernel crash (like on Tx sockets on send call) due to invalid pointer dereferences. This patch adds the error recovery support to the rpmsg-proto driver. A new error status (RPMSG_ERROR) is set on all these open sockets, so that the userspace can leverage this to perform appropriate cleanup or recovery steps. This new status is also useful in checking the valid state of a socket and preventing any kernel crashes. The logic is asymmetric because of the difference in usage of the underlying rpmsg channel device in each socket. All the Tx sockets use the one-time published rpmsg_channel devices for transmissions, while each of the Rx sockets have their own rpmsg_channel device for receiving messages. During error recovery, the virtio core also removes the devices created by the Rx sockets, while the open sockets themselves can be freed up anytime either by the userspace closing them or through an automatic close when the process is terminated/closed. Signed-off-by: Suman Anna <s-anna@ti.com>