+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.