Merge commit 'v2.6.35-rc1' into amd-iommu/2.6.35
authorJoerg Roedel <joerg.roedel@amd.com>
Tue, 1 Jun 2010 07:57:49 +0000 (09:57 +0200)
committerJoerg Roedel <joerg.roedel@amd.com>
Tue, 1 Jun 2010 07:57:49 +0000 (09:57 +0200)
arch/x86/kernel/amd_iommu.c

index fa5a147..8a9aaa8 100644 (file)
@@ -1487,6 +1487,7 @@ static int __attach_device(struct device *dev,
                           struct protection_domain *domain)
 {
        struct iommu_dev_data *dev_data, *alias_data;
+       int ret;
 
        dev_data   = get_dev_data(dev);
        alias_data = get_dev_data(dev_data->alias);
@@ -1498,13 +1499,14 @@ static int __attach_device(struct device *dev,
        spin_lock(&domain->lock);
 
        /* Some sanity checks */
+       ret = -EBUSY;
        if (alias_data->domain != NULL &&
            alias_data->domain != domain)
-               return -EBUSY;
+               goto out_unlock;
 
        if (dev_data->domain != NULL &&
            dev_data->domain != domain)
-               return -EBUSY;
+               goto out_unlock;
 
        /* Do real assignment */
        if (dev_data->alias != dev) {
@@ -1520,10 +1522,14 @@ static int __attach_device(struct device *dev,
 
        atomic_inc(&dev_data->bind);
 
+       ret = 0;
+
+out_unlock:
+
        /* ready */
        spin_unlock(&domain->lock);
 
-       return 0;
+       return ret;
 }
 
 /*