diff options
Diffstat (limited to 'lib/llist.c')
| -rw-r--r-- | lib/llist.c | 22 | 
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/llist.c b/lib/llist.c index 4a70d120138..f76196d0740 100644 --- a/lib/llist.c +++ b/lib/llist.c @@ -81,3 +81,25 @@ struct llist_node *llist_del_first(struct llist_head *head)  	return entry;  }  EXPORT_SYMBOL_GPL(llist_del_first); + +/** + * llist_reverse_order - reverse order of a llist chain + * @head:	first item of the list to be reversed + * + * Reverse the order of a chain of llist entries and return the + * new first entry. + */ +struct llist_node *llist_reverse_order(struct llist_node *head) +{ +	struct llist_node *new_head = NULL; + +	while (head) { +		struct llist_node *tmp = head; +		head = head->next; +		tmp->next = new_head; +		new_head = tmp; +	} + +	return new_head; +} +EXPORT_SYMBOL_GPL(llist_reverse_order);  | 
