> +static void dmabuf_sync_timeout_worker(struct work_struct *work)
> +{
> +     struct dmabuf_sync *sync = container_of(work, struct dmabuf_sync,
> work);
> +     struct dmabuf_sync_object *sobj;
> +
> +     mutex_lock(&sync->lock);
> +
> +     list_for_each_entry(sobj, &sync->syncs, head) {
> +             if (WARN_ON(!sobj->robj))
> +                     continue;
> +
> +             printk(KERN_WARNING "%s: timeout = 0x%x [type = %d, " \
> +                                     "refcnt = %d, locked = %d]\n",
> +                                     sync->name, (u32)sobj->dmabuf,
> +                                     sobj->access_type,
> +
atomic_read(&sobj->robj->shared_cnt),
> +                                     sobj->robj->locked);
> +
> +             /* unlock only valid sync object. */
> +             if (!sobj->robj->locked)
> +                     continue;
> +
> +             if (sobj->robj->shared &&
> +                             atomic_read(&sobj->robj->shared_cnt) > 1) {
> +                     atomic_dec(&sobj->robj->shared_cnt);
> +                     continue;
> +             }
> +
> +             ww_mutex_unlock(&sobj->robj->lock);
> +
> +             if (sobj->access_type & DMA_BUF_ACCESS_READ)
> +                     printk(KERN_WARNING "%s: r-unlocked = 0x%x\n",
> +                                     sync->name, (u32)sobj->dmabuf);
> +             else
> +                     printk(KERN_WARNING "%s: w-unlocked = 0x%x\n",
> +                                     sync->name, (u32)sobj->dmabuf);
> +
> +#if defined(CONFIG_DEBUG_FS)
> +             sync_debugfs_timeout_cnt++;
> +#endif

Oops, unnecessary codes. will remove them.

Reply via email to