]> git.baikalelectronics.ru Git - kernel.git/commit
vhost_net: fix OoB on sendmsg() failure.
authorPaolo Abeni <pabeni@redhat.com>
Wed, 8 Sep 2021 11:42:09 +0000 (13:42 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Sep 2021 10:26:41 +0000 (12:26 +0200)
commit5cb03c874b3ac85266888d4f998b121b238bb647
tree0f9dee7437635cae6f6b4b093fbe5fce021665d9
parenta05ae6ad2db36edf07a48c6cf661a6b2f8e67fa0
vhost_net: fix OoB on sendmsg() failure.

commit 3c4cea8fa7f71f00c5279547043a84bc2a4d8b8c upstream.

If the sendmsg() call in vhost_tx_batch() fails, both the 'batched_xdp'
and 'done_idx' indexes are left unchanged. If such failure happens
when batched_xdp == VHOST_NET_BATCH, the next call to
vhost_net_build_xdp() will access and write memory outside the xdp
buffers area.

Since sendmsg() can only error with EBADFD, this change addresses the
issue explicitly freeing the XDP buffers batch on error.

Fixes: 6a22c7284d78 ("vhost_net: batch submitting XDP buffers to underlayer sockets")
Suggested-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/vhost/net.c