Lines Matching refs:dr
58 static void free_dr(struct drmres *dr)
60 kfree_const(dr->node.name);
61 kfree(dr);
66 struct drmres *dr, *tmp;
69 list_for_each_entry_safe(dr, tmp, &dev->managed.resources, node.entry) {
71 dr, dr->node.name, dr->node.size);
73 if (dr->node.release)
74 dr->node.release(dev, dr->node.size ? *(void **)&dr->data : NULL);
76 list_del(&dr->node.entry);
77 free_dr(dr);
90 struct drmres *dr;
93 if (unlikely(check_add_overflow(sizeof(*dr), size, &tot_size)))
96 dr = kmalloc_node_track_caller(tot_size, gfp, nid);
97 if (unlikely(!dr))
100 memset(dr, 0, offsetof(struct drmres, data));
102 INIT_LIST_HEAD(&dr->node.entry);
103 dr->node.release = release;
104 dr->node.size = size;
106 return dr;
109 static void del_dr(struct drm_device *dev, struct drmres *dr)
111 list_del_init(&dr->node.entry);
114 dr, dr->node.name, (unsigned long) dr->node.size);
117 static void add_dr(struct drm_device *dev, struct drmres *dr)
122 list_add(&dr->node.entry, &dev->managed.resources);
126 dr, dr->node.name, (unsigned long) dr->node.size);
141 struct drmres *dr;
144 dr = alloc_dr(action, data ? sizeof(void*) : 0,
147 if (!dr) {
153 dr->node.name = kstrdup_const(name, GFP_KERNEL);
155 void_ptr = (void **)&dr->data;
159 add_dr(dev, dr);
191 struct drmres *dr;
193 dr = alloc_dr(NULL, size, gfp, dev_to_node(dev->dev));
194 if (!dr) {
199 dr->node.name = kstrdup_const("kmalloc", gfp);
201 add_dr(dev, dr);
203 return dr->data;
244 struct drmres *dr_match = NULL, *dr;
251 list_for_each_entry(dr, &dev->managed.resources, node.entry) {
252 if (dr->data == data) {
253 dr_match = dr;