The branch main has been updated by markj:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=ae1dc27639c88038d150660c4096753e210aec42

commit ae1dc27639c88038d150660c4096753e210aec42
Author:     Hareshx Sankar Raj <hareshx.sankar....@intel.com>
AuthorDate: 2025-05-07 09:32:10 +0000
Commit:     Mark Johnston <ma...@freebsd.org>
CommitDate: 2025-06-06 13:49:51 +0000

    qat: refactor error handling and add mutex locks
    
    Error handling in qat driver code has been refactored.
    Mutex lock handling has also been added during driver
    attach and detach. Also pci_disable_busmaster() is called in
    adf_detach() to ensure proper cleanup during device detachment.
    
    Reviewed by:    markj, ziaee
    MFC after:      2 weeks
    Sponsored by:   Intel Corporation
    Differential Revision:  https://reviews.freebsd.org/D50379
---
 sys/dev/qat/qat_common/adf_init.c         | 13 -------------
 sys/dev/qat/qat_hw/qat_200xx/adf_drv.c    | 23 +++++++++++++++++------
 sys/dev/qat/qat_hw/qat_4xxx/adf_drv.c     | 23 +++++++++++++++++------
 sys/dev/qat/qat_hw/qat_4xxxvf/adf_drv.c   | 22 ++++++++++++++++++----
 sys/dev/qat/qat_hw/qat_c3xxx/adf_drv.c    | 23 +++++++++++++++++------
 sys/dev/qat/qat_hw/qat_c4xxx/adf_drv.c    | 23 +++++++++++++++++------
 sys/dev/qat/qat_hw/qat_c62x/adf_drv.c     | 23 +++++++++++++++++------
 sys/dev/qat/qat_hw/qat_dh895xcc/adf_drv.c | 24 ++++++++++++++++++------
 8 files changed, 121 insertions(+), 53 deletions(-)

diff --git a/sys/dev/qat/qat_common/adf_init.c 
b/sys/dev/qat/qat_common/adf_init.c
index 6bd0d85aae69..a7ebb70dde3d 100644
--- a/sys/dev/qat/qat_common/adf_init.c
+++ b/sys/dev/qat/qat_common/adf_init.c
@@ -449,12 +449,6 @@ adf_dev_start_locked(struct adf_accel_dev *accel_dev)
        struct list_head *list_itr;
 
        set_bit(ADF_STATUS_STARTING, &accel_dev->status);
-       if (adf_devmgr_verify_id(&accel_dev->accel_id)) {
-               device_printf(GET_DEV(accel_dev),
-                             "QAT: Device %d not found\n",
-                             accel_dev->accel_id);
-               return ENODEV;
-       }
        if (adf_ae_start(accel_dev)) {
                device_printf(GET_DEV(accel_dev), "AE Start Failed\n");
                return EFAULT;
@@ -556,13 +550,6 @@ adf_dev_stop_locked(struct adf_accel_dev *accel_dev)
        struct service_hndl *service;
        struct list_head *list_itr;
 
-       if (adf_devmgr_verify_id(&accel_dev->accel_id)) {
-               device_printf(GET_DEV(accel_dev),
-                             "QAT: Device %d not found\n",
-                             accel_dev->accel_id);
-               return ENODEV;
-       }
-
        if (!test_bit(ADF_STATUS_CONFIGURED, &accel_dev->status))
                return 0;
 
diff --git a/sys/dev/qat/qat_hw/qat_200xx/adf_drv.c 
b/sys/dev/qat/qat_hw/qat_200xx/adf_drv.c
index 9e2462c05657..816010dc06f8 100644
--- a/sys/dev/qat/qat_hw/qat_200xx/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_200xx/adf_drv.c
@@ -84,7 +84,7 @@ adf_attach(device_t dev)
        struct adf_accel_pci *accel_pci_dev;
        struct adf_hw_device_data *hw_data;
        unsigned int i = 0, bar_nr = 0, reg_val = 0;
-       int ret, rid;
+       int ret = 0, rid;
        struct adf_cfg_device *cfg_dev = NULL;
 
        /* Set pci MaxPayLoad to 256. Implemented to avoid the issue of
@@ -96,6 +96,7 @@ adf_attach(device_t dev)
 
        accel_dev = device_get_softc(dev);
 
+       mutex_init(&accel_dev->lock);
        INIT_LIST_HEAD(&accel_dev->crypto_list);
        accel_pci_dev = &accel_dev->accel_pci_dev;
        accel_pci_dev->pci_dev = dev;
@@ -108,9 +109,10 @@ adf_attach(device_t dev)
        /* Add accel device to accel table.
         * This should be called before adf_cleanup_accel is called
         */
-       if (adf_devmgr_add_dev(accel_dev, NULL)) {
+       ret = adf_devmgr_add_dev(accel_dev, NULL);
+       if (ret) {
                device_printf(dev, "Failed to add new accelerator device.\n");
-               return ENXIO;
+               goto out_err_lock;
        }
 
        /* Allocate and configure device configuration structure */
@@ -213,18 +215,20 @@ adf_attach(device_t dev)
                bar->base_addr = rman_get_start(bar->virt_addr);
                bar->size = rman_get_size(bar->virt_addr);
        }
-       pci_enable_busmaster(dev);
+       ret = pci_enable_busmaster(dev);
+       if (ret)
+               goto out_err;
 
        adf_dbgfs_init(accel_dev);
 
        if (!accel_dev->hw_device->config_device) {
                ret = EFAULT;
-               goto out_err;
+               goto out_err_disable;
        }
 
        ret = accel_dev->hw_device->config_device(accel_dev);
        if (ret)
-               goto out_err;
+               goto out_err_disable;
 
        ret = adf_dev_init(accel_dev);
        if (ret)
@@ -243,8 +247,13 @@ out_dev_stop:
        adf_dev_stop(accel_dev);
 out_dev_shutdown:
        adf_dev_shutdown(accel_dev);
+out_err_disable:
+       pci_disable_busmaster(dev);
 out_err:
        adf_cleanup_accel(accel_dev);
+out_err_lock:
+       mutex_destroy(&accel_dev->lock);
+
        return ret;
 }
 
@@ -260,7 +269,9 @@ adf_detach(device_t dev)
 
        adf_dev_shutdown(accel_dev);
 
+       pci_disable_busmaster(dev);
        adf_cleanup_accel(accel_dev);
+       mutex_destroy(&accel_dev->lock);
 
        return 0;
 }
diff --git a/sys/dev/qat/qat_hw/qat_4xxx/adf_drv.c 
b/sys/dev/qat/qat_hw/qat_4xxx/adf_drv.c
index 0813ccf5baf0..cb534dd03b86 100644
--- a/sys/dev/qat/qat_hw/qat_4xxx/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_4xxx/adf_drv.c
@@ -158,7 +158,7 @@ adf_attach(device_t dev)
        struct adf_accel_pci *accel_pci_dev;
        struct adf_hw_device_data *hw_data;
        unsigned int bar_nr;
-       int ret, rid;
+       int ret = 0, rid;
        struct adf_cfg_device *cfg_dev = NULL;
 
        /* Set pci MaxPayLoad to 512. Implemented to avoid the issue of
@@ -170,6 +170,7 @@ adf_attach(device_t dev)
 
        accel_dev = device_get_softc(dev);
 
+       mutex_init(&accel_dev->lock);
        INIT_LIST_HEAD(&accel_dev->crypto_list);
        accel_pci_dev = &accel_dev->accel_pci_dev;
        accel_pci_dev->pci_dev = dev;
@@ -180,9 +181,10 @@ adf_attach(device_t dev)
        /* Add accel device to accel table.
         * This should be called before adf_cleanup_accel is called
         */
-       if (adf_devmgr_add_dev(accel_dev, NULL)) {
+       ret = adf_devmgr_add_dev(accel_dev, NULL);
+       if (ret) {
                device_printf(dev, "Failed to add new accelerator device.\n");
-               return ENXIO;
+               goto out_err_lock;
        }
 
        /* Allocate and configure device configuration structure */
@@ -273,18 +275,20 @@ adf_attach(device_t dev)
                bar->base_addr = rman_get_start(bar->virt_addr);
                bar->size = rman_get_size(bar->virt_addr);
        }
-       pci_enable_busmaster(dev);
+       ret = pci_enable_busmaster(dev);
+       if (ret)
+               goto out_err;
 
        adf_dbgfs_init(accel_dev);
 
        if (!accel_dev->hw_device->config_device) {
                ret = EFAULT;
-               goto out_err;
+               goto out_err_disable;
        }
 
        ret = accel_dev->hw_device->config_device(accel_dev);
        if (ret)
-               goto out_err;
+               goto out_err_disable;
 
        ret = adf_dev_init(accel_dev);
        if (ret)
@@ -303,8 +307,13 @@ out_dev_stop:
        adf_dev_stop(accel_dev);
 out_dev_shutdown:
        adf_dev_shutdown(accel_dev);
+out_err_disable:
+       pci_disable_busmaster(dev);
 out_err:
        adf_cleanup_accel(accel_dev);
+out_err_lock:
+       mutex_destroy(&accel_dev->lock);
+
        return ret;
 }
 
@@ -320,7 +329,9 @@ adf_detach(device_t dev)
 
        adf_dev_shutdown(accel_dev);
 
+       pci_disable_busmaster(dev);
        adf_cleanup_accel(accel_dev);
+       mutex_destroy(&accel_dev->lock);
 
        return 0;
 }
diff --git a/sys/dev/qat/qat_hw/qat_4xxxvf/adf_drv.c 
b/sys/dev/qat/qat_hw/qat_4xxxvf/adf_drv.c
index 42189c28b21a..2bbccb4d6b17 100644
--- a/sys/dev/qat/qat_hw/qat_4xxxvf/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_4xxxvf/adf_drv.c
@@ -101,6 +101,7 @@ adf_attach(device_t dev)
        struct adf_cfg_device *cfg_dev = NULL;
 
        accel_dev = device_get_softc(dev);
+       mutex_init(&accel_dev->lock);
        accel_dev->is_vf = true;
        pf = adf_devmgr_pci_to_accel_dev(pci_find_pf(dev));
 
@@ -112,11 +113,13 @@ adf_attach(device_t dev)
                accel_pci_dev->node = 0;
 
        /* Add accel device to accel table */
-       if (adf_devmgr_add_dev(accel_dev, pf)) {
+       ret = adf_devmgr_add_dev(accel_dev, pf);
+       if (ret) {
                device_printf(GET_DEV(accel_dev),
                              "Failed to add new accelerator device.\n");
-               return -EFAULT;
+               goto out_err_lock;
        }
+
        /* Allocate and configure device configuration structure */
        hw_data = malloc(sizeof(*hw_data), M_QAT_4XXXVF, M_WAITOK | M_ZERO);
        accel_dev->hw_device = hw_data;
@@ -152,6 +155,8 @@ adf_attach(device_t dev)
                                 NULL,
                                 NULL,
                                 &accel_dev->dma_tag);
+       if (ret)
+               goto out_err;
 
        hw_data->accel_capabilities_mask = adf_4xxxvf_get_hw_cap(accel_dev);
 
@@ -180,7 +185,9 @@ adf_attach(device_t dev)
                bar->base_addr = rman_get_start(bar->virt_addr);
                bar->size = rman_get_size(bar->virt_addr);
        }
-       pci_enable_busmaster(dev);
+       ret = pci_enable_busmaster(dev);
+       if (ret)
+               goto out_err;
 
        adf_dbgfs_init(accel_dev);
 
@@ -190,7 +197,7 @@ adf_attach(device_t dev)
 
        ret = hw_data->config_device(accel_dev);
        if (ret)
-               goto out_err;
+               goto out_err_disable;
 
        ret = adf_dev_init(accel_dev);
        if (!ret)
@@ -212,8 +219,13 @@ adf_attach(device_t dev)
 
        return ret;
 
+out_err_disable:
+       pci_disable_busmaster(dev);
 out_err:
        adf_cleanup_accel(accel_dev);
+out_err_lock:
+       mutex_destroy(&accel_dev->lock);
+
        return ret;
 }
 
@@ -231,7 +243,9 @@ adf_detach(device_t dev)
        clear_bit(ADF_STATUS_RESTARTING, &accel_dev->status);
        adf_dev_stop(accel_dev);
        adf_dev_shutdown(accel_dev);
+       pci_disable_busmaster(dev);
        adf_cleanup_accel(accel_dev);
+       mutex_destroy(&accel_dev->lock);
        return 0;
 }
 
diff --git a/sys/dev/qat/qat_hw/qat_c3xxx/adf_drv.c 
b/sys/dev/qat/qat_hw/qat_c3xxx/adf_drv.c
index 9f2c9374e968..b91daefb45d4 100644
--- a/sys/dev/qat/qat_hw/qat_c3xxx/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_c3xxx/adf_drv.c
@@ -84,7 +84,7 @@ adf_attach(device_t dev)
        struct adf_accel_pci *accel_pci_dev;
        struct adf_hw_device_data *hw_data;
        unsigned int i, bar_nr;
-       int ret, rid;
+       int ret = 0, rid;
        struct adf_cfg_device *cfg_dev = NULL;
 
        /* Set pci MaxPayLoad to 256. Implemented to avoid the issue of
@@ -95,6 +95,7 @@ adf_attach(device_t dev)
 
        accel_dev = device_get_softc(dev);
 
+       mutex_init(&accel_dev->lock);
        INIT_LIST_HEAD(&accel_dev->crypto_list);
        accel_pci_dev = &accel_dev->accel_pci_dev;
        accel_pci_dev->pci_dev = dev;
@@ -106,9 +107,10 @@ adf_attach(device_t dev)
 
        /* Add accel device to accel table.
         * This should be called before adf_cleanup_accel is called */
-       if (adf_devmgr_add_dev(accel_dev, NULL)) {
+       ret = adf_devmgr_add_dev(accel_dev, NULL);
+       if (ret) {
                device_printf(dev, "Failed to add new accelerator device.\n");
-               return ENXIO;
+               goto out_err_lock;
        }
 
        /* Allocate and configure device configuration structure */
@@ -202,18 +204,20 @@ adf_attach(device_t dev)
                bar->base_addr = rman_get_start(bar->virt_addr);
                bar->size = rman_get_size(bar->virt_addr);
        }
-       pci_enable_busmaster(dev);
+       ret = pci_enable_busmaster(dev);
+       if (ret)
+               goto out_err;
 
        adf_dbgfs_init(accel_dev);
 
        if (!accel_dev->hw_device->config_device) {
                ret = EFAULT;
-               goto out_err;
+               goto out_err_disable;
        }
 
        ret = accel_dev->hw_device->config_device(accel_dev);
        if (ret)
-               goto out_err;
+               goto out_err_disable;
 
        ret = adf_dev_init(accel_dev);
        if (ret)
@@ -232,8 +236,13 @@ out_dev_stop:
        adf_dev_stop(accel_dev);
 out_dev_shutdown:
        adf_dev_shutdown(accel_dev);
+out_err_disable:
+       pci_disable_busmaster(dev);
 out_err:
        adf_cleanup_accel(accel_dev);
+out_err_lock:
+       mutex_destroy(&accel_dev->lock);
+
        return ret;
 }
 
@@ -249,7 +258,9 @@ adf_detach(device_t dev)
 
        adf_dev_shutdown(accel_dev);
 
+       pci_disable_busmaster(dev);
        adf_cleanup_accel(accel_dev);
+       mutex_destroy(&accel_dev->lock);
 
        return 0;
 }
diff --git a/sys/dev/qat/qat_hw/qat_c4xxx/adf_drv.c 
b/sys/dev/qat/qat_hw/qat_c4xxx/adf_drv.c
index 697f5b1ce786..f333101cce50 100644
--- a/sys/dev/qat/qat_hw/qat_c4xxx/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_c4xxx/adf_drv.c
@@ -84,7 +84,7 @@ adf_attach(device_t dev)
        struct adf_accel_pci *accel_pci_dev;
        struct adf_hw_device_data *hw_data;
        unsigned int i, bar_nr;
-       int ret, rid;
+       int ret = 0, rid;
        struct adf_cfg_device *cfg_dev = NULL;
 
        /* Set pci MaxPayLoad to 256. Implemented to avoid the issue of
@@ -96,6 +96,7 @@ adf_attach(device_t dev)
 
        accel_dev = device_get_softc(dev);
 
+       mutex_init(&accel_dev->lock);
        INIT_LIST_HEAD(&accel_dev->crypto_list);
        accel_pci_dev = &accel_dev->accel_pci_dev;
        accel_pci_dev->pci_dev = dev;
@@ -108,9 +109,10 @@ adf_attach(device_t dev)
        /* Add accel device to accel table.
         * This should be called before adf_cleanup_accel is called
         */
-       if (adf_devmgr_add_dev(accel_dev, NULL)) {
+       ret = adf_devmgr_add_dev(accel_dev, NULL);
+       if (ret) {
                device_printf(dev, "Failed to add new accelerator device.\n");
-               return ENXIO;
+               goto out_err_lock;
        }
 
        /* Allocate and configure device configuration structure */
@@ -201,18 +203,20 @@ adf_attach(device_t dev)
                bar->base_addr = rman_get_start(bar->virt_addr);
                bar->size = rman_get_start(bar->virt_addr);
        }
-       pci_enable_busmaster(dev);
+       ret = pci_enable_busmaster(dev);
+       if (ret)
+               goto out_err;
 
        adf_dbgfs_init(accel_dev);
 
        if (!accel_dev->hw_device->config_device) {
                ret = EFAULT;
-               goto out_err;
+               goto out_err_disable;
        }
 
        ret = accel_dev->hw_device->config_device(accel_dev);
        if (ret)
-               goto out_err;
+               goto out_err_disable;
 
        ret = adf_dev_init(accel_dev);
        if (ret)
@@ -231,8 +235,13 @@ out_dev_stop:
        adf_dev_stop(accel_dev);
 out_dev_shutdown:
        adf_dev_shutdown(accel_dev);
+out_err_disable:
+       pci_disable_busmaster(dev);
 out_err:
        adf_cleanup_accel(accel_dev);
+out_err_lock:
+       mutex_destroy(&accel_dev->lock);
+
        return ret;
 }
 
@@ -248,7 +257,9 @@ adf_detach(device_t dev)
 
        adf_dev_shutdown(accel_dev);
 
+       pci_disable_busmaster(dev);
        adf_cleanup_accel(accel_dev);
+       mutex_destroy(&accel_dev->lock);
 
        return 0;
 }
diff --git a/sys/dev/qat/qat_hw/qat_c62x/adf_drv.c 
b/sys/dev/qat/qat_hw/qat_c62x/adf_drv.c
index 1d48b85b2e12..955f6c48a071 100644
--- a/sys/dev/qat/qat_hw/qat_c62x/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_c62x/adf_drv.c
@@ -84,7 +84,7 @@ adf_attach(device_t dev)
        struct adf_accel_pci *accel_pci_dev;
        struct adf_hw_device_data *hw_data;
        unsigned int i, bar_nr;
-       int ret, rid;
+       int ret = 0, rid;
        struct adf_cfg_device *cfg_dev = NULL;
 
        /* Set pci MaxPayLoad to 256. Implemented to avoid the issue of
@@ -95,6 +95,7 @@ adf_attach(device_t dev)
 
        accel_dev = device_get_softc(dev);
 
+       mutex_init(&accel_dev->lock);
        INIT_LIST_HEAD(&accel_dev->crypto_list);
        accel_pci_dev = &accel_dev->accel_pci_dev;
        accel_pci_dev->pci_dev = dev;
@@ -106,9 +107,10 @@ adf_attach(device_t dev)
 
        /* Add accel device to accel table.
         * This should be called before adf_cleanup_accel is called */
-       if (adf_devmgr_add_dev(accel_dev, NULL)) {
+       ret = adf_devmgr_add_dev(accel_dev, NULL);
+       if (ret) {
                device_printf(dev, "Failed to add new accelerator device.\n");
-               return ENXIO;
+               goto out_err_lock;
        }
 
        /* Allocate and configure device configuration structure */
@@ -203,18 +205,20 @@ adf_attach(device_t dev)
                bar->base_addr = rman_get_start(bar->virt_addr);
                bar->size = rman_get_size(bar->virt_addr);
        }
-       pci_enable_busmaster(dev);
+       ret = pci_enable_busmaster(dev);
+       if (ret)
+               goto out_err;
 
        adf_dbgfs_init(accel_dev);
 
        if (!accel_dev->hw_device->config_device) {
                ret = EFAULT;
-               goto out_err;
+               goto out_err_disable;
        }
 
        ret = accel_dev->hw_device->config_device(accel_dev);
        if (ret)
-               goto out_err;
+               goto out_err_disable;
 
        ret = adf_dev_init(accel_dev);
        if (ret)
@@ -233,8 +237,13 @@ out_dev_stop:
        adf_dev_stop(accel_dev);
 out_dev_shutdown:
        adf_dev_shutdown(accel_dev);
+out_err_disable:
+       pci_disable_busmaster(dev);
 out_err:
        adf_cleanup_accel(accel_dev);
+out_err_lock:
+       mutex_destroy(&accel_dev->lock);
+
        return ret;
 }
 
@@ -250,7 +259,9 @@ adf_detach(device_t dev)
 
        adf_dev_shutdown(accel_dev);
 
+       pci_disable_busmaster(dev);
        adf_cleanup_accel(accel_dev);
+       mutex_destroy(&accel_dev->lock);
 
        return 0;
 }
diff --git a/sys/dev/qat/qat_hw/qat_dh895xcc/adf_drv.c 
b/sys/dev/qat/qat_hw/qat_dh895xcc/adf_drv.c
index d8f2ba0a99b7..a74de5eb592d 100644
--- a/sys/dev/qat/qat_hw/qat_dh895xcc/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_dh895xcc/adf_drv.c
@@ -84,7 +84,7 @@ adf_attach(device_t dev)
        struct adf_accel_pci *accel_pci_dev;
        struct adf_hw_device_data *hw_data;
        unsigned int i, bar_nr;
-       int ret, rid;
+       int ret = 0, rid;
        struct adf_cfg_device *cfg_dev = NULL;
 
        /* Set pci MaxPayLoad to 256. Implemented to avoid the issue of
@@ -95,6 +95,7 @@ adf_attach(device_t dev)
 
        accel_dev = device_get_softc(dev);
 
+       mutex_init(&accel_dev->lock);
        INIT_LIST_HEAD(&accel_dev->crypto_list);
        accel_pci_dev = &accel_dev->accel_pci_dev;
        accel_pci_dev->pci_dev = dev;
@@ -104,9 +105,10 @@ adf_attach(device_t dev)
 
        /* Add accel device to accel table.
         * This should be called before adf_cleanup_accel is called */
-       if (adf_devmgr_add_dev(accel_dev, NULL)) {
+       ret = adf_devmgr_add_dev(accel_dev, NULL);
+       if (ret) {
                device_printf(dev, "Failed to add new accelerator device.\n");
-               return ENXIO;
+               goto out_err_lock;
        }
 
        /* Allocate and configure device configuration structure */
@@ -191,18 +193,20 @@ adf_attach(device_t dev)
                bar->base_addr = rman_get_start(bar->virt_addr);
                bar->size = rman_get_size(bar->virt_addr);
        }
-       pci_enable_busmaster(dev);
+       ret = pci_enable_busmaster(dev);
+       if (ret)
+               goto out_err;
 
        adf_dbgfs_init(accel_dev);
 
        if (!accel_dev->hw_device->config_device) {
                ret = EFAULT;
-               goto out_err;
+               goto out_err_disable;
        }
 
        ret = accel_dev->hw_device->config_device(accel_dev);
        if (ret)
-               goto out_err;
+               goto out_err_disable;
 
        ret = adf_dev_init(accel_dev);
        if (ret)
@@ -221,8 +225,13 @@ out_dev_stop:
        adf_dev_stop(accel_dev);
 out_dev_shutdown:
        adf_dev_shutdown(accel_dev);
+out_err_disable:
+       pci_disable_busmaster(dev);
 out_err:
        adf_cleanup_accel(accel_dev);
+out_err_lock:
+       mutex_destroy(&accel_dev->lock);
+
        return ret;
 }
 
@@ -238,7 +247,10 @@ adf_detach(device_t dev)
 
        adf_dev_shutdown(accel_dev);
 
+       pci_disable_busmaster(dev);
        adf_cleanup_accel(accel_dev);
+       mutex_destroy(&accel_dev->lock);
+
        return 0;
 }
 

Reply via email to