From: Julia Lawall <julia.lawall@inria.fr> To: Denis Efremov <efremov@linux.com> Cc: cocci@systeme.lip6.fr, linux-kernel@vger.kernel.org Subject: Re: [Cocci] [PATCH v6] coccinelle: api: add kvfree script Date: Mon, 3 Aug 2020 14:18:03 +0200 (CEST) Message-ID: <alpine.DEB.2.22.394.2008031416301.27678@hadrien> (raw) In-Reply-To: <a8d8eade-1d98-b8d9-7c66-bd05b22af751@linux.com> On Mon, 3 Aug 2020, Denis Efremov wrote: > > > On 8/2/20 11:24 PM, Julia Lawall wrote: > >> +@initialize:python@ > >> +@@ > >> +# low-level memory api > >> +filter = frozenset(['__vmalloc_area_node']) > >> + > >> +def relevant(p): > >> + return not (filter & {el.current_element for el in p}) > > > > Is this used? > > I'll remove it in v8. Or do you want me to add iterate_dir_item() in the list? What is that? > > > > > Otherwise, I think it would be good to not warn about a use of kvfree > > if that use is reachable from a kvmalloc. There seems to be such a false > > positive in fs/btrfs/send.c, on line 1118. > > I don't know how to handle this case without position filter. > It's too complex. In iterate_dir_item() there is: > buf = kmalloc(buf_len, GFP_KERNEL); > while(...) { > if (...) { > if (is_vmalloc_addr(buf)) { > vfree(buf); > ... > } else { > char *tmp = krealloc(buf, ...); > > if (!tmp) > kfree(buf); > ... > } > if (!buf) { > buf = kvmalloc(buf_len, GFP_KERNEL); > ... > } > } > } > kvfree(buf); > > Adding "when != kvfree(E)" is not enough: > * E = \(kvmalloc\|kvzalloc\|kvcalloc\|kvzalloc_node\|kvmalloc_node\| > * kvmalloc_array\)(...)@k > ... when != is_vmalloc_addr(E) > + when != kvfree(E) > when any > * \(kfree\|kzfree\|vfree\|vfree_atomic\)(E)@p Why not just @ok exists@ position p; expression E; @@ E = kvalloc(...) ... kvfree@p(...) Probably that is what you mean by a position filter, but why not add a position filter? julia > > > > It also seems that when there are both a kmalloc and a vmalloc, there is > > no warning if kfree or vfree is used. Is that intentional? > > > > No, I will try to address it in v8. > > Regards, > Denis > _______________________________________________ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci
next prev parent reply index Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-06-05 20:42 [Cocci] [PATCH] " Denis Efremov 2020-06-05 20:51 ` Julia Lawall 2020-06-05 21:15 ` Denis Efremov 2020-06-05 21:19 ` Julia Lawall 2020-06-14 9:03 ` Denis Efremov 2020-06-14 9:17 ` Julia Lawall 2020-06-14 9:24 ` Denis Efremov 2020-06-14 18:36 ` [Cocci] [PATCH v2] " Denis Efremov 2020-07-17 12:00 ` Denis Efremov 2020-07-30 14:01 ` [Cocci] [PATCH v3] " Denis Efremov 2020-07-30 14:05 ` Denis Efremov 2020-07-30 14:07 ` [Cocci] [PATCH v4] " Denis Efremov 2020-07-30 20:15 ` Julia Lawall 2020-07-30 20:38 ` Julia Lawall 2020-07-31 8:31 ` Denis Efremov 2020-07-31 8:48 ` Julia Lawall 2020-07-31 10:47 ` [Cocci] [PATCH v5] " Denis Efremov 2020-07-31 21:00 ` [Cocci] [PATCH v6] " Denis Efremov 2020-08-02 20:24 ` Julia Lawall 2020-08-03 11:33 ` Denis Efremov 2020-08-03 12:18 ` Julia Lawall [this message] 2020-08-03 11:45 ` Denis Efremov 2020-08-03 12:12 ` Julia Lawall 2020-08-03 18:34 ` [Cocci] [PATCH v7] coccinelle: api: add kfree_mismatch script Denis Efremov 2020-09-21 17:15 ` Denis Efremov 2020-10-15 20:48 ` Julia Lawall 2020-10-16 8:54 ` [Cocci] [PATCH v8] " Denis Efremov 2020-10-17 21:17 ` Julia Lawall [not found] <3aea12cf-68dc-e140-936f-cfefb2adbc8f@web.de> 2020-08-02 7:09 ` [Cocci] [PATCH v6] coccinelle: api: add kvfree script Julia Lawall
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=alpine.DEB.2.22.394.2008031416301.27678@hadrien \ --to=julia.lawall@inria.fr \ --cc=cocci@systeme.lip6.fr \ --cc=efremov@linux.com \ --cc=linux-kernel@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Coccinelle Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/cocci/0 cocci/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 cocci cocci/ https://lore.kernel.org/cocci \ cocci@systeme.lip6.fr public-inbox-index cocci Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/fr.lip6.systeme.cocci AGPL code for this site: git clone https://public-inbox.org/public-inbox.git