@@ -392,6 +392,8 @@ static struct drm_mm_node *drm_mm_search_free_generic(const struct drm_mm *mm,
best_size = ~0UL;
drm_mm_for_each_hole(entry, mm, adj_start, adj_end) {
+ unsigned long hole_size = adj_end - adj_start;
+
if (mm->color_adjust) {
mm->color_adjust(entry, color, &adj_start, &adj_end);
if (adj_end <= adj_start)
@@ -404,9 +406,9 @@ static struct drm_mm_node *drm_mm_search_free_generic(const struct drm_mm *mm,
if (!(flags & DRM_MM_SEARCH_BEST))
return entry;
- if (entry->size < best_size) {
+ if (hole_size < best_size) {
best = entry;
- best_size = entry->size;
+ best_size = hole_size;
}
}
@@ -433,6 +435,8 @@ static struct drm_mm_node *drm_mm_search_free_in_range_generic(const struct drm_
best_size = ~0UL;
drm_mm_for_each_hole(entry, mm, adj_start, adj_end) {
+ unsigned long hole_size = adj_end - adj_start;
+
if (adj_start < start)
adj_start = start;
if (adj_end > end)
@@ -450,9 +454,9 @@ static struct drm_mm_node *drm_mm_search_free_in_range_generic(const struct drm_
if (!(flags & DRM_MM_SEARCH_BEST))
return entry;
- if (entry->size < best_size) {
+ if (hole_size < best_size) {
best = entry;
- best_size = entry->size;
+ best_size = hole_size;
}
}