c
static void spi_sync_cleanup(struct spi_device *spi, int *ret) {
    mutex_unlock(&spi->controller->bus_lock_mutex);
}

int spi_sync(struct spi_device *spi, struct spi_message *message)
{
    int ret = 0;

    mutex_lock(&spi->controller->bus_lock_mutex);

    ret = __spi_sync(spi, message);
    if (ret != 0) {
        // Handle the error
    }
    spi_sync_cleanup(spi, &ret); // Always clean up
    return ret;
}
