Hi On Fri, Apr 17, 2020 at 2:38 PM Sai Pavan Boddu <sai.pavan.bo...@xilinx.com> wrote: > > In tcp_chr_sync_read function, there is a possibility of socket > disconnection during read, then tcp_chr_hup function would clean up > the qio channel pointers(i.e ioc, sioc). > > Signed-off-by: Sai Pavan Boddu <sai.pavan.bo...@xilinx.com> > --- > chardev/char-socket.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/chardev/char-socket.c b/chardev/char-socket.c > index 185fe38..30f2b2b 100644 > --- a/chardev/char-socket.c > +++ b/chardev/char-socket.c > @@ -549,11 +549,13 @@ static int tcp_chr_sync_read(Chardev *chr, const > uint8_t *buf, int len) > > qio_channel_set_blocking(s->ioc, true, NULL); > size = tcp_chr_recv(chr, (void *) buf, len); > - qio_channel_set_blocking(s->ioc, false, NULL);
But here it calls tcp_chr_recv(). And I can't find cleanup there. Nevertheless, I think this patch should be harmless. I'd ask Daniel to have a second look. > if (size == 0) { > /* connection closed */ > tcp_chr_disconnect(chr); > + return 0; > } > + /* Connection is good */ > + qio_channel_set_blocking(s->ioc, false, NULL); > > return size; > } > -- > 2.7.4 > > -- Marc-André Lureau