>>> +@depends on patch@ >>> +expression from,to,size; >>> +identifier l1,l2; >>> +@@ >>> + >>> +- to = \(kvmalloc\|kvzalloc\)(size,\(GFP_KERNEL\|GFP_USER\)); >>> ++ to = vmemdup_user(from,size); >> >> I propose to combine the desired adjustment with the previous SmPL rule >> by using another disjunction. How do you think about to check run time characteristics for the following SmPL script sketches? A) @R1@ @@ // Change something @R2@ @@ // Change another thing B) @Replacement_with_disjunction@ @@ ( // R1: Change something | // R2: Change another thing ) >>> +@rv depends on !patch@ >>> +expression from,to,size; >>> +position p; >>> +statement S1,S2; >>> +@@ >>> + >>> +* to = \(kvmalloc@p\|kvzalloc@p\)(size,\(GFP_KERNEL\|GFP_USER\)); >>> + if (to==NULL || ...) S1 >>> + if (copy_from_user(to, from, size) != 0) >>> + S2 >> >> * Can it be helpful to omit the SmPL asterisk functionality from >> the operation modes “org” and “report”? >> >> * Should the operation mode “context” work without an extra position metavariable? > > This is fine as is in all three aspects. Is every technique from the Coccinelle software required for each operation mode in such data processing approaches? Regards, Markus