Re: [RFC 04/11] coccicheck: detect hashmap_entry.hash assignment
From: Junio C Hamano <hidden>
Date: 2019-09-09 18:15:42
Eric Wong [off-list ref] writes:
Eric Wong [off-list ref] wrote:quoted
By renaming the "hash" field to "_hash", it's easy to spot improper initialization of hashmap_entry structs which can leave "hashmap_entry.next" uninitialized.Junio, I'm planning to reroll this series. (Sorry for not following up sooner) Would you prefer I drop 04/11 "hashmap_entry: detect improper initialization" in favor of the following? Thanks.
Automation is good ;-) FWIW, I do not mind the original 04/11 myself too much, though. Thanks.
quoted hunk
---------8<-------- Subject: [PATCH 4/11] coccicheck: detect hashmap_entry.hash assignment Assigning hashmap_entry.hash manually leaves hashmap_entry.next uninitialized, which can be dangerous once the hashmap_entry is inserted into a hashmap. Detect those assignments and use hashmap_entry_init, instead. Signed-off-by: Eric Wong <redacted> --- contrib/coccinelle/hashmap.cocci | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 contrib/coccinelle/hashmap.coccidiff --git a/contrib/coccinelle/hashmap.cocci b/contrib/coccinelle/hashmap.cocci new file mode 100644 index 0000000000..d69e120ccf --- /dev/null +++ b/contrib/coccinelle/hashmap.cocci@@ -0,0 +1,16 @@ +@ hashmap_entry_init_usage @ +expression E; +struct hashmap_entry HME; +@@ +- HME.hash = E; ++ hashmap_entry_init(&HME, E); + +@@ +identifier f !~ "^hashmap_entry_init$"; +expression E; +struct hashmap_entry *HMEP; +@@ + f(...) {<... +- HMEP->hash = E; ++ hashmap_entry_init(HMEP, E); + ...>}