Index: kernel/generic/include/adt/list.h
===================================================================
--- kernel/generic/include/adt/list.h	(revision 19fc04cae65294b290ea6b1a3658fdddf31c1cb8)
+++ kernel/generic/include/adt/list.h	(revision 7c014d1fbbe9734e6ee3616fac584d8cc996df36)
@@ -72,5 +72,5 @@
 
 #define assert_link_not_used(link) \
-	ASSERT((link)->prev == NULL && (link)->next == NULL)
+	ASSERT(((link)->prev == NULL) && ((link)->next == NULL))
 
 /** Initialize doubly-linked circular list link
@@ -158,6 +158,9 @@
 NO_TRACE static inline void list_remove(link_t *link)
 {
-	link->next->prev = link->prev;
-	link->prev->next = link->next;
+	if ((link->prev != NULL) && (link->next != NULL)) {
+		link->next->prev = link->prev;
+		link->prev->next = link->next;
+	}
+	
 	link_initialize(link);
 }
Index: kernel/generic/src/adt/list.c
===================================================================
--- kernel/generic/src/adt/list.c	(revision 19fc04cae65294b290ea6b1a3658fdddf31c1cb8)
+++ kernel/generic/src/adt/list.c	(revision 7c014d1fbbe9734e6ee3616fac584d8cc996df36)
@@ -49,5 +49,5 @@
  * @param list	List to look in.
  *
- * @return true if link is contained in head, false otherwise.
+ * @return true if link is contained in list, false otherwise.
  *
  */
