diff options
author | Jan Beulich <jbeulich@novell.com> | 2007-04-02 09:50:14 -0400 |
---|---|---|
committer | Dave Jones <davej@redhat.com> | 2007-04-26 14:22:51 -0400 |
commit | 89cf7ccc936db979e5e9d9ce49437ef859cdd889 (patch) | |
tree | 59dbc84d50287957f4f4f852c641b41d70a22643 | |
parent | 9eeee244142562cba4f9fbc93962acf6a61847b5 (diff) |
[AGPGART] Intel-agp adjustments
Fix a call to __free_page where __free_pages(, 2) was meant, and do proper
error path handling. Also remove a redundant conditional.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
Signed-off-by: Dave Jones <davej@redhat.com>
-rw-r--r-- | drivers/char/agp/intel-agp.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c index 55392a45a14b..9c69f2e761f5 100644 --- a/drivers/char/agp/intel-agp.c +++ b/drivers/char/agp/intel-agp.c | |||
@@ -186,8 +186,9 @@ static void *i8xx_alloc_pages(void) | |||
186 | return NULL; | 186 | return NULL; |
187 | 187 | ||
188 | if (change_page_attr(page, 4, PAGE_KERNEL_NOCACHE) < 0) { | 188 | if (change_page_attr(page, 4, PAGE_KERNEL_NOCACHE) < 0) { |
189 | change_page_attr(page, 4, PAGE_KERNEL); | ||
189 | global_flush_tlb(); | 190 | global_flush_tlb(); |
190 | __free_page(page); | 191 | __free_pages(page, 2); |
191 | return NULL; | 192 | return NULL; |
192 | } | 193 | } |
193 | global_flush_tlb(); | 194 | global_flush_tlb(); |
@@ -209,7 +210,7 @@ static void i8xx_destroy_pages(void *addr) | |||
209 | global_flush_tlb(); | 210 | global_flush_tlb(); |
210 | put_page(page); | 211 | put_page(page); |
211 | unlock_page(page); | 212 | unlock_page(page); |
212 | free_pages((unsigned long)addr, 2); | 213 | __free_pages(page, 2); |
213 | atomic_dec(&agp_bridge->current_memory_agp); | 214 | atomic_dec(&agp_bridge->current_memory_agp); |
214 | } | 215 | } |
215 | 216 | ||
@@ -315,9 +316,6 @@ static struct agp_memory *alloc_agpphysmem_i8xx(size_t pg_count, int type) | |||
315 | struct agp_memory *new; | 316 | struct agp_memory *new; |
316 | void *addr; | 317 | void *addr; |
317 | 318 | ||
318 | if (pg_count != 1 && pg_count != 4) | ||
319 | return NULL; | ||
320 | |||
321 | switch (pg_count) { | 319 | switch (pg_count) { |
322 | case 1: addr = agp_bridge->driver->agp_alloc_page(agp_bridge); | 320 | case 1: addr = agp_bridge->driver->agp_alloc_page(agp_bridge); |
323 | global_flush_tlb(); | 321 | global_flush_tlb(); |