lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sat, 8 Aug 2020 15:57:33 -0700 From: Jack Leadford <leadford.jack@...il.com> To: Jason Gunthorpe <jgg@...pe.ca>, Joe Perches <joe@...ches.com> Cc: Leon Romanovsky <leon@...nel.org>, Greg Kroah-Hartman <gregkh@...uxfoundation.org>, Peilin Ye <yepeilin.cs@...il.com>, Santosh Shilimkar <santosh.shilimkar@...cle.com>, "David S. Miller" <davem@...emloft.net>, Jakub Kicinski <kuba@...nel.org>, Dan Carpenter <dan.carpenter@...cle.com>, Arnd Bergmann <arnd@...db.de>, linux-kernel-mentees@...ts.linuxfoundation.org, netdev@...r.kernel.org, linux-rdma@...r.kernel.org, rds-devel@....oracle.com, linux-kernel@...r.kernel.org Subject: Re: [Linux-kernel-mentees] [PATCH net] rds: Prevent kernel-infoleak in rds_notify_queue_get() Hello! Thanks to Jason for getting this conversation back on track. Yes: in general, {} or a partial initializer /will/ zero padding bits. However, there is a bug in some versions of GCC where {} will /not/ zero padding bits; actually, Jason's test program in this mail https://lore.kernel.org/lkml/20200731143604.GF24045@ziepe.ca/ has the right ingredients to trigger the bug, but the GCC versions used are outside of the bug window. :) For more details on these cases and more (including said GCC bug), see my paper at: https://www.nccgroup.com/us/about-us/newsroom-and-events/blog/2019/october/padding-the-struct-how-a-compiler-optimization-can-disclose-stack-memory/ Hopefully this paper can serve as a helpful reference when these cases are encountered in the kernel. Thank you. Jack Leadford On 8/3/20 4:06 PM, Jason Gunthorpe wrote: > 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. > > The kernel already relies on a lot of C11/C99 features and > behaviors. For instance Linus just bumped the minimum compiler version > so that C11's _Generic is usable. > > Why do you think this particular part of C11 shouldn't be relied on? > > Jason > >
Powered by blists - more mailing lists