On Wed, 22 Jul 2020, Markus Elfring wrote: > >>> +@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 > ) Markus, you are welcome to try this since you are concerned about it. But it doesn't matter. julia > > > >>> +@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 >