Re: [PATCH] devtmpfs: don't use vfs_getattr_nosec to query i_mode
From: Kees Cook
Date: Fri Apr 25 2025 - 11:40:43 EST
On April 25, 2025 6:32:59 AM PDT, Christoph Hellwig <hch@xxxxxx> wrote:
>On Fri, Apr 25, 2025 at 12:12:36PM +0200, Christian Brauner wrote:
>> > That is: if dev_mynode(dev, inode) is not true some random value will be returned.
>>
>> Don't bother resending, Christoph.
>> I've already fixed this with int err = 0 in the tree.
>
>Thanks! Let me use this as a platform to rant about our option
>defaults and/or gcc error handling. It seems like ever since we started
>zeroing on-stack variables by default gcc stopped warnings about using
>uninitialized on-stack variables, leading to tons of these case where
>we don't catch uninitialized variables. Now in this and in many cases
>the code works fine because it assumed zero initialization, but there are
>also cases where it didn't, leading to new bugs.
This isn't the case: the feature was explicitly designed in both GCC and Clang to not disrupt -Wuninitialized. But -Wuninitialized has been so flakey for so long that it is almost useless (there was even -Wmaybe-uninitialized added to try to cover some of the missed diagnostics). And it's one of the many reasons stack variable zeroing is so important, since so much goes undiagnosed. :(
>Can we fix this somehow?
Fixing -Wuninitialized would be lovely, but it seems no one has been able to for years now. 😭
--
Kees Cook