rptun: handle uint16_t overflow

Signed-off-by: ligd <liguiding1@xiaomi.com>
This commit is contained in:
ligd 2022-05-11 22:44:53 +08:00 committed by Xiang Xiao
parent e368ce6c07
commit c2c1358fc7

View File

@ -1262,15 +1262,15 @@ int rptun_panic(FAR const char *cpuname)
int rptun_buffer_nused(FAR struct rpmsg_virtio_device *rvdev, bool rx)
{
FAR struct virtqueue *vq = rx ? rvdev->rvq : rvdev->svq;
uint16_t nused = vq->vq_ring.avail->idx - vq->vq_ring.used->idx;
if ((rpmsg_virtio_get_role(rvdev) == RPMSG_MASTER) ^ rx)
{
return vq->vq_ring.avail->idx - vq->vq_ring.used->idx;
return nused;
}
else
{
return vq->vq_nentries -
(vq->vq_ring.avail->idx - vq->vq_ring.used->idx);
return vq->vq_nentries - nused;
}
}