aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruce Allan <bruce.w.allan@intel.com>2014-10-15 14:33:15 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2014-10-24 10:49:37 -0400
commit8c4cef464b90b1638ff01a922d6a34095cc09c0c (patch)
tree7de1077263da5574206ee4fc77d5c054f8aeea4d
parent41a84982a1d728165554be3e2be845f2caf83b55 (diff)
crypto: qat - fix bad unlock balance
The mutex table_lock is unlocked in two functions without first being locked. Fix the functions to properly protect the accel_table with the table_lock. Also, fix a spelling error in one of the function's header comment. Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--drivers/crypto/qat/qat_common/adf_dev_mgr.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/crypto/qat/qat_common/adf_dev_mgr.c b/drivers/crypto/qat/qat_common/adf_dev_mgr.c
index ae71555c0868..4a0a829d4500 100644
--- a/drivers/crypto/qat/qat_common/adf_dev_mgr.c
+++ b/drivers/crypto/qat/qat_common/adf_dev_mgr.c
@@ -129,12 +129,13 @@ struct adf_accel_dev *adf_devmgr_get_first(void)
129 * Function returns acceleration device associated with the given pci device. 129 * Function returns acceleration device associated with the given pci device.
130 * To be used by QAT device specific drivers. 130 * To be used by QAT device specific drivers.
131 * 131 *
132 * Return: pinter to accel_dev or NULL if not found. 132 * Return: pointer to accel_dev or NULL if not found.
133 */ 133 */
134struct adf_accel_dev *adf_devmgr_pci_to_accel_dev(struct pci_dev *pci_dev) 134struct adf_accel_dev *adf_devmgr_pci_to_accel_dev(struct pci_dev *pci_dev)
135{ 135{
136 struct list_head *itr; 136 struct list_head *itr;
137 137
138 mutex_lock(&table_lock);
138 list_for_each(itr, &accel_table) { 139 list_for_each(itr, &accel_table) {
139 struct adf_accel_dev *ptr = 140 struct adf_accel_dev *ptr =
140 list_entry(itr, struct adf_accel_dev, list); 141 list_entry(itr, struct adf_accel_dev, list);
@@ -144,6 +145,7 @@ struct adf_accel_dev *adf_devmgr_pci_to_accel_dev(struct pci_dev *pci_dev)
144 return ptr; 145 return ptr;
145 } 146 }
146 } 147 }
148 mutex_unlock(&table_lock);
147 return NULL; 149 return NULL;
148} 150}
149EXPORT_SYMBOL_GPL(adf_devmgr_pci_to_accel_dev); 151EXPORT_SYMBOL_GPL(adf_devmgr_pci_to_accel_dev);
@@ -152,6 +154,7 @@ struct adf_accel_dev *adf_devmgr_get_dev_by_id(uint32_t id)
152{ 154{
153 struct list_head *itr; 155 struct list_head *itr;
154 156
157 mutex_lock(&table_lock);
155 list_for_each(itr, &accel_table) { 158 list_for_each(itr, &accel_table) {
156 struct adf_accel_dev *ptr = 159 struct adf_accel_dev *ptr =
157 list_entry(itr, struct adf_accel_dev, list); 160 list_entry(itr, struct adf_accel_dev, list);
@@ -161,6 +164,7 @@ struct adf_accel_dev *adf_devmgr_get_dev_by_id(uint32_t id)
161 return ptr; 164 return ptr;
162 } 165 }
163 } 166 }
167 mutex_unlock(&table_lock);
164 return NULL; 168 return NULL;
165} 169}
166 170