Skip to content

Commit fe5a3c6

Browse files
martygrantkbenzie
authored andcommitted
Merge pull request #2501 from winstonzhang-intel/interrupt-based-patch
[L0] Fixes potential overwrite in ZeEventPoolDesc.pNext
1 parent ff6b9a7 commit fe5a3c6

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

source/adapters/level_zero/context.cpp

+11-7
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,13 @@ ur_result_t ur_context_handle_t_::getFreeSlotInExistingOrNewPool(
533533
if (*ZePool == nullptr) {
534534
ze_event_pool_counter_based_exp_desc_t counterBasedExt = {
535535
ZE_STRUCTURE_TYPE_COUNTER_BASED_EVENT_POOL_EXP_DESC, nullptr, 0};
536+
537+
ze_intel_event_sync_mode_exp_desc_t eventSyncMode = {
538+
ZE_INTEL_STRUCTURE_TYPE_EVENT_SYNC_MODE_EXP_DESC, nullptr, 0};
539+
eventSyncMode.syncModeFlags =
540+
ZE_INTEL_EVENT_SYNC_MODE_EXP_FLAG_LOW_POWER_WAIT |
541+
ZE_INTEL_EVENT_SYNC_MODE_EXP_FLAG_SIGNAL_INTERRUPT;
542+
536543
ZeStruct<ze_event_pool_desc_t> ZeEventPoolDesc;
537544
ZeEventPoolDesc.count = MaxNumEventsPerPool;
538545
ZeEventPoolDesc.flags = 0;
@@ -552,14 +559,11 @@ ur_result_t ur_context_handle_t_::getFreeSlotInExistingOrNewPool(
552559
}
553560
logger::debug("ze_event_pool_desc_t counter based flags set to: {}",
554561
counterBasedExt.flags);
562+
if (InterruptBasedEventEnabled) {
563+
counterBasedExt.pNext = &eventSyncMode;
564+
}
555565
ZeEventPoolDesc.pNext = &counterBasedExt;
556-
}
557-
if (InterruptBasedEventEnabled) {
558-
ze_intel_event_sync_mode_exp_desc_t eventSyncMode = {
559-
ZE_INTEL_STRUCTURE_TYPE_EVENT_SYNC_MODE_EXP_DESC, nullptr, 0};
560-
eventSyncMode.syncModeFlags =
561-
ZE_INTEL_EVENT_SYNC_MODE_EXP_FLAG_LOW_POWER_WAIT |
562-
ZE_INTEL_EVENT_SYNC_MODE_EXP_FLAG_SIGNAL_INTERRUPT;
566+
} else if (InterruptBasedEventEnabled) {
563567
ZeEventPoolDesc.pNext = &eventSyncMode;
564568
}
565569

0 commit comments

Comments
 (0)