diff options
-rw-r--r-- | arch/powerpc/platforms/pseries/iommu.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c index 9f121a37eb51..5905a3b9f7e6 100644 --- a/arch/powerpc/platforms/pseries/iommu.c +++ b/arch/powerpc/platforms/pseries/iommu.c | |||
@@ -939,14 +939,14 @@ static u64 enable_ddw(struct pci_dev *dev, struct device_node *pdn) | |||
939 | if (ret) { | 939 | if (ret) { |
940 | dev_info(&dev->dev, "failed to map direct window for %s: %d\n", | 940 | dev_info(&dev->dev, "failed to map direct window for %s: %d\n", |
941 | dn->full_name, ret); | 941 | dn->full_name, ret); |
942 | goto out_clear_window; | 942 | goto out_free_window; |
943 | } | 943 | } |
944 | 944 | ||
945 | ret = prom_add_property(pdn, win64); | 945 | ret = prom_add_property(pdn, win64); |
946 | if (ret) { | 946 | if (ret) { |
947 | dev_err(&dev->dev, "unable to add dma window property for %s: %d", | 947 | dev_err(&dev->dev, "unable to add dma window property for %s: %d", |
948 | pdn->full_name, ret); | 948 | pdn->full_name, ret); |
949 | goto out_clear_window; | 949 | goto out_free_window; |
950 | } | 950 | } |
951 | 951 | ||
952 | window->device = pdn; | 952 | window->device = pdn; |
@@ -958,6 +958,9 @@ static u64 enable_ddw(struct pci_dev *dev, struct device_node *pdn) | |||
958 | dma_addr = of_read_number(&create.addr_hi, 2); | 958 | dma_addr = of_read_number(&create.addr_hi, 2); |
959 | goto out_unlock; | 959 | goto out_unlock; |
960 | 960 | ||
961 | out_free_window: | ||
962 | kfree(window); | ||
963 | |||
961 | out_clear_window: | 964 | out_clear_window: |
962 | remove_ddw(pdn); | 965 | remove_ddw(pdn); |
963 | 966 | ||