>>> +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