Fix double free on fork after hsaKmtCloseKFD

Child process hsaKmtOpenKFD() call must re-initialize global variables
copied from parent process. This includes close all file handles, free
dynamically malloc buf. Double free issue is because destroy_device_
debugging_memory() free the memory in parent process hsaKmtCloseKFD()
but don't reset it to null pointer. As a result, child process free it
again. kfd_fd is closed in parent process but don't reset to 0, so
child process close it again.

Fix: reset kfd_fd to 0 after close, reset is_device_debugged pointer to 0
after free



Change-Id: I421b3decbcaa4111298b8e599aa16940d851a58c
Signed-off-by: Philip Yang <Philip.Yang@amd.com>
이 커밋은 다음에 포함됨:
Philip Yang
2017-10-26 10:54:15 -04:00
부모 aece2f8fc2
커밋 3501b2f40d
2개의 변경된 파일11개의 추가작업 그리고 3개의 파일을 삭제
+3 -1
파일 보기
@@ -47,8 +47,10 @@ HSAKMT_STATUS init_device_debugging_memory(unsigned int NumNodes)
void destroy_device_debugging_memory(void)
{
if (is_device_debugged)
if (is_device_debugged) {
free(is_device_debugged);
is_device_debugged = NULL;
}
}
HSAKMT_STATUS HSAKMTAPI hsaKmtDbgRegister(HSAuint32 NodeId)