[DCCP] ackvec: Delete all the ack vector records in dccp_ackvec_free
authorArnaldo Carvalho de Melo <acme@mandriva.com>
Tue, 21 Mar 2006 01:20:46 +0000 (17:20 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 21 Mar 2006 01:20:46 +0000 (17:20 -0800)
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/dccp/ackvec.c

index b4ff14f3d4f886e9c990187fe0e36adc2e1ac0d6..5c76e81658cf43412b9eee0e34a3683bdf30e50d 100644 (file)
@@ -159,7 +159,17 @@ void dccp_ackvec_free(struct dccp_ackvec *av)
 {
        if (unlikely(av == NULL))
                return;
-       WARN_ON(!list_empty(&av->dccpav_records));
+
+       if (!list_empty(&av->dccpav_records)) {
+               struct dccp_ackvec_record *avr, *next;
+
+               list_for_each_entry_safe(avr, next, &av->dccpav_records,
+                                        dccpavr_node) {
+                       list_del_init(&avr->dccpavr_node);
+                       dccp_ackvec_record_delete(avr);
+               }
+       }
+
        kmem_cache_free(dccp_ackvec_slab, av);
 }