> I think the "if (node)" in the of_node_put() is there on purpose,
Yes, of course. Does such an implementation detail correspond to a general software design pattern? > because it potentially saves the caller one extra if()-statement This can occasionally happen. > and keeps the caller code simpler. A special view on software simplicity can also lead to questionable intermediate function implementation, can't it? > Keeping the goto labels in right order needs precision I can agree to this view. > and can lead to subtle errors. The management of jump labels is just another software development challenge as usual, isn't it? > Sometimes there is no way to avoid that, How do you think about to clarify the constraints which you imagine a bit more? > but here there is. I disagree to this conclusion. Would you like to care a bit more for efficiency and software correctness around the discussed exception handling? Regards, Markus