[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v2 0/4] slirp: deliver received TCP RSTs to the gues

From: Steven Luo
Subject: [Qemu-devel] [PATCH v2 0/4] slirp: deliver received TCP RSTs to the guest
Date: Wed, 6 Apr 2016 22:04:09 -0700
User-agent: Mutt/1.5.23 (2014-03-12)

Changes from v1:

* added patch 2, a fix for an use-after-free exposed by this series
  (thanks Samuel Thibault)
* incorporated Reviewed-by lines
* attributed patches correctly

-Steven Luo


QEMU's user-mode networking does not currently pass received TCP RSTs to
guests, meaning that applications in guests hang if the remote server
rejects their network connections.  This is particularly noticeable when
IPv6 is enabled, the guest is configured to prefer IPv6 and the remote
server rejects IPv6 connections (segment-data.zqtk.net is one example),
but the bug appears to be longstanding and affects TCP over IPv4 as

There are four short patches in this series.  The first and second fix
crashes which would be exposed by the rest of the series.  The third,
which fixes delivery of an RST interrupting an already-established TCP
connection, was submitted by Edgar Iglesias in 2008 and appears to have
been missed then.  The last patch fixes the case where the remote end
sends RST in reply to our SYN (rejects our incoming connection attempt).

Lightly tested on a Linux host with Linux and Windows 7 guests.

Edgar E. Iglesias (1):
  slirp: Propagate host TCP RST to the guest.

Steven Luo (3):
  slirp: don't crash when tcp_sockclosed() is called with a NULL tp
  slirp: avoid use-after-free in slirp_pollfds_poll() if soread()
    returns an error
  slirp: handle deferred ECONNREFUSED on non-blocking TCP sockets

 slirp/slirp.c     | 12 +++++++++++-
 slirp/socket.c    | 34 +++++++++++++++++++++++++++-------
 slirp/socket.h    |  2 +-
 slirp/tcp_input.c |  6 ++++++
 slirp/tcp_subr.c  |  7 +++++--
 5 files changed, 50 insertions(+), 11 deletions(-)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]