On 09/09/2024 09:51, Binbin Zhou wrote: >> >>> + return ret; >>> +} >>> + >>> +static int loongson_parse_codec(struct device *dev, struct device_node **dai_node, >>> + const char **dai_name) >>> +{ >>> + struct of_phandle_args args; >>> + struct device_node *codec; >>> + int ret = 0; >>> >>> codec = of_get_child_by_name(dev->of_node, "codec"); >>> - if (!codec) { >>> - dev_err(dev, "audio-codec property missing or invalid\n"); >>> + if (!codec) >> >> Hm? So you exit here and then caller does of_node_put on stack value. >> This is buggy. > > Sorry, I can not get your point, I think there is nothing that should be put. You drop reference from a pointer which is a random stack value. Best regards, Krzysztof