diff options
author | Maarten Lankhorst <maarten.lankhorst@canonical.com> | 2014-09-03 11:01:28 -0400 |
---|---|---|
committer | Maarten Lankhorst <maarten.lankhorst@canonical.com> | 2014-09-03 11:09:12 -0400 |
commit | b75402c9f98a431ae352a223153825513eac9600 (patch) | |
tree | 1e763cb871822fb154e5e793c726ced04263b33a | |
parent | d7e4d671369263381dd3a02e1f240f675be6b1f5 (diff) |
drm/qxl: fix gaping memory hole
This is how you implement a memory sieve in a driver. ;-)
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
-rw-r--r-- | drivers/gpu/drm/qxl/qxl_release.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/gpu/drm/qxl/qxl_release.c b/drivers/gpu/drm/qxl/qxl_release.c index 828d47e90dce..29ab4ec44c40 100644 --- a/drivers/gpu/drm/qxl/qxl_release.c +++ b/drivers/gpu/drm/qxl/qxl_release.c | |||
@@ -162,12 +162,14 @@ static void | |||
162 | qxl_release_free_list(struct qxl_release *release) | 162 | qxl_release_free_list(struct qxl_release *release) |
163 | { | 163 | { |
164 | while (!list_empty(&release->bos)) { | 164 | while (!list_empty(&release->bos)) { |
165 | struct ttm_validate_buffer *entry; | 165 | struct qxl_bo_list *entry; |
166 | struct qxl_bo *bo; | ||
166 | 167 | ||
167 | entry = container_of(release->bos.next, | 168 | entry = container_of(release->bos.next, |
168 | struct ttm_validate_buffer, head); | 169 | struct qxl_bo_list, tv.head); |
169 | 170 | bo = to_qxl_bo(entry->tv.bo); | |
170 | list_del(&entry->head); | 171 | qxl_bo_unref(&bo); |
172 | list_del(&entry->tv.head); | ||
171 | kfree(entry); | 173 | kfree(entry); |
172 | } | 174 | } |
173 | } | 175 | } |