]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
uio: pci_sva: correct '-ENODEV' check logic
authorHaiyue Wang <haiyuewa@163.com>
Fri, 9 Jan 2026 17:54:25 +0000 (01:54 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 16 Jan 2026 15:43:43 +0000 (16:43 +0100)
The current '-ENODEV' check uses '&&', which can lead to a NULL pointer
dereference when udev is NULL.

Fix the condition to return -ENODEV if either udev or its pdev is NULL.

Fixes: 3397c3cd859a ("uio: Add SVA support for PCI devices via uio_pci_generic_sva.c")
Signed-off-by: Haiyue Wang <haiyuewa@163.com>
Link: https://patch.msgid.link/20260109175448.34309-1-haiyuewa@163.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/uio/uio_pci_generic_sva.c

index 97e9ab9a081af3aeefd12d3e6d2c51b24d934e2e..4a46acd994a85d38d9c732e0ae58cd5a0c94342b 100644 (file)
@@ -29,7 +29,7 @@ static int uio_pci_sva_open(struct uio_info *info, struct inode *inode)
        struct uio_pci_sva_dev *udev = info->priv;
        struct iommu_domain *domain;
 
-       if (!udev && !udev->pdev)
+       if (!udev || !udev->pdev)
                return -ENODEV;
 
        domain = iommu_get_domain_for_dev(&udev->pdev->dev);
@@ -51,7 +51,7 @@ static int uio_pci_sva_release(struct uio_info *info, struct inode *inode)
 {
        struct uio_pci_sva_dev *udev = info->priv;
 
-       if (!udev && !udev->pdev)
+       if (!udev || !udev->pdev)
                return -ENODEV;
 
        iommu_sva_unbind_device(udev->sva_handle);