[IPV6]: Use kmemdup
Code diff stats: [acme@newtoy net-2.6.20]$ codiff /tmp/ipv6.ko.before /tmp/ipv6.ko.after /pub/scm/linux/kernel/git/acme/net-2.6.20/net/ipv6/ip6_output.c: ip6_output | -52 ip6_append_data | +2 2 functions changed, 2 bytes added, 52 bytes removed /pub/scm/linux/kernel/git/acme/net-2.6.20/net/ipv6/addrconf.c: addrconf_sysctl_register | -27 1 function changed, 27 bytes removed /pub/scm/linux/kernel/git/acme/net-2.6.20/net/ipv6/tcp_ipv6.c: tcp_v6_syn_recv_sock | -32 tcp_v6_parse_md5_keys | -24 2 functions changed, 56 bytes removed /tmp/ipv6.ko.after: 5 functions changed, 2 bytes added, 135 bytes removed [acme@newtoy net-2.6.20]$ Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
This commit is contained in:
parent
c67862403e
commit
af879cc704
|
@ -3969,10 +3969,9 @@ static void addrconf_sysctl_register(struct inet6_dev *idev, struct ipv6_devconf
|
|||
struct addrconf_sysctl_table *t;
|
||||
char *dev_name = NULL;
|
||||
|
||||
t = kmalloc(sizeof(*t), GFP_KERNEL);
|
||||
t = kmemdup(&addrconf_sysctl, sizeof(*t), GFP_KERNEL);
|
||||
if (t == NULL)
|
||||
return;
|
||||
memcpy(t, &addrconf_sysctl, sizeof(*t));
|
||||
for (i=0; t->addrconf_vars[i].data; i++) {
|
||||
t->addrconf_vars[i].data += (char*)p - (char*)&ipv6_devconf;
|
||||
t->addrconf_vars[i].de = NULL;
|
||||
|
|
|
@ -354,10 +354,9 @@ static int ah6_input(struct xfrm_state *x, struct sk_buff *skb)
|
|||
if (!pskb_may_pull(skb, ah_hlen))
|
||||
goto out;
|
||||
|
||||
tmp_hdr = kmalloc(hdr_len, GFP_ATOMIC);
|
||||
tmp_hdr = kmemdup(skb->nh.raw, hdr_len, GFP_ATOMIC);
|
||||
if (!tmp_hdr)
|
||||
goto out;
|
||||
memcpy(tmp_hdr, skb->nh.raw, hdr_len);
|
||||
if (ipv6_clear_mutable_options(skb->nh.ipv6h, hdr_len, XFRM_POLICY_IN))
|
||||
goto free_out;
|
||||
skb->nh.ipv6h->priority = 0;
|
||||
|
|
|
@ -624,14 +624,13 @@ static int ip6_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *))
|
|||
skb_shinfo(skb)->frag_list = NULL;
|
||||
/* BUILD HEADER */
|
||||
|
||||
tmp_hdr = kmalloc(hlen, GFP_ATOMIC);
|
||||
tmp_hdr = kmemdup(skb->nh.raw, hlen, GFP_ATOMIC);
|
||||
if (!tmp_hdr) {
|
||||
IP6_INC_STATS(ip6_dst_idev(skb->dst), IPSTATS_MIB_FRAGFAILS);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
*prevhdr = NEXTHDR_FRAGMENT;
|
||||
memcpy(tmp_hdr, skb->nh.raw, hlen);
|
||||
__skb_pull(skb, hlen);
|
||||
fh = (struct frag_hdr*)__skb_push(skb, sizeof(struct frag_hdr));
|
||||
skb->nh.raw = __skb_push(skb, hlen);
|
||||
|
|
|
@ -720,10 +720,9 @@ static int tcp_v6_parse_md5_keys (struct sock *sk, char __user *optval,
|
|||
tp->md5sig_info = p;
|
||||
}
|
||||
|
||||
newkey = kmalloc(cmd.tcpm_keylen, GFP_KERNEL);
|
||||
newkey = kmemdup(cmd.tcpm_key, cmd.tcpm_keylen, GFP_KERNEL);
|
||||
if (!newkey)
|
||||
return -ENOMEM;
|
||||
memcpy(newkey, cmd.tcpm_key, cmd.tcpm_keylen);
|
||||
if (ipv6_addr_type(&sin6->sin6_addr) & IPV6_ADDR_MAPPED) {
|
||||
return tcp_v4_md5_do_add(sk, sin6->sin6_addr.s6_addr32[3],
|
||||
newkey, cmd.tcpm_keylen);
|
||||
|
@ -1503,12 +1502,10 @@ static struct sock * tcp_v6_syn_recv_sock(struct sock *sk, struct sk_buff *skb,
|
|||
* memory, then we end up not copying the key
|
||||
* across. Shucks.
|
||||
*/
|
||||
char *newkey = kmalloc(key->keylen, GFP_ATOMIC);
|
||||
if (newkey) {
|
||||
memcpy(newkey, key->key, key->keylen);
|
||||
char *newkey = kmemdup(key->key, key->keylen, GFP_ATOMIC);
|
||||
if (newkey != NULL)
|
||||
tcp_v6_md5_do_add(newsk, &inet6_sk(sk)->daddr,
|
||||
newkey, key->keylen);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in a new issue