mlx5_db_free(ndev->mvdev.mdev, &vcq->db);
 }
 
-static int umem_size(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_virtqueue *mvq, int num,
-                    struct mlx5_vdpa_umem **umemp)
+static void set_umem_size(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_virtqueue *mvq, int num,
+                         struct mlx5_vdpa_umem **umemp)
 {
        struct mlx5_core_dev *mdev = ndev->mvdev.mdev;
        int p_a;
                *umemp = &mvq->umem3;
                break;
        }
-       return p_a * mvq->num_ent + p_b;
+       (*umemp)->size = p_a * mvq->num_ent + p_b;
 }
 
 static void umem_frag_buf_free(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_umem *umem)
        void *in;
        int err;
        __be64 *pas;
-       int size;
        struct mlx5_vdpa_umem *umem;
 
-       size = umem_size(ndev, mvq, num, &umem);
-       if (size < 0)
-               return size;
-
-       umem->size = size;
-       err = umem_frag_buf_alloc(ndev, umem, size);
+       set_umem_size(ndev, mvq, num, &umem);
+       err = umem_frag_buf_alloc(ndev, umem, umem->size);
        if (err)
                return err;