c
int spi_sync(struct spi_device *spi, struct spi_message *message)
{
    int ret;
    struct spi_controller *controller = spi->controller;
    atomic_inc(&controller->refcount);
    mutex_lock(&controller->bus_lock_mutex);
    ret = __spi_sync(spi, message);
    mutex_unlock(&controller->bus_lock_mutex);
    if (atomic_dec_and_test(&controller->refcount)) {
        kfree(controller);
    }
    return ret;
}
