mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.3 KiB
66 lines
1.3 KiB
// SPDX-License-Identifier: GPL-2.0-only |
|
/// Use kmemdup rather than duplicating its implementation |
|
/// |
|
// Confidence: High |
|
// Copyright: (C) 2010-2012 Nicolas Palix. |
|
// Copyright: (C) 2010-2012 Julia Lawall, INRIA/LIP6. |
|
// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. |
|
// URL: http://coccinelle.lip6.fr/ |
|
// Comments: |
|
// Options: --no-includes --include-headers |
|
|
|
virtual patch |
|
virtual context |
|
virtual org |
|
virtual report |
|
|
|
@r1@ |
|
expression from,to; |
|
expression flag; |
|
position p; |
|
@@ |
|
|
|
to = \(kmalloc@p\|kzalloc@p\)(strlen(from) + 1,flag); |
|
|
|
@r2@ |
|
expression x,from,to; |
|
expression flag,E1; |
|
position p; |
|
@@ |
|
|
|
x = strlen(from) + 1; |
|
... when != \( x = E1 \| from = E1 \) |
|
to = \(kmalloc@p\|kzalloc@p\)(x,flag); |
|
|
|
@depends on patch@ |
|
expression from,to,size,flag; |
|
position p != {r1.p,r2.p}; |
|
statement S; |
|
@@ |
|
|
|
- to = \(kmalloc@p\|kzalloc@p\)(size,flag); |
|
+ to = kmemdup(from,size,flag); |
|
if (to==NULL || ...) S |
|
- memcpy(to, from, size); |
|
|
|
@r depends on !patch@ |
|
expression from,to,size,flag; |
|
position p != {r1.p,r2.p}; |
|
statement S; |
|
@@ |
|
|
|
* to = \(kmalloc@p\|kzalloc@p\)(size,flag); |
|
if (to==NULL || ...) S |
|
* memcpy(to, from, size); |
|
|
|
@script:python depends on org@ |
|
p << r.p; |
|
@@ |
|
|
|
coccilib.org.print_todo(p[0], "WARNING opportunity for kmemdup") |
|
|
|
@script:python depends on report@ |
|
p << r.p; |
|
@@ |
|
|
|
coccilib.report.print_report(p[0], "WARNING opportunity for kmemdup")
|
|
|