struct type_descriptor is arranged with a NUL terminated string following the kind/info fields.
The only reason this doesn't trip UBSAN detection itself (on more modern compilers at least) is because struct type_descriptor is only referenced in suppressed regions. Switch the declaration to be a real flexible member. No functional change. Fixes: 00fcf4dd8eb4 ("xen/ubsan: Import ubsan implementation from Linux 4.13") Signed-off-by: Andrew Cooper <andrew.coop...@citrix.com> --- CC: George Dunlap <george.dun...@citrix.com> CC: Jan Beulich <jbeul...@suse.com> CC: Stefano Stabellini <sstabell...@kernel.org> CC: Julien Grall <jul...@xen.org> CC: Oleksii Kurochko <oleksii.kuroc...@gmail.com> For 4.19, and for backport to all reasonable versions. This bug deserves some kind of irony award. --- xen/common/ubsan/ubsan.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/common/ubsan/ubsan.h b/xen/common/ubsan/ubsan.h index a3159040fefb..3db42e75b138 100644 --- a/xen/common/ubsan/ubsan.h +++ b/xen/common/ubsan/ubsan.h @@ -10,7 +10,7 @@ enum { struct type_descriptor { u16 type_kind; u16 type_info; - char type_name[1]; + char type_name[]; }; struct source_location { base-commit: 8b4243a9b560c89bb259db5a27832c253d4bebc7 -- 2.39.2