--- ip_conntrack_mms.old 2004-02-22 02:32:36.000000000 +0100 +++ ip_conntrack_mms.c 2004-02-22 02:34:25.000000000 +0100 @@ -150,8 +150,8 @@ unsigned int tcplen = len - iph->ihl * 4; unsigned int datalen = tcplen - tcph->doff * 4; int dir = CTINFO2DIR(ctinfo); - struct ip_conntrack_expect expect, *exp = &expect; - struct ip_ct_mms_expect *exp_mms_info = &exp->help.exp_mms_info; + struct ip_conntrack_expect *exp; + struct ip_ct_mms_expect *exp_mms_info = NULL; u_int32_t mms_ip; u_int16_t mms_proto; @@ -207,7 +207,10 @@ printk(KERN_WARNING "ip_conntrack_mms: Unable to parse data payload\n"); - memset(&expect, 0, sizeof(expect)); + if (ip_conntrack_expect_alloc(&exp) < 0) + return -ENOMEM; + + exp_mms_info = &exp->help.exp_mms_info; sprintf(mms_proto_string, "(%u)", mms_proto); DEBUGP("ip_conntrack_mms: adding %s expectation %u.%u.%u.%u -> %u.%u.%u.%u:%u\n", @@ -243,7 +246,7 @@ { { 0xFFFFFFFF, { 0 } }, { 0xFFFFFFFF, { .tcp = { 0xFFFF } }, 0xFFFF }}); exp->expectfn = NULL; - ip_conntrack_expect_related(ct, &expect); + ip_conntrack_expect_related(ct, exp); UNLOCK_BH(&ip_mms_lock); }