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: Tue, 21 Apr 2020 15:28:51 +0800 From: Gao Xiang <hsiangkao@....com> To: Andrew Morton <akpm@...ux-foundation.org> Cc: Matthew Wilcox <willy@...radead.org>, linux-xfs@...r.kernel.org, Gao Xiang <gaoxiang25@...wei.com>, William Kucharski <william.kucharski@...cle.com>, linux-kernel@...r.kernel.org, linux-f2fs-devel@...ts.sourceforge.net, cluster-devel@...hat.com, linux-mm@...ck.org, ocfs2-devel@....oracle.com, Dave Chinner <dchinner@...hat.com>, linux-fsdevel@...r.kernel.org, linux-ext4@...r.kernel.org, linux-erofs@...ts.ozlabs.org, linux-btrfs@...r.kernel.org Subject: Re: [PATCH v11 19/25] erofs: Convert compressed files from readpages to readahead Hi Andrew, On Mon, Apr 20, 2020 at 10:42:10PM -0700, Andrew Morton wrote: > On Tue, 14 Apr 2020 08:02:27 -0700 Matthew Wilcox <willy@...radead.org> wrote: > > > > > Use the new readahead operation in erofs. > > > > Well this is exciting. > > fs/erofs/data.c: In function erofs_raw_access_readahead: > fs/erofs/data.c:149:18: warning: last_block may be used uninitialized in this function [-Wmaybe-uninitialized] > *last_block + 1 != current_block) { > > It seems to be a preexisting bug, which your patch prompted gcc-7.2.0 > to notice. > > erofs_read_raw_page() goes in and uses *last_block, but neither of its > callers has initialized it. Could the erofs maintainers please take a > look? simply because last_block doesn't need to be initialized at first, because bio == NULL in the begining anyway. I believe this is a gcc false warning because some gcc versions raised some before (many gccs don't, including my current gcc (Debian 8.3.0-6) 8.3.0). in detail, 146 /* note that for readpage case, bio also equals to NULL */ 147 if (bio && 148 /* not continuous */ 149 *last_block + 1 != current_block) { 150 submit_bio_retry: 151 submit_bio(bio); 152 bio = NULL; 153 } bio will be NULL and will bypass the next condition at first. after that, 155 if (!bio) { ... 221 bio = bio_alloc(GFP_NOIO, nblocks); ... } ... 230 err = bio_add_page(bio, page, PAGE_SIZE, 0); 231 /* out of the extent or bio is full */ 232 if (err < PAGE_SIZE) 233 goto submit_bio_retry; 234 235 *last_block = current_block; so bio != NULL, and last_block will be assigned then as well. Thanks, Gao Xiang
Powered by blists - more mailing lists