Skip to content

Commit 650f8bc

Browse files
authored
ensure queues exist before trying to set offloads (#926) (#927)
1 parent 7206c8c commit 650f8bc

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

src/xdp/xsk.c

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3825,7 +3825,12 @@ XskSetTxOffloadChecksumWorker(
38253825
XSK_BINDING_WORKITEM *WorkItem = (XSK_BINDING_WORKITEM *)Item;
38263826
XSK *Xsk = WorkItem->Xsk;
38273827

3828-
WorkItem->CompletionStatus = XdpTxQueueEnableChecksumOffload(Xsk->Tx.Xdp.Queue);
3828+
if (Xsk->Tx.Xdp.Queue != NULL) {
3829+
WorkItem->CompletionStatus = XdpTxQueueEnableChecksumOffload(Xsk->Tx.Xdp.Queue);
3830+
} else {
3831+
WorkItem->CompletionStatus = STATUS_INVALID_DEVICE_STATE;
3832+
}
3833+
38293834
KeSetEvent(&WorkItem->CompletionEvent, 0, FALSE);
38303835
}
38313836

@@ -3837,7 +3842,13 @@ XskSetRxOffloadChecksumWorker(
38373842
{
38383843
XSK_BINDING_WORKITEM *WorkItem = (XSK_BINDING_WORKITEM *)Item;
38393844
XSK *Xsk = WorkItem->Xsk;
3840-
WorkItem->CompletionStatus = XdpRxQueueEnableChecksumOffload(Xsk->Rx.Xdp.Queue);
3845+
3846+
if (Xsk->Rx.Xdp.Queue != NULL) {
3847+
WorkItem->CompletionStatus = XdpRxQueueEnableChecksumOffload(Xsk->Rx.Xdp.Queue);
3848+
} else {
3849+
WorkItem->CompletionStatus = STATUS_INVALID_DEVICE_STATE;
3850+
}
3851+
38413852
KeSetEvent(&WorkItem->CompletionEvent, 0, FALSE);
38423853
}
38433854

0 commit comments

Comments
 (0)