* Re: [Cocci] [PATCH v3 2/3] coccinelle: api: extend memdup_user rule with vmemdup_user() [not found] <e3d2ffb9-2a47-3d77-0501-9d48845435bd@web.de> @ 2020-07-21 9:58 ` Julia Lawall [not found] ` <0b326e2b-723c-3482-c0ef-5d6592a9c6cb@web.de> 0 siblings, 1 reply; 4+ messages in thread From: Julia Lawall @ 2020-07-21 9:58 UTC (permalink / raw) To: Markus Elfring Cc: Michal Marek, Gilles Muller, kernel-janitors, Nicolas Palix, linux-kernel, Coccinelle [-- Attachment #1: Type: text/plain, Size: 980 bytes --] On Tue, 21 Jul 2020, Markus Elfring wrote: > … > > +++ b/scripts/coccinelle/api/memdup_user.cocci > > @@ -39,6 +39,28 @@ … > … > > +@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. > > > > +@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. julia [-- Attachment #2: Type: text/plain, Size: 136 bytes --] _______________________________________________ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <0b326e2b-723c-3482-c0ef-5d6592a9c6cb@web.de>]
* Re: [Cocci] [PATCH v3 2/3] coccinelle: api: extend memdup_user rule with vmemdup_user() [not found] ` <0b326e2b-723c-3482-c0ef-5d6592a9c6cb@web.de> @ 2020-07-22 6:02 ` Julia Lawall [not found] ` <07a06754-94dd-60b1-1ad1-9e602c86b1f8@web.de> 0 siblings, 1 reply; 4+ messages in thread From: Julia Lawall @ 2020-07-22 6:02 UTC (permalink / raw) To: Markus Elfring Cc: Michal Marek, Gilles Muller, kernel-janitors, Nicolas Palix, linux-kernel, Coccinelle [-- Attachment #1: Type: text/plain, Size: 1496 bytes --] 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 > [-- Attachment #2: Type: text/plain, Size: 136 bytes --] _______________________________________________ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <07a06754-94dd-60b1-1ad1-9e602c86b1f8@web.de>]
* Re: [Cocci] [v3 2/3] coccinelle: api: extend memdup_user rule with vmemdup_user() [not found] ` <07a06754-94dd-60b1-1ad1-9e602c86b1f8@web.de> @ 2020-07-22 6:24 ` Julia Lawall 0 siblings, 0 replies; 4+ messages in thread From: Julia Lawall @ 2020-07-22 6:24 UTC (permalink / raw) To: Markus Elfring Cc: Michal Marek, Gilles Muller, kernel-janitors, Nicolas Palix, linux-kernel, Coccinelle On Wed, 22 Jul 2020, Markus Elfring wrote: > > Markus, you are welcome to try this since you are concerned about it. > > I dare to point software design variations for some reasons. > > > > But it doesn't matter. > > Under which circumstances would you begin to care more for involved differences > in corresponding run time characteristics? When the difference is hours vs seconds. In this case, there are tradeoffs between the two options, andI don't know which would be faster, but I think it is extremely unlikely that the difference is noticible. But if you are concerned about it, you are welcome to try. julia _______________________________________________ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Cocci] [PATCH v3 0/3] Update memdup_user.cocci @ 2020-07-20 16:22 Denis Efremov 2020-07-20 16:22 ` [Cocci] [PATCH v3 2/3] coccinelle: api: extend memdup_user rule with vmemdup_user() Denis Efremov 0 siblings, 1 reply; 4+ messages in thread From: Denis Efremov @ 2020-07-20 16:22 UTC (permalink / raw) To: Julia Lawall; +Cc: cocci, linux-kernel Add GFP_USER to the allocation flags and handle vmemdup_user(). Changes in v2: - memdup_user/vmemdup_user matching suppressed - PoC for selfcheck virtual rule Changes in v3: - add missing '-' for patch rule in kmalloc/kzalloc call args - selfcheck rule dropped from patchset Denis Efremov (3): coccinelle: api: extend memdup_user transformation with GFP_USER coccinelle: api: extend memdup_user rule with vmemdup_user() coccinelle: api: filter out memdup_user definitions scripts/coccinelle/api/memdup_user.cocci | 64 ++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 3 deletions(-) -- 2.26.2 _______________________________________________ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Cocci] [PATCH v3 2/3] coccinelle: api: extend memdup_user rule with vmemdup_user() 2020-07-20 16:22 [Cocci] [PATCH v3 0/3] Update memdup_user.cocci Denis Efremov @ 2020-07-20 16:22 ` Denis Efremov 0 siblings, 0 replies; 4+ messages in thread From: Denis Efremov @ 2020-07-20 16:22 UTC (permalink / raw) To: Julia Lawall; +Cc: cocci, linux-kernel Add vmemdup_user() transformations to the memdup_user.cocci rule. Commit 50fd2f298bef ("new primitive: vmemdup_user()") introduced vmemdup_user(). The function uses kvmalloc with GPF_USER flag. Signed-off-by: Denis Efremov <efremov@linux.com> --- scripts/coccinelle/api/memdup_user.cocci | 45 ++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/scripts/coccinelle/api/memdup_user.cocci b/scripts/coccinelle/api/memdup_user.cocci index 0e29d41ecab8..60027e21c5e6 100644 --- a/scripts/coccinelle/api/memdup_user.cocci +++ b/scripts/coccinelle/api/memdup_user.cocci @@ -39,6 +39,28 @@ identifier l1,l2; - ...+> - } +@depends on patch@ +expression from,to,size; +identifier l1,l2; +@@ + +- to = \(kvmalloc\|kvzalloc\)(size,\(GFP_KERNEL\|GFP_USER\)); ++ to = vmemdup_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 +- ...+> +- } + @r depends on !patch@ expression from,to,size; position p; @@ -52,6 +74,17 @@ statement S1,S2; if (copy_from_user(to, from, size) != 0) S2 +@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 + @script:python depends on org@ p << r.p; @@ @@ -63,3 +96,15 @@ p << r.p; @@ coccilib.report.print_report(p[0], "WARNING opportunity for memdup_user") + +@script:python depends on org@ +p << rv.p; +@@ + +coccilib.org.print_todo(p[0], "WARNING opportunity for vmemdup_user") + +@script:python depends on report@ +p << rv.p; +@@ + +coccilib.report.print_report(p[0], "WARNING opportunity for vmemdup_user") -- 2.26.2 _______________________________________________ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-07-22 6:24 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <e3d2ffb9-2a47-3d77-0501-9d48845435bd@web.de> 2020-07-21 9:58 ` [Cocci] [PATCH v3 2/3] coccinelle: api: extend memdup_user rule with vmemdup_user() Julia Lawall [not found] ` <0b326e2b-723c-3482-c0ef-5d6592a9c6cb@web.de> 2020-07-22 6:02 ` Julia Lawall [not found] ` <07a06754-94dd-60b1-1ad1-9e602c86b1f8@web.de> 2020-07-22 6:24 ` [Cocci] [v3 " Julia Lawall 2020-07-20 16:22 [Cocci] [PATCH v3 0/3] Update memdup_user.cocci Denis Efremov 2020-07-20 16:22 ` [Cocci] [PATCH v3 2/3] coccinelle: api: extend memdup_user rule with vmemdup_user() Denis Efremov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).