in nsm-driver/nsm.c [666:707]
static int __init nsm_driver_init(void)
{
int rc;
mutex_init(&nsm_lock);
init_waitqueue_head(&nsm_waitqueue);
rc = misc_register(&nsm_driver_miscdevice);
if (rc) {
pr_err("NSM driver initialization error: %d.\n", rc);
return rc;
}
pr_debug("NSM driver version = 10.%d.\n",
NSM_DEV_MINOR);
nsm_dev = NULL;
rc = register_virtio_driver(&virtio_nsm_driver);
if (rc) {
pr_err("NSM driver initialization error: %d.\n", rc);
goto err_unreg_misc;
}
rc = hwrng_register(&nsm_hwrng);
if (rc) {
pr_err("NSM RNG initialization error: %d.\n", rc);
goto err_unreg_hwrng;
}
pr_debug("NSM device ID = %X.\n",
virtio_nsm_driver.id_table[0].device);
return rc;
err_unreg_hwrng:
hwrng_unregister(&nsm_hwrng);
err_unreg_misc:
misc_deregister(&nsm_driver_miscdevice);
nsm_dev = NULL;
return rc;
}