ms: Fix unsafe iterating freeing items in list

Change-Id: I35cba6d617b3356515769405c7d05ba28cd5132b
diff --git a/src/gprs_ms.c b/src/gprs_ms.c
index 4cab8e4..d9e52ea 100644
--- a/src/gprs_ms.c
+++ b/src/gprs_ms.c
@@ -409,7 +409,7 @@
 	if (tbf && !tbf_timers_pending(tbf, T_MAX))
 		tbf_free(tbf);
 
-	llist_for_each_entry(pos, &ms->old_tbfs, list) {
+	while ((pos = llist_first_entry_or_null(&ms->old_tbfs, struct llist_item, list))) {
 		tbf = (struct gprs_rlcmac_tbf *)pos->entry;
 		if (!tbf_timers_pending(tbf, T_MAX))
 			tbf_free(tbf);