]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - samples/vfio-mdev/mtty.c
vfio-mdev: buffer overflow in ioctl()
[karo-tx-linux.git] / samples / vfio-mdev / mtty.c
index 975af5bbf28d3278ea0da5dc85d72264fc7b4216..382f4797428f5f7394694a71cde83040e6f571c4 100644 (file)
@@ -1073,7 +1073,7 @@ int mtty_get_region_info(struct mdev_device *mdev,
 {
        unsigned int size = 0;
        struct mdev_state *mdev_state;
-       int bar_index;
+       u32 bar_index;
 
        if (!mdev)
                return -EINVAL;
@@ -1082,8 +1082,11 @@ int mtty_get_region_info(struct mdev_device *mdev,
        if (!mdev_state)
                return -EINVAL;
 
-       mutex_lock(&mdev_state->ops_lock);
        bar_index = region_info->index;
+       if (bar_index >= VFIO_PCI_NUM_REGIONS)
+               return -EINVAL;
+
+       mutex_lock(&mdev_state->ops_lock);
 
        switch (bar_index) {
        case VFIO_PCI_CONFIG_REGION_INDEX: