forked from luck/tmp_suning_uos_patched
agp: fix scratch page cleanup
In error cleanup of agp_backend_initialize() and in agp_backend_cleanup(), agp_destroy_page() is passed virtual address of the scratch page. This leads to a kernel warning if the initialization fails (or upon regular cleanup) as pointer to struct page should be passed instead. Signed-off-by: Michal Kubecek <mkubecek@suse.cz> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
c8fe74ae9a
commit
590dfe2f3b
|
@ -194,10 +194,10 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge)
|
|||
|
||||
err_out:
|
||||
if (bridge->driver->needs_scratch_page) {
|
||||
void *va = page_address(bridge->scratch_page_page);
|
||||
struct page *page = bridge->scratch_page_page;
|
||||
|
||||
bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP);
|
||||
bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE);
|
||||
bridge->driver->agp_destroy_page(page, AGP_PAGE_DESTROY_UNMAP);
|
||||
bridge->driver->agp_destroy_page(page, AGP_PAGE_DESTROY_FREE);
|
||||
}
|
||||
if (got_gatt)
|
||||
bridge->driver->free_gatt_table(bridge);
|
||||
|
@ -221,10 +221,10 @@ static void agp_backend_cleanup(struct agp_bridge_data *bridge)
|
|||
|
||||
if (bridge->driver->agp_destroy_page &&
|
||||
bridge->driver->needs_scratch_page) {
|
||||
void *va = page_address(bridge->scratch_page_page);
|
||||
struct page *page = bridge->scratch_page_page;
|
||||
|
||||
bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP);
|
||||
bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE);
|
||||
bridge->driver->agp_destroy_page(page, AGP_PAGE_DESTROY_UNMAP);
|
||||
bridge->driver->agp_destroy_page(page, AGP_PAGE_DESTROY_FREE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user