mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
crypto: ccp - Check for CCP before registering crypto algs
If the ccp is built as a built-in module, then ccp-crypto (whether built as a module or a built-in module) will be able to load and it will register its crypto algorithms. If the system does not have a CCP this will result in -ENODEV being returned whenever a command is attempted to be queued by the registered crypto algorithms. Add an API, ccp_present(), that checks for the presence of a CCP on the system. The ccp-crypto module can use this to determine if it should register it's crypto alogorithms. Cc: [email protected] Reported-by: Scot Doyle <[email protected]> Signed-off-by: Tom Lendacky <[email protected]> Tested-by: Scot Doyle <[email protected]> Signed-off-by: Herbert Xu <[email protected]>
This commit is contained in:
parent
413e55742a
commit
c9f21cb638
3 changed files with 30 additions and 0 deletions
|
|
@ -367,6 +367,10 @@ static int ccp_crypto_init(void)
|
|||
{
|
||||
int ret;
|
||||
|
||||
ret = ccp_present();
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
spin_lock_init(&req_queue_lock);
|
||||
INIT_LIST_HEAD(&req_queue.cmds);
|
||||
req_queue.backlog = &req_queue.cmds;
|
||||
|
|
|
|||
|
|
@ -54,6 +54,20 @@ static inline void ccp_del_device(struct ccp_device *ccp)
|
|||
ccp_dev = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* ccp_present - check if a CCP device is present
|
||||
*
|
||||
* Returns zero if a CCP device is present, -ENODEV otherwise.
|
||||
*/
|
||||
int ccp_present(void)
|
||||
{
|
||||
if (ccp_get_device())
|
||||
return 0;
|
||||
|
||||
return -ENODEV;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ccp_present);
|
||||
|
||||
/**
|
||||
* ccp_enqueue_cmd - queue an operation for processing by the CCP
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in a new issue