On 2018/12/4 下午8:17, David Sterba wrote: > On Fri, Nov 16, 2018 at 03:54:24PM +0800, Qu Wenruo wrote: >> The only location is the following code: >> >> int level = path->lowest_level + 1; >> BUG_ON(path->lowest_level + 1 >= BTRFS_MAX_LEVEL); >> while(level < BTRFS_MAX_LEVEL) { >> slot = path->slots[level] + 1; >> ... >> } >> path->slots[level] = slot; >> >> Again, it's the stupid compiler needs some hint for the fact that >> we will always enter the while loop for at least once, thus @slot should >> always be initialized. > > Harsh words for the compiler, and I say not deserved. The same code > pasted to kernel a built with the same version does not report the > warning, so it's apparently a missing annotation of BUG_ON in > btrfs-progs that does not give the right hint. > Well, in fact after the recent gcc8 updates (god knows how many versions gcc8 get updated in Arch after the patchset), it doesn't report this error anymore. But your idea on the BUG_ON() lacking noreturn attribute makes sense. I'll just add some hint for kerncompact. Thanks, Qu