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

    mutex_lock(&spi->controller->bus_lock_mutex);
    ret = __spi_sync(spi, message);
    if (ret == 0) {  // Only unlock if __spi_sync was successful
        mutex_unlock(&spi->controller->bus_lock_mutex);
    } else {
        // Handle the error appropriately (e.g., log, return error)
    }

    return ret; // Propagate the error code from __spi_sync
}
