virtio/vsock: check argument to avoid no effect call

Both of these functions have no effect when input argument is 0, so to
avoid useless spinlock access, check argument before it.

Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
Arseniy Krasnov 2023-03-26 01:04:50 +03:00 коммит произвёл Paolo Abeni
Родитель b68ffb1b3b
Коммит e3ec366eb0
1 изменённых файлов: 6 добавлений и 0 удалений

Просмотреть файл

@ -302,6 +302,9 @@ u32 virtio_transport_get_credit(struct virtio_vsock_sock *vvs, u32 credit)
{ {
u32 ret; u32 ret;
if (!credit)
return 0;
spin_lock_bh(&vvs->tx_lock); spin_lock_bh(&vvs->tx_lock);
ret = vvs->peer_buf_alloc - (vvs->tx_cnt - vvs->peer_fwd_cnt); ret = vvs->peer_buf_alloc - (vvs->tx_cnt - vvs->peer_fwd_cnt);
if (ret > credit) if (ret > credit)
@ -315,6 +318,9 @@ EXPORT_SYMBOL_GPL(virtio_transport_get_credit);
void virtio_transport_put_credit(struct virtio_vsock_sock *vvs, u32 credit) void virtio_transport_put_credit(struct virtio_vsock_sock *vvs, u32 credit)
{ {
if (!credit)
return;
spin_lock_bh(&vvs->tx_lock); spin_lock_bh(&vvs->tx_lock);
vvs->tx_cnt -= credit; vvs->tx_cnt -= credit;
spin_unlock_bh(&vvs->tx_lock); spin_unlock_bh(&vvs->tx_lock);