On Sun, Aug 02, 2020 at 03:45:40PM -0700, Joe Perches wrote: > On Sun, 2020-08-02 at 19:28 -0300, Jason Gunthorpe wrote: > > On Sun, Aug 02, 2020 at 03:23:58PM -0700, Joe Perches wrote: > > > On Sun, 2020-08-02 at 19:10 -0300, Jason Gunthorpe wrote: > > > > On Sat, Aug 01, 2020 at 08:38:33AM +0300, Leon Romanovsky wrote: > > > > > > > > > I'm using {} instead of {0} because of this GCC bug. > > > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119 > > > > > > > > This is why the {} extension exists.. > > > > > > There is no guarantee that the gcc struct initialization {} > > > extension also zeros padding. > > > > We just went over this. Yes there is, C11 requires it. > > c11 is not c90. The kernel uses c90. It is not accurate, kernel uses gnu89 dialect, which is C90 with some C99 features [1]. In our case, we rely on GCC extension {} that doesn't contradict standart [2] and fills holes with zeros too. [1] Makefile:500 496 KBUILD_CFLAGS := -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs \ 497 -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE \ 498 -Werror=implicit-function-declaration -Werror=implicit-int \ 499 -Wno-format-security \ 500 -std=gnu89 [2] From GCC: https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html "When a base standard is specified, the compiler accepts all programs following that standard plus those using GNU extensions that do not contradict it." Thanks > > >