1 // SPDX-License-Identifier: GPL-2.0-only 2 /// Use kmemdup rather than duplicating its implementation 3 /// 4 // Confidence: High 5 // Copyright: (C) 2010-2012 Nicolas Palix. 6 // Copyright: (C) 2010-2012 Julia Lawall, INRIA/LIP6. 7 // Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. 8 // URL: https://coccinelle.gitlabpages.inria.fr/website 9 // Comments: 10 // Options: --no-includes --include-headers 11 12 virtual patch 13 virtual context 14 virtual org 15 virtual report 16 17 @r1@ 18 expression from,to; 19 expression flag; 20 position p; 21 @@ 22 23 to = \(kmalloc@p\|kzalloc@p\)(strlen(from) + 1,flag); 24 25 @r2@ 26 expression x,from,to; 27 expression flag,E1; 28 position p; 29 @@ 30 31 x = strlen(from) + 1; 32 ... when != \( x = E1 \| from = E1 \) 33 to = \(kmalloc@p\|kzalloc@p\)(x,flag); 34 35 @depends on patch@ 36 expression from,to,size,flag; 37 position p != {r1.p,r2.p}; 38 statement S; 39 @@ 40 41 - to = \(kmalloc@p\|kzalloc@p\)(size,flag); 42 + to = kmemdup(from,size,flag); 43 if (to==NULL || ...) S 44 - memcpy(to, from, size); 45 46 @r depends on !patch@ 47 expression from,to,size,flag; 48 position p != {r1.p,r2.p}; 49 statement S; 50 @@ 51 52 * to = \(kmalloc@p\|kzalloc@p\)(size,flag); 53 if (to==NULL || ...) S 54 * memcpy(to, from, size); 55 56 @script:python depends on org@ 57 p << r.p; 58 @@ 59 60 coccilib.org.print_todo(p[0], "WARNING opportunity for kmemdup") 61 62 @script:python depends on report@ 63 p << r.p; 64 @@ 65 66 coccilib.report.print_report(p[0], "WARNING opportunity for kmemdup")
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.