[PATCH 13/18] Coccinelle: Add api/memdup_user

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Nicolas Palix
Date: Tuesday, August 24, 2010 - 8:39 am

Use kmemdup_user rather than duplicating its implementation
This is a little bit restricted to reduce false positives

Signed-off-by: Nicolas Palix <npalix@diku.dk>
Signed-off-by: Julia Lawall <julia@diku.dk>
---
 scripts/coccinelle/api/memdup_user.cocci |   35 ++++++++++++++++++++++++++++++
 1 files changed, 35 insertions(+), 0 deletions(-)
 create mode 100644 scripts/coccinelle/api/memdup_user.cocci

diff --git a/scripts/coccinelle/api/memdup_user.cocci b/scripts/coccinelle/api/memdup_user.cocci
new file mode 100644
index 0000000..72ce012
--- /dev/null
+++ b/scripts/coccinelle/api/memdup_user.cocci
@@ -0,0 +1,35 @@
+/// Use kmemdup_user rather than duplicating its implementation
+/// This is a little bit restricted to reduce false positives
+///
+// Confidence: High
+// Copyright: (C) 2010 Nicolas Palix, DIKU.  GPLv2.
+// Copyright: (C) 2010 Julia Lawall, DIKU.  GPLv2.
+// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6.  GPLv2.
+// URL: http://coccinelle.lip6.fr/
+// Comments:
+// Options: -no_includes -include_headers
+
+virtual patch
+
+@@
+expression from,to,size,flag;
+position p;
+identifier l1,l2;
+@@
+
+-  to = \(kmalloc@p\|kzalloc@p\)(size,flag);
++  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
+-    ...+>
+-  }
-- 
1.7.0.4

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 01/18] Coccinelle: Add null/eno.cocci, Nicolas Palix, (Tue Aug 24, 8:38 am)
[PATCH 02/18] Coccinelle: Add null/kmerr.cocci, Nicolas Palix, (Tue Aug 24, 8:38 am)
[PATCH 04/18] Coccinelle: Add locks/call_kern.cocci, Nicolas Palix, (Tue Aug 24, 8:38 am)
[PATCH 05/18] Coccinelle: Add locks/double_lock.cocci, Nicolas Palix, (Tue Aug 24, 8:38 am)
[PATCH 06/18] Coccinelle: Add locks/mini_lock.cocci, Nicolas Palix, (Tue Aug 24, 8:39 am)
[PATCH 07/18] Coccinelle: Add iterators/fen.cocci, Nicolas Palix, (Tue Aug 24, 8:39 am)
[PATCH 08/18] Coccinelle: Add iterators/itnull.cocci, Nicolas Palix, (Tue Aug 24, 8:39 am)
[PATCH 10/18] Coccinelle: Add free/kfree.cocci, Nicolas Palix, (Tue Aug 24, 8:39 am)
[PATCH 11/18] Coccinelle: Add api/kstrdup.cocci, Nicolas Palix, (Tue Aug 24, 8:39 am)
[PATCH 12/18] Coccinelle: Add api/memdup.cocci, Nicolas Palix, (Tue Aug 24, 8:39 am)
[PATCH 13/18] Coccinelle: Add api/memdup_user, Nicolas Palix, (Tue Aug 24, 8:39 am)
[PATCH 17/18] Coccinelle: Add misc/doubleinit.cocci, Nicolas Palix, (Tue Aug 24, 8:39 am)
[PATCH 18/18] Coccinelle: Add misc/ifcol.cocci, Nicolas Palix, (Tue Aug 24, 8:39 am)