Check if event is not null before handling events

Signed-off-by: Ben Goz <ben.goz@amd.com>
Reviewed-by: Oded Gabbay <oded.gabbay@amd.com>
This commit is contained in:
Ben Goz
2015-01-29 16:45:36 +02:00
committato da Oded Gabbay
parent 8cc0b16293
commit 930ec8f04d
+24 -2
Vedi File
@@ -67,8 +67,11 @@ hsaKmtCreateEvent(
args.event_type = EventDesc->EventType;
args.auto_reset = !ManualReset;
if (kmtIoctl(kfd_fd, AMDKFD_IOC_CREATE_EVENT, &args) == -1)
if (kmtIoctl(kfd_fd, AMDKFD_IOC_CREATE_EVENT, &args) != 0) {
free(e);
*Event = NULL;
return HSAKMT_STATUS_ERROR;
}
e->EventId = args.event_id;
e->EventData.EventType = EventDesc->EventType;
@@ -97,13 +100,17 @@ hsaKmtDestroyEvent(
{
CHECK_KFD_OPEN();
if (!Event)
return HSAKMT_STATUS_INVALID_HANDLE;
struct kfd_ioctl_destroy_event_args args;
memset(&args, 0, sizeof(args));
args.event_id = Event->EventId;
if (kmtIoctl(kfd_fd, AMDKFD_IOC_DESTROY_EVENT, &args) == -1)
if (kmtIoctl(kfd_fd, AMDKFD_IOC_DESTROY_EVENT, &args) != 0) {
return HSAKMT_STATUS_ERROR;
}
free(Event);
@@ -118,6 +125,9 @@ hsaKmtSetEvent(
{
CHECK_KFD_OPEN();
if (!Event)
return HSAKMT_STATUS_INVALID_HANDLE;
/* Although the spec is doesn't say, don't allow system-defined events to be signaled. */
if (IsSystemEventType(Event->EventData.EventType))
return HSAKMT_STATUS_ERROR;
@@ -141,6 +151,9 @@ hsaKmtResetEvent(
{
CHECK_KFD_OPEN();
if (!Event)
return HSAKMT_STATUS_INVALID_HANDLE;
/* Although the spec is doesn't say, don't allow system-defined events to be signaled. */
if (IsSystemEventType(Event->EventData.EventType))
return HSAKMT_STATUS_ERROR;
@@ -164,6 +177,9 @@ hsaKmtQueryEventState(
{
CHECK_KFD_OPEN();
if (!Event)
return HSAKMT_STATUS_INVALID_HANDLE;
return HSAKMT_STATUS_SUCCESS;
}
@@ -174,6 +190,9 @@ hsaKmtWaitOnEvent(
HSAuint32 Milliseconds //IN
)
{
if (!Event)
return HSAKMT_STATUS_INVALID_HANDLE;
return hsaKmtWaitOnMultipleEvents(&Event, 1, true, Milliseconds);
}
@@ -188,6 +207,9 @@ hsaKmtWaitOnMultipleEvents(
{
CHECK_KFD_OPEN();
if (!Events)
return HSAKMT_STATUS_INVALID_HANDLE;
struct kfd_event_data *event_data = malloc(NumEvents * sizeof(struct kfd_event_data));
for (HSAuint32 i = 0; i < NumEvents; i++) {
event_data[i].event_id = Events[i]->EventId;