On Fri, Jan 27, 2023 at 07:22:26AM +0200, Leon Romanovsky wrote: > It means changing ALL error unwind places where extack was forwarded > before to subfunctions. > > Places like this: > ret = func(..., extack) > if (ret) { > NL_SET_ERR_MSG_MOD... > return ret; > } > > will need to be changed to something like this: > ret = func(..., extack) > if (ret) { > NL_SET_ERR_MSG_WEAK... > return ret; > } Yeah, but my point is that you inspect the code that you plan to convert, rather than converting it in bulk and inspecting later... > Can we please discuss current code and not over-engineered case which > doesn't exist in the reality? > > Even for your case, I would like to see NL_SET_ERR_MSG_FORCE() to > explicitly say that message will be overwritten. __nla_validate_parse() if (unlikely(rem > 0)) { pr_warn_ratelimited("netlink: %d bytes leftover after parsing attributes in process `%s'.\n", rem, current->comm); NL_SET_ERR_MSG(extack, "bytes leftover after parsing attributes"); if (validate & NL_VALIDATE_TRAILING) return -EINVAL; } return 0; called by nla_validate_deprecated() with validate == NL_VALIDATE_LIBERAL followed by other extack setting in tunnel_key_copy_opts(), which will not overwrite the initial warning message.