aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/xen/pvcalls-back.c
diff options
context:
space:
mode:
authorStefano Stabellini <sstabellini@kernel.org>2018-02-02 17:34:09 -0800
committerJuergen Gross <jgross@suse.com>2018-02-06 15:50:52 +0100
commit761191258839b7d922b83064c4251b8bd4e2e7c2 (patch)
tree87d37ef6b565a0f25dc1c9b73a8e818cc0c106f5 /drivers/xen/pvcalls-back.c
parentxen-netfront: Fix race between device setup and open (diff)
downloadlinux-dev-761191258839b7d922b83064c4251b8bd4e2e7c2.tar.xz
linux-dev-761191258839b7d922b83064c4251b8bd4e2e7c2.zip
pvcalls-back: do not return error on inet_accept EAGAIN
When the client sends a regular blocking accept request, the backend is expected to return only when the accept is completed, simulating a blocking behavior, or return an error. Specifically, on EAGAIN from inet_accept, the backend shouldn't return "EAGAIN" to the client. Instead, it should simply continue the wait. Otherwise, the client will send another accept request, which will cause another EAGAIN to be sent back, which is a waste of resources and not conforming to the expected behavior. Change the behavior by turning the "goto error" into a return. Signed-off-by: Stefano Stabellini <stefano@aporeto.com> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Signed-off-by: Juergen Gross <jgross@suse.com>
Diffstat (limited to 'drivers/xen/pvcalls-back.c')
-rw-r--r--drivers/xen/pvcalls-back.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/xen/pvcalls-back.c b/drivers/xen/pvcalls-back.c
index c7822d8078b9..156e5aea36db 100644
--- a/drivers/xen/pvcalls-back.c
+++ b/drivers/xen/pvcalls-back.c
@@ -548,7 +548,7 @@ static void __pvcalls_back_accept(struct work_struct *work)
ret = inet_accept(mappass->sock, sock, O_NONBLOCK, true);
if (ret == -EAGAIN) {
sock_release(sock);
- goto out_error;
+ return;
}
map = pvcalls_new_active_socket(fedata,