/*
- * Copyright (c) 2015-2017, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
size_t len;
struct list_head list;
struct mutex clk_lock;
+ struct mutex dev_lock;
unsigned int clk_count;
};
ssize_t retval = -EINVAL;
int val;
+ mutex_lock(&ddev->dev_lock);
if (kstrtoint_from_user(ubuf, count, 0, &val)) {
pr_err("Invalid format. Expected a hex or decimal integer");
retval = -EFAULT;
arm_iommu_release_mapping(dev->archdata.mapping);
pr_err("Detached\n");
}
+ mutex_unlock(&ddev->dev_lock);
retval = count;
return retval;
out_release_mapping:
arm_iommu_release_mapping(dma_mapping);
out:
+ mutex_unlock(&ddev->dev_lock);
return retval;
}
ssize_t retval;
int val;
+ mutex_lock(&ddev->dev_lock);
if (kstrtoint_from_user(ubuf, count, 0, &val)) {
pr_err("Invalid format. Expected a hex or decimal integer");
retval = -EFAULT;
retval = count;
out:
+ mutex_unlock(&ddev->dev_lock);
return retval;
}
if (!ddev)
return -ENODEV;
mutex_init(&ddev->clk_lock);
+ mutex_init(&ddev->dev_lock);
ddev->dev = dev;
dir = debugfs_create_dir(name, debugfs_tests_dir);
if (!dir) {