From: Pekka Enberg <penberg@xxxxxxxxxxxxxx> The ksize() API is going away because it is being abused and it doesn't even work consistenly across different allocators. Therefore, convert the use of ksize() in net/netfilter/nf_conntrack_extend.c to krealloc() that is open-coded there. Cc: Matt Mackall <mpm@xxxxxxxxxxx> Cc: Christoph Lameter <clameter@xxxxxxx> Signed-off-by: Pekka Enberg <penberg@xxxxxxxxxxxxxx> --- net/netfilter/nf_conntrack_extend.c | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) Index: slab-2.6/net/netfilter/nf_conntrack_extend.c =================================================================== --- slab-2.6.orig/net/netfilter/nf_conntrack_extend.c 2008-05-22 21:38:14.000000000 +0300 +++ slab-2.6/net/netfilter/nf_conntrack_extend.c 2008-05-22 21:38:21.000000000 +0300 @@ -88,27 +88,22 @@ newlen = newoff + t->len; rcu_read_unlock(); - if (newlen >= ksize(ct->ext)) { - new = kmalloc(newlen, gfp); - if (!new) - return NULL; + new = krealloc(ct->ext, newlen, gfp); + if (!new) + return NULL; - memcpy(new, ct->ext, ct->ext->len); - - for (i = 0; i < NF_CT_EXT_NUM; i++) { - if (!nf_ct_ext_exist(ct, i)) - continue; + for (i = 0; i < NF_CT_EXT_NUM; i++) { + if (!nf_ct_ext_exist(ct, i)) + continue; - rcu_read_lock(); - t = rcu_dereference(nf_ct_ext_types[i]); - if (t && t->move) - t->move((void *)new + new->offset[i], - (void *)ct->ext + ct->ext->offset[i]); - rcu_read_unlock(); - } - kfree(ct->ext); - ct->ext = new; + rcu_read_lock(); + t = rcu_dereference(nf_ct_ext_types[i]); + if (t && t->move) + t->move((void *)new + new->offset[i], + (void *)ct->ext + ct->ext->offset[i]); + rcu_read_unlock(); } + ct->ext = new; ct->ext->offset[id] = newoff; ct->ext->len = newlen; -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html