Skip to contentSkip to conversation

vfio: vfio_group_get_from_dev() doesn't return error pointers

PATCH In review Dan Carpenter 2 participants 2 messages Nov 24, 2016 – Nov 28, 2016

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 vfio: vfio_group_get_from_dev() doesn't return error pointers

These are all checking for IS_ERR() but vfio_group_get_from_dev() returns NULL pointers on error.

Fixes c086de818dd8 ("vfio iommu: Add blocking notifier to notify DMA_UNMAP")
drivers/vfio/vfio.c +8 -8
index 0aac3ca..952e68c 100644
@@ -1933,8 +1933,8 @@ int vfio_pin_pages(struct device *dev, unsigned long *user_pfn, int npage,
 		return -E2BIG;
 
 	group = vfio_group_get_from_dev(dev);
-	if (IS_ERR(group))
-		return PTR_ERR(group);
+	if (!group)
+		return -EINVAL;
 
 	ret = vfio_group_add_container_user(group);
 	if (ret)
@@ -1982,8 +1982,8 @@ int vfio_unpin_pages(struct device *dev, unsigned long *user_pfn, int npage)
 		return -E2BIG;
 
 	group = vfio_group_get_from_dev(dev);
-	if (IS_ERR(group))
-		return PTR_ERR(group);
+	if (!group)
+		return -EINVAL;
 
 	ret = vfio_group_add_container_user(group);
 	if (ret)
@@ -2019,8 +2019,8 @@ int vfio_register_notifier(struct device *dev, struct notifier_block *nb)
 		return -EINVAL;
 
 	group = vfio_group_get_from_dev(dev);
-	if (IS_ERR(group))
-		return PTR_ERR(group);
+	if (!group)
+		return -EINVAL;
 
 	ret = vfio_group_add_container_user(group);
 	if (ret)
@@ -2055,8 +2055,8 @@ int vfio_unregister_notifier(struct device *dev, struct notifier_block *nb)
 		return -EINVAL;
 
 	group = vfio_group_get_from_dev(dev);
-	if (IS_ERR(group))
-		return PTR_ERR(group);
+	if (!group)
+		return -EINVAL;
 
 	ret = vfio_group_add_container_user(group);
 	if (ret)
#1 lore raw
Quoted 45 lines · Dan Carpenter

These are all checking for IS_ERR() but vfio_group_get_from_dev() returns NULL pointers on error.

Fixes c086de818dd8 ("vfio iommu: Add blocking notifier to notify DMA_UNMAP")
drivers/vfio/vfio.c +6 -6
index 0aac3ca..952e68c 100644
@@ -1933,8 +1933,8 @@ int vfio_pin_pages(struct device *dev, unsigned long *user_pfn, int npage,
 		return -E2BIG;
 
 	group = vfio_group_get_from_dev(dev);
-	if (IS_ERR(group))
-		return PTR_ERR(group);
+	if (!group)
+		return -EINVAL;
 
 	ret = vfio_group_add_container_user(group);
 	if (ret)
@@ -1982,8 +1982,8 @@ int vfio_unpin_pages(struct device *dev, unsigned long *user_pfn, int npage)
 		return -E2BIG;
 
 	group = vfio_group_get_from_dev(dev);
-	if (IS_ERR(group))
-		return PTR_ERR(group);
+	if (!group)
+		return -EINVAL;
 
 	ret = vfio_group_add_container_user(group);
 	if (ret)
@@ -2019,8 +2019,8 @@ int vfio_register_notifier(struct device *dev, struct notifier_block *nb)
 		return -EINVAL;
 
 	group = vfio_group_get_from_dev(dev);
-	if (IS_ERR(group))
-		return PTR_ERR(group);
+	if (!group)
+		return -EINVAL;
 
 	ret = vfio_group_add_container_user(group);
 	if (ret)
@@ -2055,8 +2055,8 @@ int vfio_unregister_notifier(struct device *dev, struct notifier_block *nb)
 		return -EINVAL;

drivers/vfio/vfio.c int vfio_unregister_notifier(struct device *dev, struct notifier_block *nb)

Quoted 10 lines
drivers/vfio/vfio.c +2 -3
 
 	group = vfio_group_get_from_dev(dev);
-	if (IS_ERR(group))
-		return PTR_ERR(group);
+	if (!group)
+		return -EINVAL;
 
 	ret = vfio_group_add_container_user(group);
 	if (ret)
--

This makes sense. Thanks for fixing this. Reviewed by: Kirti Wankhede <[email protected]>