From: Markus Elfring <elfr...@users.sourceforge.net>
Date: Sun, 9 Aug 2020 11:11:20 +0200

Another patch rule was added. A bit of code was copied from a previous
SmPL rule for this change specification.

* Thus reduce duplicate code by using another SmPL disjunction.

* Increase the precision a bit for desired source code adjustments.

Fixes: 9c568dbd677bcfc975220d3157c89c48669a23e3 ("coccinelle: api: extend 
memdup_user rule with vmemdup_user()")
Signed-off-by: Markus Elfring <elfr...@users.sourceforge.net>
---
 scripts/coccinelle/api/memdup_user.cocci | 44 +++++++++---------------
 1 file changed, 16 insertions(+), 28 deletions(-)

diff --git a/scripts/coccinelle/api/memdup_user.cocci 
b/scripts/coccinelle/api/memdup_user.cocci
index e01e95108405..7cf698b4e925 100644
--- a/scripts/coccinelle/api/memdup_user.cocci
+++ b/scripts/coccinelle/api/memdup_user.cocci
@@ -27,34 +27,22 @@ expression from,to,size;
 identifier l1,l2;
 position p : script:python() { relevant(p) };
 @@
-
--  to = \(kmalloc@p\|kzalloc@p\)
--              (size,\(GFP_KERNEL\|GFP_USER\|
--                    \(GFP_KERNEL\|GFP_USER\)|__GFP_NOWARN\));
-+  to = memdup_user(from,size);
-   if (
--      to==NULL
-+      IS_ERR(to)
-                 || ...) {
-   <+... when != goto l1;
--  -ENOMEM
-+  PTR_ERR(to)
-   ...+>
-   }
--  if (copy_from_user(to, from, size) != 0) {
--    <+... when != goto l2;
--    -EFAULT
--    ...+>
--  }
-
-@depends on patch@
-expression from,to,size;
-identifier l1,l2;
-position p : script:python() { relevant(p) };
-@@
-
--  to = \(kvmalloc@p\|kvzalloc@p\)(size,\(GFP_KERNEL\|GFP_USER\));
-+  to = vmemdup_user(from,size);
+ to =
+(
+-     \(kmalloc@p\|kzalloc@p\)
++     memdup_user
+      (
+-      size, \( \(GFP_KERNEL\|GFP_USER\) \| 
\(GFP_KERNEL\|GFP_USER\)|__GFP_NOWARN \)
++      from, size
+      )
+|
+-     \(kvmalloc@p\|kvzalloc@p\)
++     vmemdup_user
+      (
+-      size, \(GFP_KERNEL\|GFP_USER\)
++      from, size
+      )
+);
    if (
 -      to==NULL
 +      IS_ERR(to)
--
2.28.0

_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

Reply via email to