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.