]> git.baikalelectronics.ru Git - kernel.git/commit
drm/radeon: fix a rare case of double kfree
authorIlija Hadzic <ihadzic@research.bell-labs.com>
Wed, 23 Jan 2013 18:59:05 +0000 (13:59 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 23 Jan 2013 19:50:05 +0000 (14:50 -0500)
commiteb61b99882faaa34f44f3c4e6a73341596d78f22
treec3247c490a8182b54945036efbe7996a6446aea0
parent9feff1eb7de6bb4d6fe36fff5ffa1dfd2b9c74c8
drm/radeon: fix a rare case of double kfree

If one (but not both) allocations of p->chunks[].kpage[]
in radeon_cs_parser_init fail, the error path will free
the successfully allocated page, but leave a stale pointer
value in the kpage[] field. This will later cause a
double-free when radeon_cs_parser_fini is called.
This patch fixes the issue by forcing both pointers to NULL
after kfree in the error path.

The circumstances under which the problem happens are very
rare. The card must be AGP and the system must run out of
kmalloc area just at the right time so that one allocation
succeeds, while the other fails.

Signed-off-by: Ilija Hadzic <ihadzic@research.bell-labs.com>
Cc: Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
drivers/gpu/drm/radeon/radeon_cs.c