libhsakmt: Improve error handling in child process
Check for errno == EBADF in kmtIoctl to detect misuse of the kfd_fd in a forked child process. Detect being in a forked child process pro-actively by implementing a pthread_atfork callback. Make sure all mutexes get reinitialized in the child process to avoid deadlocks. Check for being in a forked child process in CHECK_KFD_OPENED so that all hsaKmt functions will return the appropriate status HSAKMT_STATUS_KERNEL_IO_CHANNEL_NOT_OPENED. Update InvalidKFDHandleTest to expect that error code. Change-Id: I0238e5fba344dcaa454e97a35db2e2dcc8d1f607 Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
This commit is contained in:
@@ -75,7 +75,7 @@ TEST_F(KFDOpenCloseKFDTest, InvalidKFDHandleTest ) {
|
||||
HsaVersionInfo m_VersionInfo;
|
||||
pid_t m_ChildPid = fork();
|
||||
if (m_ChildPid == 0) {
|
||||
EXPECT_EQ(HSAKMT_STATUS_ERROR, hsaKmtGetVersion(&m_VersionInfo));
|
||||
EXPECT_EQ(HSAKMT_STATUS_KERNEL_IO_CHANNEL_NOT_OPENED, hsaKmtGetVersion(&m_VersionInfo));
|
||||
exit(0);
|
||||
} else {
|
||||
int childStatus;
|
||||
|
||||
Referens i nytt ärende
Block a user