diff options
author | Jason Wang <jasowang@redhat.com> | 2013-01-28 02:05:18 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-01-29 21:43:03 +0100 |
commit | 2b8b328b61c799957a456a5a8dab8cc7dea68575 (patch) | |
tree | 7f782227156eb9aca1a0f3c9cd097e778bc8b7af /arch/avr32/mm/init.c | |
parent | vhost_net: correct error handling in vhost_net_set_backend() (diff) | |
download | linux-2b8b328b61c799957a456a5a8dab8cc7dea68575.tar.xz linux-2b8b328b61c799957a456a5a8dab8cc7dea68575.zip |
vhost_net: handle polling errors when setting backend
Currently, the polling errors were ignored, which can lead following issues:
- vhost remove itself unconditionally from waitqueue when stopping the poll,
this may crash the kernel since the previous attempt of starting may fail to
add itself to the waitqueue
- userspace may think the backend were successfully set even when the polling
failed.
Solve this by:
- check poll->wqh before trying to remove from waitqueue
- report polling errors in vhost_poll_start(), tx_poll_start(), the return value
will be checked and returned when userspace want to set the backend
After this fix, there still could be a polling failure after backend is set, it
will addressed by the next patch.
Signed-off-by: Jason Wang <jasowang@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/avr32/mm/init.c')
0 files changed, 0 insertions, 0 deletions