Commit 8c4cef46 authored by Bruce Allan's avatar Bruce Allan Committed by Herbert Xu

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: default avatarBruce Allan <bruce.w.allan@intel.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 41a84982
...@@ -129,12 +129,13 @@ struct adf_accel_dev *adf_devmgr_get_first(void) ...@@ -129,12 +129,13 @@ struct adf_accel_dev *adf_devmgr_get_first(void)
* Function returns acceleration device associated with the given pci device. * Function returns acceleration device associated with the given pci device.
* To be used by QAT device specific drivers. * To be used by QAT device specific drivers.
* *
* Return: pinter to accel_dev or NULL if not found. * Return: pointer to accel_dev or NULL if not found.
*/ */
struct adf_accel_dev *adf_devmgr_pci_to_accel_dev(struct pci_dev *pci_dev) struct adf_accel_dev *adf_devmgr_pci_to_accel_dev(struct pci_dev *pci_dev)
{ {
struct list_head *itr; struct list_head *itr;
mutex_lock(&table_lock);
list_for_each(itr, &accel_table) { list_for_each(itr, &accel_table) {
struct adf_accel_dev *ptr = struct adf_accel_dev *ptr =
list_entry(itr, struct adf_accel_dev, list); 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,6 +145,7 @@ struct adf_accel_dev *adf_devmgr_pci_to_accel_dev(struct pci_dev *pci_dev)
return ptr; return ptr;
} }
} }
mutex_unlock(&table_lock);
return NULL; return NULL;
} }
EXPORT_SYMBOL_GPL(adf_devmgr_pci_to_accel_dev); 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,6 +154,7 @@ struct adf_accel_dev *adf_devmgr_get_dev_by_id(uint32_t id)
{ {
struct list_head *itr; struct list_head *itr;
mutex_lock(&table_lock);
list_for_each(itr, &accel_table) { list_for_each(itr, &accel_table) {
struct adf_accel_dev *ptr = struct adf_accel_dev *ptr =
list_entry(itr, struct adf_accel_dev, list); 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,6 +164,7 @@ struct adf_accel_dev *adf_devmgr_get_dev_by_id(uint32_t id)
return ptr; return ptr;
} }
} }
mutex_unlock(&table_lock);
return NULL; return NULL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment