diff options
author | Bruce Allan <bruce.w.allan@intel.com> | 2014-10-15 14:33:15 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2014-10-24 10:49:37 -0400 |
commit | 8c4cef464b90b1638ff01a922d6a34095cc09c0c (patch) | |
tree | 7de1077263da5574206ee4fc77d5c054f8aeea4d /drivers/crypto/qat/qat_common | |
parent | 41a84982a1d728165554be3e2be845f2caf83b55 (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>
Diffstat (limited to 'drivers/crypto/qat/qat_common')
-rw-r--r-- | drivers/crypto/qat/qat_common/adf_dev_mgr.c | 6 |
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 | */ |
134 | struct adf_accel_dev *adf_devmgr_pci_to_accel_dev(struct pci_dev *pci_dev) | 134 | struct 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 | } |
149 | EXPORT_SYMBOL_GPL(adf_devmgr_pci_to_accel_dev); | 151 | EXPORT_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 | ||