| From: Jason Wang <jasowang@redhat.com> |
| Date: Thu, 21 Jun 2018 13:11:31 +0800 |
| Subject: vhost_net: validate sock before trying to put its fd |
| |
| commit b8f1f65882f07913157c44673af7ec0b308d03eb upstream. |
| |
| Sock will be NULL if we pass -1 to vhost_net_set_backend(), but when |
| we meet errors during ubuf allocation, the code does not check for |
| NULL before calling sockfd_put(), this will lead NULL |
| dereferencing. Fixing by checking sock pointer before. |
| |
| Fixes: bab632d69ee4 ("vhost: vhost TX zero-copy support") |
| Reported-by: Dan Carpenter <dan.carpenter@oracle.com> |
| Signed-off-by: Jason Wang <jasowang@redhat.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/vhost/net.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/vhost/net.c |
| +++ b/drivers/vhost/net.c |
| @@ -983,7 +983,8 @@ err_used: |
| if (ubufs) |
| vhost_net_ubuf_put_wait_and_free(ubufs); |
| err_ubufs: |
| - sockfd_put(sock); |
| + if (sock) |
| + sockfd_put(sock); |
| err_vq: |
| mutex_unlock(&vq->mutex); |
| err: |