Messages in this thread | | | Subject | Re: [v5] Coccinelle: semantic code search for missing put_device() | From | Markus Elfring <> | Date | Fri, 15 Feb 2019 14:15:17 +0100 |
| |
>>> +id = of_find_device_by_node@p1(x) … >>> +if (id == NULL || ...) { ... return ...; } >>> +... when != put_device(&id->dev) >> … >>> + when != if (id) { ... put_device(&id->dev) ... } >> … >> >> I would interpret this SmPL code in the way that the if statement >> for the pointer check is “optional” in this line. >> Is it an extra and redundant SmPL specification when the reference >> release function could eventually be found just anywhere within >> an implementation? > > The proposed when code is correct.
I agree that this SmPL code can work in the way it was designed.
> It is not redundant, because it checks for a particular control-flow pattern.
It took another moment until I dared to express a different software development opinion also on this implementation detail.
Does the first SmPL when specification include the case that a call of the function “put_device” can occur within a branch of an if statement?
Regards, Markus
| |