CC: [email protected]
CC: [email protected]
TO: Gao Xiang <[email protected]>
CC: Chao Yu <[email protected]>, Chao Yu <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   2a987e65025e2b79c6d453b78cb5985ac6e5eb26
commit: 14373711dd54be8a84e2f4f624bc58787f80cfbd erofs: add on-disk compression 
configurations
date:   9 months ago
:::::: branch date: 2 days ago
:::::: commit date: 9 months ago
config: arc-randconfig-m031-20211208 
(https://download.01.org/0day-ci/archive/20211209/[email protected]/config)
compiler: arc-elf-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

New smatch warnings:
fs/erofs/super.c:149 erofs_read_metadata() error: buffer overflow 'ptr' 4096 <= 
8191
fs/erofs/super.c:149 erofs_read_metadata() error: buffer overflow 'ptr' 4096 <= 
8191
fs/erofs/super.c:149 erofs_read_metadata() error: buffer overflow 'ptr' 4096 <= 
8191
fs/erofs/super.c:149 erofs_read_metadata() error: buffer overflow 'ptr' 4096 <= 
8191

Old smatch warnings:
arch/arc/include/asm/thread_info.h:65 current_thread_info() error: 
uninitialized symbol 'sp'.

vim +/ptr +149 fs/erofs/super.c

5efe5137f05bbb4 drivers/staging/erofs/super.c Gao Xiang 2019-06-13  124  
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  125  #ifdef 
CONFIG_EROFS_FS_ZIP
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  126  /* 
read variable-sized metadata, offset will be aligned by 4-byte */
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  127  static 
void *erofs_read_metadata(struct super_block *sb, struct page **pagep,
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  128         
                         erofs_off_t *offset, int *lengthp)
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  129  {
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  130         
struct page *page = *pagep;
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  131         
u8 *buffer, *ptr;
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  132         
int len, i, cnt;
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  133         
erofs_blk_t blk;
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  134  
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  135         
*offset = round_up(*offset, 4);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  136         
blk = erofs_blknr(*offset);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  137  
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  138         
if (!page || page->index != blk) {
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  139         
        if (page) {
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  140         
                unlock_page(page);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  141         
                put_page(page);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  142         
        }
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  143         
        page = erofs_get_meta_page(sb, blk);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  144         
        if (IS_ERR(page))
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  145         
                goto err_nullpage;
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  146         
}
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  147  
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  148         
ptr = kmap(page);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29 @149         
len = le16_to_cpu(*(__le16 *)&ptr[erofs_blkoff(*offset)]);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  150         
if (!len)
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  151         
        len = U16_MAX + 1;
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  152         
buffer = kmalloc(len, GFP_KERNEL);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  153         
if (!buffer) {
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  154         
        buffer = ERR_PTR(-ENOMEM);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  155         
        goto out;
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  156         
}
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  157         
*offset += sizeof(__le16);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  158         
*lengthp = len;
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  159  
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  160         
for (i = 0; i < len; i += cnt) {
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  161         
        cnt = min(EROFS_BLKSIZ - (int)erofs_blkoff(*offset), len - i);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  162         
        blk = erofs_blknr(*offset);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  163  
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  164         
        if (!page || page->index != blk) {
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  165         
                if (page) {
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  166         
                        kunmap(page);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  167         
                        unlock_page(page);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  168         
                        put_page(page);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  169         
                }
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  170         
                page = erofs_get_meta_page(sb, blk);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  171         
                if (IS_ERR(page)) {
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  172         
                        kfree(buffer);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  173         
                        goto err_nullpage;
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  174         
                }
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  175         
                ptr = kmap(page);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  176         
        }
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  177         
        memcpy(buffer + i, ptr + erofs_blkoff(*offset), cnt);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  178         
        *offset += cnt;
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  179         
}
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  180  out:
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  181         
kunmap(page);
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  182         
*pagep = page;
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  183         
return buffer;
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  184  
err_nullpage:
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  185         
*pagep = NULL;
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  186         
return page;
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  187  }
14373711dd54be8 fs/erofs/super.c              Gao Xiang 2021-03-29  188  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to