From c2c1358fc7c47714b74cc3fb4e0cf45526252211 Mon Sep 17 00:00:00 2001 From: ligd Date: Wed, 11 May 2022 22:44:53 +0800 Subject: [PATCH] rptun: handle uint16_t overflow Signed-off-by: ligd --- drivers/rptun/rptun.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/rptun/rptun.c b/drivers/rptun/rptun.c index 3a0bf76dc7..61fc4782ad 100644 --- a/drivers/rptun/rptun.c +++ b/drivers/rptun/rptun.c @@ -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; } }