The semantic patch that makes this output is available
in scripts/coccinelle/api/memdup.cocci.
More information about semantic patching is available at
http://coccinelle.lip6.fr/
Signed-off-by: Shan Wei <shanwei@cn.fujitsu.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
        if (get_callid(dptr, dataoff, datalen, &matchoff, &matchlen))
                return -EINVAL;
 
-       p->pe_data = kmalloc(matchlen, GFP_ATOMIC);
-       if (!p->pe_data)
-               return -ENOMEM;
-
        /* N.B: pe_data is only set on success,
         * this allows fallback to the default persistence logic on failure
         */
-       memcpy(p->pe_data, dptr + matchoff, matchlen);
+       p->pe_data = kmemdup(dptr + matchoff, matchlen, GFP_ATOMIC);
+       if (!p->pe_data)
+               return -ENOMEM;
+
        p->pe_data_len = matchlen;
 
        return 0;
 
                        return 1;
                }
 
-               p->pe_data = kmalloc(pe_data_len, GFP_ATOMIC);
+               p->pe_data = kmemdup(pe_data, pe_data_len, GFP_ATOMIC);
                if (!p->pe_data) {
                        if (p->pe->module)
                                module_put(p->pe->module);
                        return -ENOMEM;
                }
-               memcpy(p->pe_data, pe_data, pe_data_len);
                p->pe_data_len = pe_data_len;
        }
        return 0;