Skip to content

Commit 0ab14d9

Browse files
tmon-nordicfabiobaltieri
authored andcommitted
usb: device: Fix transfer slot leak without callback
Log transfer status and release transfer semaphore regardless if user provided transfer completion callback or not. This fixes transfer slot leak when transfer without callback completes. Signed-off-by: Tomasz Moń <[email protected]>
1 parent 675726f commit 0ab14d9

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

subsys/usb/device/usb_transfer.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ static void usb_transfer_work(struct k_work *item)
131131
}
132132

133133
done:
134-
if (trans->status != -EBUSY && trans->cb) { /* Transfer complete */
134+
if (trans->status != -EBUSY) { /* Transfer complete */
135135
usb_transfer_callback cb = trans->cb;
136136
int tsize = trans->tsize;
137137
void *priv = trans->priv;
@@ -149,7 +149,9 @@ static void usb_transfer_work(struct k_work *item)
149149
k_sem_give(&trans->sem);
150150

151151
/* Transfer completion callback */
152-
cb(ep, tsize, priv);
152+
if (cb) {
153+
cb(ep, tsize, priv);
154+
}
153155
}
154156
}
155157

0 commit comments

Comments
 (0)