DF-4460 / run.log
+ F=sys/dev/drm/drm_gem.c
+ sed -n 576,588p sys/dev/drm/drm_gem.c
obj->map_list.key = alloc_unr(mm->idxunr);
ret = drm_ht_insert_item(&mm->offset_hash, &obj->map_list);
if (ret != 0) {
DRM_ERROR("failed to add to map hash\n");
free_unr(mm->idxunr, obj->map_list.key);
return (ret);
}
obj->on_map = true;
return drm_vma_offset_add(dev->vma_offset_manager, &obj->vma_node,
size / PAGE_SIZE);
}
EXPORT_SYMBOL(drm_gem_create_mmap_offset_size);
+ echo -- on_map=true precedes the vma_offset_add return value --
-- on_map=true precedes the vma_offset_add return value --
+ grep -n obj->on_map = true sys/dev/drm/drm_gem.c
583: obj->on_map = true;
+ grep -n return drm_vma_offset_add sys/dev/drm/drm_gem.c
585: return drm_vma_offset_add(dev->vma_offset_manager, &obj->vma_node,
+ echo -- retry path returns early on on_map, hiding the failed state --
-- retry path returns early on on_map, hiding the failed state --
+ grep -n if (obj->on_map) sys/dev/drm/drm_gem.c
573: if (obj->on_map)
+ grep -n if (obj->on_map) sys/dev/drm/drm_gem.c
+ head -1
+ cut -d: -f1
+ sed -n 573,+2p sys/dev/drm/drm_gem.c
if (obj->on_map)
return (0);
+ echo -- cleanup only happens at object release (drm_gem_free_mmap_offset) --
-- cleanup only happens at object release (drm_gem_free_mmap_offset) --
+ grep -n obj->on_map = false sys/dev/drm/drm_gem.c
543: obj->on_map = false;