diff options
-rw-r--r-- | net/netfilter/nf_conntrack_extend.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/net/netfilter/nf_conntrack_extend.c b/net/netfilter/nf_conntrack_extend.c index bcc19fa4ed1e..ba1c4915e9eb 100644 --- a/net/netfilter/nf_conntrack_extend.c +++ b/net/netfilter/nf_conntrack_extend.c | |||
@@ -88,13 +88,11 @@ void *__nf_ct_ext_add(struct nf_conn *ct, enum nf_ct_ext_id id, gfp_t gfp) | |||
88 | newlen = newoff + t->len; | 88 | newlen = newoff + t->len; |
89 | rcu_read_unlock(); | 89 | rcu_read_unlock(); |
90 | 90 | ||
91 | if (newlen >= ksize(ct->ext)) { | 91 | new = krealloc(ct->ext, newlen, gfp); |
92 | new = kmalloc(newlen, gfp); | 92 | if (!new) |
93 | if (!new) | 93 | return NULL; |
94 | return NULL; | ||
95 | |||
96 | memcpy(new, ct->ext, ct->ext->len); | ||
97 | 94 | ||
95 | if (new != ct->ext) { | ||
98 | for (i = 0; i < NF_CT_EXT_NUM; i++) { | 96 | for (i = 0; i < NF_CT_EXT_NUM; i++) { |
99 | if (!nf_ct_ext_exist(ct, i)) | 97 | if (!nf_ct_ext_exist(ct, i)) |
100 | continue; | 98 | continue; |