> -----Original Message----- > From: Maxime Coquelin <[email protected]> > Sent: Thursday, March 25, 2021 4:32 PM > To: Ilya Maximets <[email protected]> > Cc: Xia, Chenbo <[email protected]>; [email protected]; Adrian Moreno > <[email protected]>; Stefan Hajnoczi <[email protected]>; Julia Suvorova > <[email protected]>; [email protected]; Yang, Zhiyong <[email protected]> > Subject: Re: [PATCH 1/4] net/virtio: fix interrupt unregistering for listening > socket > > > > On 3/17/21 9:25 PM, Ilya Maximets wrote: > > virtio_user_dev_server_reconnect() is typically called from the > > interrupt context while checking the link state: > > > > vhost_user_update_link_state() > > --> virtio_user_dev_server_reconnect() > > > > Under this conditions callback unregistering always fails. This means > > that listenfd is never unregistered and continue to trigger interrupts. > > For example, if second client will try to connect to the same socket, > > the server will receive interrupts infinitely because it will not > > accept them while listen fd is readable and generates epoll events. > > > > Fix that by moving reconfiguration of interrupts out of the > > interrupt context to alarm handler. > > > > 'virtio_user_dev_delayed_handler' renamed to > > 'virtio_user_dev_delayed_disconnect_handler' to better reflect its > > purpose. > > > > Additionally improved error logging around interrupt management. > > > > Fixes: bd8f50a45d0f ("net/virtio-user: support server mode") > > Cc: [email protected] > > > > Signed-off-by: Ilya Maximets <[email protected]> > > --- > > > > CC: Zhiyong Yang <[email protected]> > > > > drivers/net/virtio/virtio_user/vhost_user.c | 4 +- > > .../net/virtio/virtio_user/virtio_user_dev.c | 70 ++++++++++++++----- > > .../net/virtio/virtio_user/virtio_user_dev.h | 2 +- > > 3 files changed, 57 insertions(+), 19 deletions(-) > > > > Reviewed-by: Maxime Coquelin <[email protected]> > > Thanks, > Maxime
This patch is applied to next-virtio/main with below fix: In virtio_user_dev_delayed_intr_reconfig_handler, change 'dev->port_id' to 'dev->hw.port_id' Thanks

