c
int spi_sync(struct spi_device *spi, struct spi_message *message)
{
    int ret;
    if (mutex_trylock(&spi->controller->bus_lock_mutex)) {
        ret = __spi_sync(spi, message);
        if (mutex_is_owned(&spi->controller->bus_lock_mutex)) {
            mutex_unlock(&spi->controller->bus_lock_mutex);
        }
    } else {
        ret = -EBUSY;
    }
    return ret;
}
