Message ID | 20231211162317.4116625-1-kniv@yandex-team.ru (mailing list archive) |
---|---|
State | Accepted |
Commit | 60316d7f10b17a7ebb1ead0642fee8710e1560e0 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [v2] vsock/virtio: Fix unsigned integer wrap around in virtio_transport_has_space() | expand |
On Mon, Dec 11, 2023 at 07:23:17PM +0300, Nikolay Kuratov wrote: >We need to do signed arithmetic if we expect condition >`if (bytes < 0)` to be possible > >Found by Linux Verification Center (linuxtesting.org) with SVACE > >Fixes: 06a8fc78367d ("VSOCK: Introduce virtio_vsock_common.ko") >Signed-off-by: Nikolay Kuratov <kniv@yandex-team.ru> >--- > >V1 -> V2: Added Fixes section Please, next time carry also R-b tags. > > net/vmw_vsock/virtio_transport_common.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> Thanks, Stefano > >diff --git a/net/vmw_vsock/virtio_transport_common.c b/net/vmw_vsock/virtio_transport_common.c >index c8e162c9d1df..6df246b53260 100644 >--- a/net/vmw_vsock/virtio_transport_common.c >+++ b/net/vmw_vsock/virtio_transport_common.c >@@ -843,7 +843,7 @@ static s64 virtio_transport_has_space(struct vsock_sock *vsk) > struct virtio_vsock_sock *vvs = vsk->trans; > s64 bytes; > >- bytes = vvs->peer_buf_alloc - (vvs->tx_cnt - vvs->peer_fwd_cnt); >+ bytes = (s64)vvs->peer_buf_alloc - (vvs->tx_cnt - vvs->peer_fwd_cnt); > if (bytes < 0) > bytes = 0; > >-- >2.34.1 > >
Hello: This patch was applied to netdev/net.git (main) by Jakub Kicinski <kuba@kernel.org>: On Mon, 11 Dec 2023 19:23:17 +0300 you wrote: > We need to do signed arithmetic if we expect condition > `if (bytes < 0)` to be possible > > Found by Linux Verification Center (linuxtesting.org) with SVACE > > Fixes: 06a8fc78367d ("VSOCK: Introduce virtio_vsock_common.ko") > Signed-off-by: Nikolay Kuratov <kniv@yandex-team.ru> > > [...] Here is the summary with links: - [v2] vsock/virtio: Fix unsigned integer wrap around in virtio_transport_has_space() https://git.kernel.org/netdev/net/c/60316d7f10b1 You are awesome, thank you!
diff --git a/net/vmw_vsock/virtio_transport_common.c b/net/vmw_vsock/virtio_transport_common.c index c8e162c9d1df..6df246b53260 100644 --- a/net/vmw_vsock/virtio_transport_common.c +++ b/net/vmw_vsock/virtio_transport_common.c @@ -843,7 +843,7 @@ static s64 virtio_transport_has_space(struct vsock_sock *vsk) struct virtio_vsock_sock *vvs = vsk->trans; s64 bytes; - bytes = vvs->peer_buf_alloc - (vvs->tx_cnt - vvs->peer_fwd_cnt); + bytes = (s64)vvs->peer_buf_alloc - (vvs->tx_cnt - vvs->peer_fwd_cnt); if (bytes < 0) bytes = 0;
We need to do signed arithmetic if we expect condition `if (bytes < 0)` to be possible Found by Linux Verification Center (linuxtesting.org) with SVACE Fixes: 06a8fc78367d ("VSOCK: Introduce virtio_vsock_common.ko") Signed-off-by: Nikolay Kuratov <kniv@yandex-team.ru> --- V1 -> V2: Added Fixes section net/vmw_vsock/virtio_transport_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)