Re: [PATCH] vfio/mlx5: fix possible overflow in tracking max

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 30/06/2025 20:28, Alex Williamson wrote:
On Sun, 29 Jun 2025 09:58:43 +0000
Artem Sadovnikov <a.sadovnikov@xxxxxxxxx> wrote:

MLX cap pg_track_log_max_msg_size consists of 5 bits, value of which is
used as power of 2 for max_msg_size. This can lead to multiplication
overflow between max_msg_size (u32) and integer constant, and afterwards
incorrect value is being written to rq_size.

Fix this issue by extending max_msg_size up to u64 so multiplication will
be extended to u64.

Personally I'd go with changing the multiplier to 4ULL rather than
changing the storage size here, but let's wait for Yishai and Jason.
Thanks,

Alex


Yes, let's go with Alex's suggestion.

max_msg_size based on the CAP, can't be larger than u32.

Yishai

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Signed-off-by: Artem Sadovnikov <a.sadovnikov@xxxxxxxxx>
---
  drivers/vfio/pci/mlx5/cmd.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/vfio/pci/mlx5/cmd.c b/drivers/vfio/pci/mlx5/cmd.c
index 5b919a0b2524..0bdaf1d23a78 100644
--- a/drivers/vfio/pci/mlx5/cmd.c
+++ b/drivers/vfio/pci/mlx5/cmd.c
@@ -1503,7 +1503,7 @@ int mlx5vf_start_page_tracker(struct vfio_device *vdev,
  	struct mlx5_vhca_qp *fw_qp;
  	struct mlx5_core_dev *mdev;
  	u32 log_max_msg_size;
-	u32 max_msg_size;
+	u64 max_msg_size;
  	u64 rq_size = SZ_2M;
  	u32 max_recv_wr;
  	int err;






[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux