while (master_ct(master_conntrack) != NULL)
master_conntrack = master_ct(master_conntrack);
+ /* free unused conntrack data if different master conntrack exists */
+ if (master_conntrack != conntrack) {
+ if (conntrack->layer7.app_data) {
+ DPRINTK("layer7: free unused conntrack memory.\n");
+ kfree(conntrack->layer7.app_data);
+ conntrack->layer7.app_data = NULL; /* don't free again */
+ }
+ }
+
/* if we've classified it or seen too many packets */
if(total_acct_packets(master_conntrack) > num_packets ||
master_conntrack->layer7.app_proto) {