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

Commit d1a75e08 authored by Stefano Stabellini's avatar Stefano Stabellini Committed by Juergen Gross
Browse files

pvcalls-front: wait for other operations to return when release passive sockets



Passive sockets can have ongoing operations on them, specifically, we
have two wait_event_interruptable calls in pvcalls_front_accept.

Add two wake_up calls in pvcalls_front_release, then wait for the
potential waiters to return and release the sock_mapping refcount.

Signed-off-by: default avatarStefano Stabellini <stefano@aporeto.com>
Acked-by: default avatarJuergen Gross <jgross@suse.com>
Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
parent 64d68718
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -1018,6 +1018,12 @@ int pvcalls_front_release(struct socket *sock)

		pvcalls_front_free_map(bedata, map);
	} else {
		wake_up(&bedata->inflight_req);
		wake_up(&map->passive.inflight_accept_req);

		while (atomic_read(&map->refcount) > 1)
			cpu_relax();

		spin_lock(&bedata->socket_lock);
		list_del(&map->list);
		spin_unlock(&bedata->socket_lock);