CC: [email protected]
BCC: [email protected]
In-Reply-To: <[email protected]>
References: <[email protected]>
TO: "Fabio M. De Francesco" <[email protected]>
TO: Chris Mason <[email protected]>
TO: Josef Bacik <[email protected]>
TO: David Sterba <[email protected]>
TO: Ira Weiny <[email protected]>
TO: [email protected]
TO: [email protected]
CC: "Fabio M. De Francesco" <[email protected]>

Hi "Fabio,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on kdave/for-next]
[also build test WARNING on v5.18 next-20220602]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/intel-lab-lkp/linux/commits/Fabio-M-De-Francesco/btrfs-Replace-kmap-with-kmap_local_page/20220531-225557
base:   https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: x86_64-rhel-8.3-kselftests 
(https://download.01.org/0day-ci/archive/20220603/[email protected]/config)
compiler: gcc-11 (Debian 11.3.0-1) 11.3.0

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

New smatch warnings:
fs/btrfs/zlib.c:151 zlib_compress_pages() error: uninitialized symbol 'data_in'.
fs/btrfs/zlib.c:267 zlib_compress_pages() error: uninitialized symbol 
'cpage_out'.

Old smatch warnings:
fs/btrfs/zlib.c:164 zlib_compress_pages() error: uninitialized symbol 'data_in'.
fs/btrfs/zlib.c:227 zlib_compress_pages() error: uninitialized symbol 'ret'.
fs/btrfs/zlib.c:270 zlib_compress_pages() error: uninitialized symbol 'data_in'.

vim +/data_in +151 fs/btrfs/zlib.c

c8b978188c9a0f Chris Mason           2008-10-29   93  
c4bf665a319755 David Sterba          2019-10-01   94  int 
zlib_compress_pages(struct list_head *ws, struct address_space *mapping,
c4bf665a319755 David Sterba          2019-10-01   95            u64 start, 
struct page **pages, unsigned long *out_pages,
c4bf665a319755 David Sterba          2019-10-01   96            unsigned long 
*total_in, unsigned long *total_out)
c8b978188c9a0f Chris Mason           2008-10-29   97  {
261507a02ccba9 Li Zefan              2010-12-17   98    struct workspace 
*workspace = list_entry(ws, struct workspace, list);
c8b978188c9a0f Chris Mason           2008-10-29   99    int ret;
c8b978188c9a0f Chris Mason           2008-10-29  100    char *data_in;
c8b978188c9a0f Chris Mason           2008-10-29  101    char *cpage_out;
c8b978188c9a0f Chris Mason           2008-10-29  102    int nr_pages = 0;
c8b978188c9a0f Chris Mason           2008-10-29  103    struct page *in_page = 
NULL;
c8b978188c9a0f Chris Mason           2008-10-29  104    struct page *out_page = 
NULL;
c8b978188c9a0f Chris Mason           2008-10-29  105    unsigned long 
bytes_left;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  106    unsigned int 
in_buf_pages;
38c31464089f63 David Sterba          2017-02-14  107    unsigned long len = 
*total_out;
4d3a800ebb1299 David Sterba          2017-02-14  108    unsigned long 
nr_dest_pages = *out_pages;
e5d74902362f1a David Sterba          2017-02-14  109    const unsigned long 
max_out = nr_dest_pages * PAGE_SIZE;
c8b978188c9a0f Chris Mason           2008-10-29  110  
c8b978188c9a0f Chris Mason           2008-10-29  111    *out_pages = 0;
c8b978188c9a0f Chris Mason           2008-10-29  112    *total_out = 0;
c8b978188c9a0f Chris Mason           2008-10-29  113    *total_in = 0;
c8b978188c9a0f Chris Mason           2008-10-29  114  
f51d2b59120ff3 David Sterba          2017-09-15  115    if (Z_OK != 
zlib_deflateInit(&workspace->strm, workspace->level)) {
62e855771dacf7 Jeff Mahoney          2016-09-20  116            pr_warn("BTRFS: 
deflateInit failed\n");
60e1975acb48fc Zach Brown            2014-05-09  117            ret = -EIO;
c8b978188c9a0f Chris Mason           2008-10-29  118            goto out;
c8b978188c9a0f Chris Mason           2008-10-29  119    }
c8b978188c9a0f Chris Mason           2008-10-29  120  
7880991344f736 Sergey Senozhatsky    2014-07-07  121    
workspace->strm.total_in = 0;
7880991344f736 Sergey Senozhatsky    2014-07-07  122    
workspace->strm.total_out = 0;
c8b978188c9a0f Chris Mason           2008-10-29  123  
b0ee5e1ec44afd David Sterba          2021-06-14  124    out_page = 
alloc_page(GFP_NOFS);
4b72029dc3fd6b Li Zefan              2010-11-09  125    if (out_page == NULL) {
60e1975acb48fc Zach Brown            2014-05-09  126            ret = -ENOMEM;
4b72029dc3fd6b Li Zefan              2010-11-09  127            goto out;
4b72029dc3fd6b Li Zefan              2010-11-09  128    }
a549d3a90067e8 Fabio M. De Francesco 2022-05-31  129    cpage_out = 
kmap_local_page(out_page);
c8b978188c9a0f Chris Mason           2008-10-29  130    pages[0] = out_page;
c8b978188c9a0f Chris Mason           2008-10-29  131    nr_pages = 1;
c8b978188c9a0f Chris Mason           2008-10-29  132  
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  133    workspace->strm.next_in 
= workspace->buf;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  134    
workspace->strm.avail_in = 0;
7880991344f736 Sergey Senozhatsky    2014-07-07  135    
workspace->strm.next_out = cpage_out;
09cbfeaf1a5a67 Kirill A. Shutemov    2016-04-01  136    
workspace->strm.avail_out = PAGE_SIZE;
c8b978188c9a0f Chris Mason           2008-10-29  137  
7880991344f736 Sergey Senozhatsky    2014-07-07  138    while 
(workspace->strm.total_in < len) {
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  139            /*
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  140             * Get next 
input pages and copy the contents to
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  141             * the 
workspace buffer if required.
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  142             */
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  143            if 
(workspace->strm.avail_in == 0) {
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  144                    
bytes_left = len - workspace->strm.total_in;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  145                    
in_buf_pages = min(DIV_ROUND_UP(bytes_left, PAGE_SIZE),
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  146                            
           workspace->buf_size / PAGE_SIZE);
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  147                    if 
(in_buf_pages > 1) {
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  148                            
int i;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  149  
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  150                            
for (i = 0; i < in_buf_pages; i++) {
a549d3a90067e8 Fabio M. De Francesco 2022-05-31 @151                            
        if (data_in) {
a549d3a90067e8 Fabio M. De Francesco 2022-05-31  152                            
                kunmap_local(data_in);
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  153                            
                put_page(in_page);
55276e14df4324 David Sterba          2021-10-27  154                            
        }
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  155                            
        in_page = find_get_page(mapping,
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  156                            
                                start >> PAGE_SHIFT);
a549d3a90067e8 Fabio M. De Francesco 2022-05-31  157                            
        data_in = kmap_local_page(in_page);
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  158                            
        memcpy(workspace->buf + i * PAGE_SIZE,
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  159                            
               data_in, PAGE_SIZE);
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  160                            
        start += PAGE_SIZE;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  161                            
}
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  162                            
workspace->strm.next_in = workspace->buf;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  163                    } else {
a549d3a90067e8 Fabio M. De Francesco 2022-05-31  164                            
if (data_in) {
a549d3a90067e8 Fabio M. De Francesco 2022-05-31  165                            
        kunmap_local(data_in);
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  166                            
        put_page(in_page);
55276e14df4324 David Sterba          2021-10-27  167                            
}
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  168                            
in_page = find_get_page(mapping,
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  169                            
                        start >> PAGE_SHIFT);
a549d3a90067e8 Fabio M. De Francesco 2022-05-31  170                            
data_in = kmap_local_page(in_page);
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  171                            
start += PAGE_SIZE;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  172                            
workspace->strm.next_in = data_in;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  173                    }
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  174                    
workspace->strm.avail_in = min(bytes_left,
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  175                            
                       (unsigned long) workspace->buf_size);
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  176            }
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  177  
7880991344f736 Sergey Senozhatsky    2014-07-07  178            ret = 
zlib_deflate(&workspace->strm, Z_SYNC_FLUSH);
c8b978188c9a0f Chris Mason           2008-10-29  179            if (ret != 
Z_OK) {
62e855771dacf7 Jeff Mahoney          2016-09-20  180                    
pr_debug("BTRFS: deflate in loop returned %d\n",
c8b978188c9a0f Chris Mason           2008-10-29  181                           
ret);
7880991344f736 Sergey Senozhatsky    2014-07-07  182                    
zlib_deflateEnd(&workspace->strm);
60e1975acb48fc Zach Brown            2014-05-09  183                    ret = 
-EIO;
c8b978188c9a0f Chris Mason           2008-10-29  184                    goto 
out;
c8b978188c9a0f Chris Mason           2008-10-29  185            }
c8b978188c9a0f Chris Mason           2008-10-29  186  
c8b978188c9a0f Chris Mason           2008-10-29  187            /* we're making 
it bigger, give up */
7880991344f736 Sergey Senozhatsky    2014-07-07  188            if 
(workspace->strm.total_in > 8192 &&
7880991344f736 Sergey Senozhatsky    2014-07-07  189                
workspace->strm.total_in <
7880991344f736 Sergey Senozhatsky    2014-07-07  190                
workspace->strm.total_out) {
130d5b415a091e David Sterba          2014-06-20  191                    ret = 
-E2BIG;
c8b978188c9a0f Chris Mason           2008-10-29  192                    goto 
out;
c8b978188c9a0f Chris Mason           2008-10-29  193            }
c8b978188c9a0f Chris Mason           2008-10-29  194            /* we need 
another page for writing out.  Test this
c8b978188c9a0f Chris Mason           2008-10-29  195             * before the 
total_in so we will pull in a new page for
c8b978188c9a0f Chris Mason           2008-10-29  196             * the stream 
end if required
c8b978188c9a0f Chris Mason           2008-10-29  197             */
7880991344f736 Sergey Senozhatsky    2014-07-07  198            if 
(workspace->strm.avail_out == 0) {
a549d3a90067e8 Fabio M. De Francesco 2022-05-31  199                    
kunmap_local(cpage_out);
c8b978188c9a0f Chris Mason           2008-10-29  200                    if 
(nr_pages == nr_dest_pages) {
c8b978188c9a0f Chris Mason           2008-10-29  201                            
out_page = NULL;
60e1975acb48fc Zach Brown            2014-05-09  202                            
ret = -E2BIG;
c8b978188c9a0f Chris Mason           2008-10-29  203                            
goto out;
c8b978188c9a0f Chris Mason           2008-10-29  204                    }
b0ee5e1ec44afd David Sterba          2021-06-14  205                    
out_page = alloc_page(GFP_NOFS);
4b72029dc3fd6b Li Zefan              2010-11-09  206                    if 
(out_page == NULL) {
60e1975acb48fc Zach Brown            2014-05-09  207                            
ret = -ENOMEM;
4b72029dc3fd6b Li Zefan              2010-11-09  208                            
goto out;
4b72029dc3fd6b Li Zefan              2010-11-09  209                    }
a549d3a90067e8 Fabio M. De Francesco 2022-05-31  210                    
cpage_out = kmap_local_page(out_page);
c8b978188c9a0f Chris Mason           2008-10-29  211                    
pages[nr_pages] = out_page;
c8b978188c9a0f Chris Mason           2008-10-29  212                    
nr_pages++;
09cbfeaf1a5a67 Kirill A. Shutemov    2016-04-01  213                    
workspace->strm.avail_out = PAGE_SIZE;
7880991344f736 Sergey Senozhatsky    2014-07-07  214                    
workspace->strm.next_out = cpage_out;
c8b978188c9a0f Chris Mason           2008-10-29  215            }
c8b978188c9a0f Chris Mason           2008-10-29  216            /* we're all 
done */
7880991344f736 Sergey Senozhatsky    2014-07-07  217            if 
(workspace->strm.total_in >= len)
c8b978188c9a0f Chris Mason           2008-10-29  218                    break;
7880991344f736 Sergey Senozhatsky    2014-07-07  219            if 
(workspace->strm.total_out > max_out)
c8b978188c9a0f Chris Mason           2008-10-29  220                    break;
c8b978188c9a0f Chris Mason           2008-10-29  221    }
7880991344f736 Sergey Senozhatsky    2014-07-07  222    
workspace->strm.avail_in = 0;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  223    /*
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  224     * Call deflate with 
Z_FINISH flush parameter providing more output
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  225     * space but no more 
input data, until it returns with Z_STREAM_END.
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  226     */
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  227    while (ret != 
Z_STREAM_END) {
7880991344f736 Sergey Senozhatsky    2014-07-07  228            ret = 
zlib_deflate(&workspace->strm, Z_FINISH);
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  229            if (ret == 
Z_STREAM_END)
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  230                    break;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  231            if (ret != Z_OK 
&& ret != Z_BUF_ERROR) {
7880991344f736 Sergey Senozhatsky    2014-07-07  232                    
zlib_deflateEnd(&workspace->strm);
60e1975acb48fc Zach Brown            2014-05-09  233                    ret = 
-EIO;
c8b978188c9a0f Chris Mason           2008-10-29  234                    goto 
out;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  235            } else if 
(workspace->strm.avail_out == 0) {
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  236                    /* get 
another page for the stream end */
a549d3a90067e8 Fabio M. De Francesco 2022-05-31  237                    
kunmap_local(cpage_out);
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  238                    if 
(nr_pages == nr_dest_pages) {
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  239                            
out_page = NULL;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  240                            
ret = -E2BIG;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  241                            
goto out;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  242                    }
b0ee5e1ec44afd David Sterba          2021-06-14  243                    
out_page = alloc_page(GFP_NOFS);
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  244                    if 
(out_page == NULL) {
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  245                            
ret = -ENOMEM;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  246                            
goto out;
c8b978188c9a0f Chris Mason           2008-10-29  247                    }
a549d3a90067e8 Fabio M. De Francesco 2022-05-31  248                    
cpage_out = kmap_local_page(out_page);
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  249                    
pages[nr_pages] = out_page;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  250                    
nr_pages++;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  251                    
workspace->strm.avail_out = PAGE_SIZE;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  252                    
workspace->strm.next_out = cpage_out;
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  253            }
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  254    }
3fd396afc05fc9 Mikhail Zaslonko      2020-01-30  255    
zlib_deflateEnd(&workspace->strm);
c8b978188c9a0f Chris Mason           2008-10-29  256  
7880991344f736 Sergey Senozhatsky    2014-07-07  257    if 
(workspace->strm.total_out >= workspace->strm.total_in) {
60e1975acb48fc Zach Brown            2014-05-09  258            ret = -E2BIG;
c8b978188c9a0f Chris Mason           2008-10-29  259            goto out;
c8b978188c9a0f Chris Mason           2008-10-29  260    }
c8b978188c9a0f Chris Mason           2008-10-29  261  
c8b978188c9a0f Chris Mason           2008-10-29  262    ret = 0;
7880991344f736 Sergey Senozhatsky    2014-07-07  263    *total_out = 
workspace->strm.total_out;
7880991344f736 Sergey Senozhatsky    2014-07-07  264    *total_in = 
workspace->strm.total_in;
c8b978188c9a0f Chris Mason           2008-10-29  265  out:
c8b978188c9a0f Chris Mason           2008-10-29  266    *out_pages = nr_pages;
a549d3a90067e8 Fabio M. De Francesco 2022-05-31 @267    if (cpage_out)
a549d3a90067e8 Fabio M. De Francesco 2022-05-31  268            
kunmap_local(cpage_out);
55276e14df4324 David Sterba          2021-10-27  269  
a549d3a90067e8 Fabio M. De Francesco 2022-05-31  270    if (data_in) {
a549d3a90067e8 Fabio M. De Francesco 2022-05-31  271            
kunmap_local(data_in);
09cbfeaf1a5a67 Kirill A. Shutemov    2016-04-01  272            
put_page(in_page);
55276e14df4324 David Sterba          2021-10-27  273    }
c8b978188c9a0f Chris Mason           2008-10-29  274    return ret;
c8b978188c9a0f Chris Mason           2008-10-29  275  }
c8b978188c9a0f Chris Mason           2008-10-29  276  

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

Reply via email to