Ok, I should've tried the idea that David came up with first - it does in fact make the code quite a bit simpler, and indeed removes the need for the previously introduced "**error_msg" argument that I hadn't really liked anyway. So, changes here are: * move setting the bad attr pointer/message into validate_nla() * remove the recursion patch since that's no longer needed * simply skip the generic bad attr pointer/message setting in case of nested nla_validate() failing since that could fail only due to validate_nla() failing inside, which already sets the extack information johannes