Lines Matching refs:dr
57 static void free_dr(struct drmres *dr)
59 kfree_const(dr->node.name);
60 kfree(dr);
65 struct drmres *dr, *tmp;
68 list_for_each_entry_safe(dr, tmp, &dev->managed.resources, node.entry) {
70 dr, dr->node.name, dr->node.size);
72 if (dr->node.release)
73 dr->node.release(dev, dr->node.size ? *(void **)&dr->data : NULL);
75 list_del(&dr->node.entry);
76 free_dr(dr);
89 struct drmres *dr;
92 if (unlikely(check_add_overflow(sizeof(*dr), size, &tot_size)))
95 dr = kmalloc_node_track_caller(tot_size, gfp, nid);
96 if (unlikely(!dr))
99 memset(dr, 0, offsetof(struct drmres, data));
101 INIT_LIST_HEAD(&dr->node.entry);
102 dr->node.release = release;
103 dr->node.size = size;
105 return dr;
108 static void del_dr(struct drm_device *dev, struct drmres *dr)
110 list_del_init(&dr->node.entry);
113 dr, dr->node.name, (unsigned long) dr->node.size);
116 static void add_dr(struct drm_device *dev, struct drmres *dr)
121 list_add(&dr->node.entry, &dev->managed.resources);
125 dr, dr->node.name, (unsigned long) dr->node.size);
140 struct drmres *dr;
143 dr = alloc_dr(action, data ? sizeof(void*) : 0,
146 if (!dr) {
152 dr->node.name = kstrdup_const(name, GFP_KERNEL);
154 void_ptr = (void **)&dr->data;
158 add_dr(dev, dr);
190 struct drmres *dr;
192 dr = alloc_dr(NULL, size, gfp, dev_to_node(dev->dev));
193 if (!dr) {
198 dr->node.name = kstrdup_const("kmalloc", GFP_KERNEL);
200 add_dr(dev, dr);
202 return dr->data;
243 struct drmres *dr_match = NULL, *dr;
250 list_for_each_entry(dr, &dev->managed.resources, node.entry) {
251 if (dr->data == data) {
252 dr_match = dr;