return node;
 }
 
-/**
- * io_llist_xchg - swap all entries in a lock-less list
- * @head:      the head of lock-less list to delete all entries
- * @new:       new entry as the head of the list
- *
- * If list is empty, return NULL, otherwise, return the pointer to the first entry.
- * The order of entries returned is from the newest to the oldest added one.
- */
-static inline struct llist_node *io_llist_xchg(struct llist_head *head,
-                                              struct llist_node *new)
-{
-       return xchg(&head->first, new);
-}
-
 static __cold void io_fallback_tw(struct io_uring_task *tctx, bool sync)
 {
        struct llist_node *node = llist_del_all(&tctx->task_list);
         * llists are in reverse order, flip it back the right way before
         * running the pending items.
         */
-       node = llist_reverse_order(io_llist_xchg(&ctx->work_llist, NULL));
+       node = llist_reverse_order(llist_del_all(&ctx->work_llist));
        while (node) {
                struct llist_node *next = node->next;
                struct io_kiocb *req = container_of(node, struct io_kiocb,