* [Cocci] How to match function-like macro calls, e.g. RTA_ALIGN(rta->rta_len)? @ 2021-01-11 20:06 Denis Efremov 2021-01-11 20:23 ` Julia Lawall 0 siblings, 1 reply; 7+ messages in thread From: Denis Efremov @ 2021-01-11 20:06 UTC (permalink / raw) To: Coccinelle Hi, Let's suppose I want to match otx_cpt_aead_cbc_aes_sha_setkey() function from drivers/crypto/marvell/octeontx/otx_cptvf_algs.c file (linux kernel). My pattern: @exists@ identifier rta, param, key, keylen; position p; @@ otx_cpt_aead_cbc_aes_sha_setkey(..., unsigned char *key, unsigned int keylen) { ... * if (RTA_PAYLOAD(rta) < sizeof(*param))@p goto badkey; ... * key += RTA_ALIGN(rta->rta_len); * keylen -= RTA_ALIGN(rta->rta_len); ... } $ spatch --no-includes --include-headers --cocci-file test.cocci drivers/crypto/marvell/octeontx/otx_cptvf_algs.c init_defs_builtins: /usr/lib64/coccinelle/standard.h minus: parse error: File "test.cocci", line 13, column 9, charpos = 219 around = 'RTA_ALIGN', whole content = * key += RTA_ALIGN(rta->rta_len); What can I do to match RTA_ALIGN(...) lines? Thanks, Denis _______________________________________________ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Cocci] How to match function-like macro calls, e.g. RTA_ALIGN(rta->rta_len)? 2021-01-11 20:06 [Cocci] How to match function-like macro calls, e.g. RTA_ALIGN(rta->rta_len)? Denis Efremov @ 2021-01-11 20:23 ` Julia Lawall 2021-01-11 20:32 ` Denis Efremov 0 siblings, 1 reply; 7+ messages in thread From: Julia Lawall @ 2021-01-11 20:23 UTC (permalink / raw) To: Denis Efremov; +Cc: Coccinelle On Mon, 11 Jan 2021, Denis Efremov wrote: > Hi, > > Let's suppose I want to match otx_cpt_aead_cbc_aes_sha_setkey() function from > drivers/crypto/marvell/octeontx/otx_cptvf_algs.c file (linux kernel). > > My pattern: > @exists@ > identifier rta, param, key, keylen; > position p; > @@ > > otx_cpt_aead_cbc_aes_sha_setkey(..., > unsigned char *key, unsigned int keylen) > { > ... > * if (RTA_PAYLOAD(rta) < sizeof(*param))@p > goto badkey; > ... > * key += RTA_ALIGN(rta->rta_len); > * keylen -= RTA_ALIGN(rta->rta_len); > ... > } > > $ spatch --no-includes --include-headers --cocci-file test.cocci drivers/crypto/marvell/octeontx/otx_cptvf_algs.c > init_defs_builtins: /usr/lib64/coccinelle/standard.h > minus: parse error: > File "test.cocci", line 13, column 9, charpos = 219 > around = 'RTA_ALIGN', > whole content = * key += RTA_ALIGN(rta->rta_len); > > > What can I do to match RTA_ALIGN(...) lines? I don't understand the problem. I took your rule and your command line, and everything was fine. julia _______________________________________________ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Cocci] How to match function-like macro calls, e.g. RTA_ALIGN(rta->rta_len)? 2021-01-11 20:23 ` Julia Lawall @ 2021-01-11 20:32 ` Denis Efremov 2021-01-11 20:40 ` Julia Lawall 0 siblings, 1 reply; 7+ messages in thread From: Denis Efremov @ 2021-01-11 20:32 UTC (permalink / raw) To: Julia Lawall; +Cc: Coccinelle On 1/11/21 11:23 PM, Julia Lawall wrote: > > > On Mon, 11 Jan 2021, Denis Efremov wrote: > >> Hi, >> >> Let's suppose I want to match otx_cpt_aead_cbc_aes_sha_setkey() function from >> drivers/crypto/marvell/octeontx/otx_cptvf_algs.c file (linux kernel). >> >> My pattern: >> @exists@ >> identifier rta, param, key, keylen; >> position p; >> @@ >> >> otx_cpt_aead_cbc_aes_sha_setkey(..., >> unsigned char *key, unsigned int keylen) >> { >> ... >> * if (RTA_PAYLOAD(rta) < sizeof(*param))@p >> goto badkey; >> ... >> * key += RTA_ALIGN(rta->rta_len); >> * keylen -= RTA_ALIGN(rta->rta_len); >> ... >> } >> >> $ spatch --no-includes --include-headers --cocci-file test.cocci drivers/crypto/marvell/octeontx/otx_cptvf_algs.c >> init_defs_builtins: /usr/lib64/coccinelle/standard.h >> minus: parse error: >> File "test.cocci", line 13, column 9, charpos = 219 >> around = 'RTA_ALIGN', >> whole content = * key += RTA_ALIGN(rta->rta_len); >> >> >> What can I do to match RTA_ALIGN(...) lines? > > I don't understand the problem. I took your rule and your command line, > and everything was fine. I use version: spatch version 1.0.8-gc1dbb4f-dirty compiled with OCaml version 4.11.1 Flags passed to the configure script: --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-python=/usr/bin/python3 --with-menhir=/usr/bin/menhir OCaml scripting support: yes Python scripting support: yes Syntax of regular expressions: PCRE Maybe parsing error is fixed in new versions? _______________________________________________ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Cocci] How to match function-like macro calls, e.g. RTA_ALIGN(rta->rta_len)? 2021-01-11 20:32 ` Denis Efremov @ 2021-01-11 20:40 ` Julia Lawall 2021-01-11 20:49 ` Denis Efremov 0 siblings, 1 reply; 7+ messages in thread From: Julia Lawall @ 2021-01-11 20:40 UTC (permalink / raw) To: Denis Efremov; +Cc: Coccinelle On Mon, 11 Jan 2021, Denis Efremov wrote: > > > On 1/11/21 11:23 PM, Julia Lawall wrote: > > > > > > On Mon, 11 Jan 2021, Denis Efremov wrote: > > > >> Hi, > >> > >> Let's suppose I want to match otx_cpt_aead_cbc_aes_sha_setkey() function from > >> drivers/crypto/marvell/octeontx/otx_cptvf_algs.c file (linux kernel). > >> > >> My pattern: > >> @exists@ > >> identifier rta, param, key, keylen; > >> position p; > >> @@ > >> > >> otx_cpt_aead_cbc_aes_sha_setkey(..., > >> unsigned char *key, unsigned int keylen) > >> { > >> ... > >> * if (RTA_PAYLOAD(rta) < sizeof(*param))@p > >> goto badkey; > >> ... > >> * key += RTA_ALIGN(rta->rta_len); > >> * keylen -= RTA_ALIGN(rta->rta_len); > >> ... > >> } > >> > >> $ spatch --no-includes --include-headers --cocci-file test.cocci drivers/crypto/marvell/octeontx/otx_cptvf_algs.c > >> init_defs_builtins: /usr/lib64/coccinelle/standard.h > >> minus: parse error: > >> File "test.cocci", line 13, column 9, charpos = 219 > >> around = 'RTA_ALIGN', > >> whole content = * key += RTA_ALIGN(rta->rta_len); > >> > >> > >> What can I do to match RTA_ALIGN(...) lines? > > > > I don't understand the problem. I took your rule and your command line, > > and everything was fine. > > I use version: > spatch version 1.0.8-gc1dbb4f-dirty compiled with OCaml version 4.11.1 > Flags passed to the configure script: --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-python=/usr/bin/python3 --with-menhir=/usr/bin/menhir > OCaml scripting support: yes > Python scripting support: yes > Syntax of regular expressions: PCRE > > Maybe parsing error is fixed in new versions? I can't imagine what would cause a parsing error here. I don't see what could be special about RTA_ALIGN. Normally Coccinelle doesn't even know that it is a macro. Maybe you can try to simplify the semantic patch a little bit and see if there is some change that causes the problem to disappear? Does the problem disappear if you use a name other than RTA_ALIGN? julia _______________________________________________ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Cocci] How to match function-like macro calls, e.g. RTA_ALIGN(rta->rta_len)? 2021-01-11 20:40 ` Julia Lawall @ 2021-01-11 20:49 ` Denis Efremov 2021-01-11 20:59 ` Julia Lawall 0 siblings, 1 reply; 7+ messages in thread From: Denis Efremov @ 2021-01-11 20:49 UTC (permalink / raw) To: Julia Lawall; +Cc: Coccinelle On 1/11/21 11:40 PM, Julia Lawall wrote: > > > On Mon, 11 Jan 2021, Denis Efremov wrote: > >> >> >> On 1/11/21 11:23 PM, Julia Lawall wrote: >>> >>> >>> On Mon, 11 Jan 2021, Denis Efremov wrote: >>> >>>> Hi, >>>> >>>> Let's suppose I want to match otx_cpt_aead_cbc_aes_sha_setkey() function from >>>> drivers/crypto/marvell/octeontx/otx_cptvf_algs.c file (linux kernel). >>>> >>>> My pattern: >>>> @exists@ >>>> identifier rta, param, key, keylen; >>>> position p; >>>> @@ >>>> >>>> otx_cpt_aead_cbc_aes_sha_setkey(..., >>>> unsigned char *key, unsigned int keylen) >>>> { >>>> ... >>>> * if (RTA_PAYLOAD(rta) < sizeof(*param))@p >>>> goto badkey; >>>> ... >>>> * key += RTA_ALIGN(rta->rta_len); >>>> * keylen -= RTA_ALIGN(rta->rta_len); >>>> ... >>>> } >>>> >>>> $ spatch --no-includes --include-headers --cocci-file test.cocci drivers/crypto/marvell/octeontx/otx_cptvf_algs.c >>>> init_defs_builtins: /usr/lib64/coccinelle/standard.h >>>> minus: parse error: >>>> File "test.cocci", line 13, column 9, charpos = 219 >>>> around = 'RTA_ALIGN', >>>> whole content = * key += RTA_ALIGN(rta->rta_len); >>>> >>>> >>>> What can I do to match RTA_ALIGN(...) lines? >>> >>> I don't understand the problem. I took your rule and your command line, >>> and everything was fine. >> >> I use version: >> spatch version 1.0.8-gc1dbb4f-dirty compiled with OCaml version 4.11.1 >> Flags passed to the configure script: --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-python=/usr/bin/python3 --with-menhir=/usr/bin/menhir >> OCaml scripting support: yes >> Python scripting support: yes >> Syntax of regular expressions: PCRE >> >> Maybe parsing error is fixed in new versions? > > I can't imagine what would cause a parsing error here. I don't see what > could be special about RTA_ALIGN. Normally Coccinelle doesn't even know > that it is a macro. Maybe you can try to simplify the semantic patch a > little bit and see if there is some change that causes the problem to > disappear? Does the problem disappear if you use a name other than > RTA_ALIGN? Changing: key += RTA_ALIGN(rta->rta_len); to: key = RTA_ALIGN(rta->rta_len); makes the parsing error disappear. Using aop instead of += leads to the same parsing error: assignment operator aop; key aop RTA_ALIGN(rta->rta_len); init_defs_builtins: /usr/lib64/coccinelle/standard.h minus: parse error: File "test.cocci", line 14, column 10, charpos = 245 around = 'RTA_ALIGN', whole content = * key aop RTA_ALIGN(rta->rta_len); Denis _______________________________________________ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Cocci] How to match function-like macro calls, e.g. RTA_ALIGN(rta->rta_len)? 2021-01-11 20:49 ` Denis Efremov @ 2021-01-11 20:59 ` Julia Lawall 2021-01-11 21:12 ` Denis Efremov 0 siblings, 1 reply; 7+ messages in thread From: Julia Lawall @ 2021-01-11 20:59 UTC (permalink / raw) To: Denis Efremov; +Cc: Coccinelle On Mon, 11 Jan 2021, Denis Efremov wrote: > > > On 1/11/21 11:40 PM, Julia Lawall wrote: > > > > > > On Mon, 11 Jan 2021, Denis Efremov wrote: > > > >> > >> > >> On 1/11/21 11:23 PM, Julia Lawall wrote: > >>> > >>> > >>> On Mon, 11 Jan 2021, Denis Efremov wrote: > >>> > >>>> Hi, > >>>> > >>>> Let's suppose I want to match otx_cpt_aead_cbc_aes_sha_setkey() function from > >>>> drivers/crypto/marvell/octeontx/otx_cptvf_algs.c file (linux kernel). > >>>> > >>>> My pattern: > >>>> @exists@ > >>>> identifier rta, param, key, keylen; > >>>> position p; > >>>> @@ > >>>> > >>>> otx_cpt_aead_cbc_aes_sha_setkey(..., > >>>> unsigned char *key, unsigned int keylen) > >>>> { > >>>> ... > >>>> * if (RTA_PAYLOAD(rta) < sizeof(*param))@p > >>>> goto badkey; > >>>> ... > >>>> * key += RTA_ALIGN(rta->rta_len); > >>>> * keylen -= RTA_ALIGN(rta->rta_len); > >>>> ... > >>>> } > >>>> > >>>> $ spatch --no-includes --include-headers --cocci-file test.cocci drivers/crypto/marvell/octeontx/otx_cptvf_algs.c > >>>> init_defs_builtins: /usr/lib64/coccinelle/standard.h > >>>> minus: parse error: > >>>> File "test.cocci", line 13, column 9, charpos = 219 > >>>> around = 'RTA_ALIGN', > >>>> whole content = * key += RTA_ALIGN(rta->rta_len); > >>>> > >>>> > >>>> What can I do to match RTA_ALIGN(...) lines? > >>> > >>> I don't understand the problem. I took your rule and your command line, > >>> and everything was fine. > >> > >> I use version: > >> spatch version 1.0.8-gc1dbb4f-dirty compiled with OCaml version 4.11.1 > >> Flags passed to the configure script: --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-python=/usr/bin/python3 --with-menhir=/usr/bin/menhir > >> OCaml scripting support: yes > >> Python scripting support: yes > >> Syntax of regular expressions: PCRE > >> > >> Maybe parsing error is fixed in new versions? > > > > I can't imagine what would cause a parsing error here. I don't see what > > could be special about RTA_ALIGN. Normally Coccinelle doesn't even know > > that it is a macro. Maybe you can try to simplify the semantic patch a > > little bit and see if there is some change that causes the problem to > > disappear? Does the problem disappear if you use a name other than > > RTA_ALIGN? > > Changing: > key += RTA_ALIGN(rta->rta_len); > to: > key = RTA_ALIGN(rta->rta_len); > > makes the parsing error disappear. > > Using aop instead of += leads to the same parsing error: > assignment operator aop; > key aop RTA_ALIGN(rta->rta_len); > init_defs_builtins: /usr/lib64/coccinelle/standard.h > minus: parse error: > File "test.cocci", line 14, column 10, charpos = 245 > around = 'RTA_ALIGN', > whole content = * key aop RTA_ALIGN(rta->rta_len); I assume not, but does spatch --parse-cocci test.cocci work? julia _______________________________________________ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Cocci] How to match function-like macro calls, e.g. RTA_ALIGN(rta->rta_len)? 2021-01-11 20:59 ` Julia Lawall @ 2021-01-11 21:12 ` Denis Efremov 0 siblings, 0 replies; 7+ messages in thread From: Denis Efremov @ 2021-01-11 21:12 UTC (permalink / raw) To: Julia Lawall; +Cc: Coccinelle On 1/11/21 11:59 PM, Julia Lawall wrote: > > > On Mon, 11 Jan 2021, Denis Efremov wrote: > >> >> >> On 1/11/21 11:40 PM, Julia Lawall wrote: >>> >>> >>> On Mon, 11 Jan 2021, Denis Efremov wrote: >>> >>>> >>>> >>>> On 1/11/21 11:23 PM, Julia Lawall wrote: >>>>> >>>>> >>>>> On Mon, 11 Jan 2021, Denis Efremov wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> Let's suppose I want to match otx_cpt_aead_cbc_aes_sha_setkey() function from >>>>>> drivers/crypto/marvell/octeontx/otx_cptvf_algs.c file (linux kernel). >>>>>> >>>>>> My pattern: >>>>>> @exists@ >>>>>> identifier rta, param, key, keylen; >>>>>> position p; >>>>>> @@ >>>>>> >>>>>> otx_cpt_aead_cbc_aes_sha_setkey(..., >>>>>> unsigned char *key, unsigned int keylen) >>>>>> { >>>>>> ... >>>>>> * if (RTA_PAYLOAD(rta) < sizeof(*param))@p >>>>>> goto badkey; >>>>>> ... >>>>>> * key += RTA_ALIGN(rta->rta_len); >>>>>> * keylen -= RTA_ALIGN(rta->rta_len); >>>>>> ... >>>>>> } >>>>>> >>>>>> $ spatch --no-includes --include-headers --cocci-file test.cocci drivers/crypto/marvell/octeontx/otx_cptvf_algs.c >>>>>> init_defs_builtins: /usr/lib64/coccinelle/standard.h >>>>>> minus: parse error: >>>>>> File "test.cocci", line 13, column 9, charpos = 219 >>>>>> around = 'RTA_ALIGN', >>>>>> whole content = * key += RTA_ALIGN(rta->rta_len); >>>>>> >>>>>> >>>>>> What can I do to match RTA_ALIGN(...) lines? >>>>> >>>>> I don't understand the problem. I took your rule and your command line, >>>>> and everything was fine. >>>> >>>> I use version: >>>> spatch version 1.0.8-gc1dbb4f-dirty compiled with OCaml version 4.11.1 >>>> Flags passed to the configure script: --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-python=/usr/bin/python3 --with-menhir=/usr/bin/menhir >>>> OCaml scripting support: yes >>>> Python scripting support: yes >>>> Syntax of regular expressions: PCRE >>>> >>>> Maybe parsing error is fixed in new versions? >>> >>> I can't imagine what would cause a parsing error here. I don't see what >>> could be special about RTA_ALIGN. Normally Coccinelle doesn't even know >>> that it is a macro. Maybe you can try to simplify the semantic patch a >>> little bit and see if there is some change that causes the problem to >>> disappear? Does the problem disappear if you use a name other than >>> RTA_ALIGN? >> >> Changing: >> key += RTA_ALIGN(rta->rta_len); >> to: >> key = RTA_ALIGN(rta->rta_len); >> >> makes the parsing error disappear. >> >> Using aop instead of += leads to the same parsing error: >> assignment operator aop; >> key aop RTA_ALIGN(rta->rta_len); >> init_defs_builtins: /usr/lib64/coccinelle/standard.h >> minus: parse error: >> File "test.cocci", line 14, column 10, charpos = 245 >> around = 'RTA_ALIGN', >> whole content = * key aop RTA_ALIGN(rta->rta_len); > > I assume not, but does spatch --parse-cocci test.cocci work? Works with "key =" pattern, with "key +=" or "key aop" doesn't. The errors are the same: spatch --parse-cocci test.cocci init_defs_builtins: /usr/lib64/coccinelle/standard.h minus: parse error: File "test.cocci", line 13, column 9, charpos = 219 around = 'RTA_ALIGN', whole content = * key += RTA_ALIGN(rta->rta_len); Denis _______________________________________________ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-01-11 21:12 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-01-11 20:06 [Cocci] How to match function-like macro calls, e.g. RTA_ALIGN(rta->rta_len)? Denis Efremov 2021-01-11 20:23 ` Julia Lawall 2021-01-11 20:32 ` Denis Efremov 2021-01-11 20:40 ` Julia Lawall 2021-01-11 20:49 ` Denis Efremov 2021-01-11 20:59 ` Julia Lawall 2021-01-11 21:12 ` 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).