[rgushchin:kmem_reparent.6 16/236] fs/btrfs/zstd.c:396:35: sparse: sparse: incorrect type in argument 1 (different base types)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   https://github.com/rgushchin/linux.git kmem_reparent.6
head:   8bc1e83aac01a49736748e58f885dec56eda5db3
commit: 96d3001e2f61722b7e3d26456133ff2779de268b [16/236] zstd: pass pointer rathen than structure to functions
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.1-rc1-7-g2b96cd8-dirty
        git checkout 96d3001e2f61722b7e3d26456133ff2779de268b
        make ARCH=x86_64 allmodconfig
        make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>


sparse warnings: (new ones prefixed by >>)

>> fs/btrfs/zstd.c:396:35: sparse: sparse: incorrect type in argument 1 (different base types) @@    expected struct ZSTD_parameters const [usertype] *params @@    got ZSTD_parameters const [usertype] *params @@
>> fs/btrfs/zstd.c:396:35: sparse:    expected struct ZSTD_parameters const [usertype] *params
>> fs/btrfs/zstd.c:396:35: sparse:    got struct ZSTD_parameters [usertype] params

vim +396 fs/btrfs/zstd.c

5c1aab1d Nick Terrell 2017-08-09  368  
5c1aab1d Nick Terrell 2017-08-09  369  static int zstd_compress_pages(struct list_head *ws,
5c1aab1d Nick Terrell 2017-08-09  370  		struct address_space *mapping,
5c1aab1d Nick Terrell 2017-08-09  371  		u64 start,
5c1aab1d Nick Terrell 2017-08-09  372  		struct page **pages,
5c1aab1d Nick Terrell 2017-08-09  373  		unsigned long *out_pages,
5c1aab1d Nick Terrell 2017-08-09  374  		unsigned long *total_in,
5c1aab1d Nick Terrell 2017-08-09  375  		unsigned long *total_out)
5c1aab1d Nick Terrell 2017-08-09  376  {
5c1aab1d Nick Terrell 2017-08-09  377  	struct workspace *workspace = list_entry(ws, struct workspace, list);
5c1aab1d Nick Terrell 2017-08-09  378  	ZSTD_CStream *stream;
5c1aab1d Nick Terrell 2017-08-09  379  	int ret = 0;
5c1aab1d Nick Terrell 2017-08-09  380  	int nr_pages = 0;
5c1aab1d Nick Terrell 2017-08-09  381  	struct page *in_page = NULL;  /* The current page to read */
5c1aab1d Nick Terrell 2017-08-09  382  	struct page *out_page = NULL; /* The current page to write to */
5c1aab1d Nick Terrell 2017-08-09  383  	unsigned long tot_in = 0;
5c1aab1d Nick Terrell 2017-08-09  384  	unsigned long tot_out = 0;
5c1aab1d Nick Terrell 2017-08-09  385  	unsigned long len = *total_out;
5c1aab1d Nick Terrell 2017-08-09  386  	const unsigned long nr_dest_pages = *out_pages;
5c1aab1d Nick Terrell 2017-08-09  387  	unsigned long max_out = nr_dest_pages * PAGE_SIZE;
e0dc87af Dennis Zhou  2019-02-04  388  	ZSTD_parameters params = zstd_get_btrfs_parameters(workspace->req_level,
e0dc87af Dennis Zhou  2019-02-04  389  							   len);
5c1aab1d Nick Terrell 2017-08-09  390  
5c1aab1d Nick Terrell 2017-08-09  391  	*out_pages = 0;
5c1aab1d Nick Terrell 2017-08-09  392  	*total_out = 0;
5c1aab1d Nick Terrell 2017-08-09  393  	*total_in = 0;
5c1aab1d Nick Terrell 2017-08-09  394  
5c1aab1d Nick Terrell 2017-08-09  395  	/* Initialize the stream */
5c1aab1d Nick Terrell 2017-08-09 @396  	stream = ZSTD_initCStream(params, len, workspace->mem,
5c1aab1d Nick Terrell 2017-08-09  397  			workspace->size);
5c1aab1d Nick Terrell 2017-08-09  398  	if (!stream) {
5c1aab1d Nick Terrell 2017-08-09  399  		pr_warn("BTRFS: ZSTD_initCStream failed\n");
5c1aab1d Nick Terrell 2017-08-09  400  		ret = -EIO;
5c1aab1d Nick Terrell 2017-08-09  401  		goto out;
5c1aab1d Nick Terrell 2017-08-09  402  	}
5c1aab1d Nick Terrell 2017-08-09  403  
5c1aab1d Nick Terrell 2017-08-09  404  	/* map in the first page of input data */
5c1aab1d Nick Terrell 2017-08-09  405  	in_page = find_get_page(mapping, start >> PAGE_SHIFT);
431e9822 David Sterba 2017-11-15  406  	workspace->in_buf.src = kmap(in_page);
431e9822 David Sterba 2017-11-15  407  	workspace->in_buf.pos = 0;
431e9822 David Sterba 2017-11-15  408  	workspace->in_buf.size = min_t(size_t, len, PAGE_SIZE);
5c1aab1d Nick Terrell 2017-08-09  409  
5c1aab1d Nick Terrell 2017-08-09  410  
5c1aab1d Nick Terrell 2017-08-09  411  	/* Allocate and map in the output buffer */
5c1aab1d Nick Terrell 2017-08-09  412  	out_page = alloc_page(GFP_NOFS | __GFP_HIGHMEM);
5c1aab1d Nick Terrell 2017-08-09  413  	if (out_page == NULL) {
5c1aab1d Nick Terrell 2017-08-09  414  		ret = -ENOMEM;
5c1aab1d Nick Terrell 2017-08-09  415  		goto out;
5c1aab1d Nick Terrell 2017-08-09  416  	}
5c1aab1d Nick Terrell 2017-08-09  417  	pages[nr_pages++] = out_page;
431e9822 David Sterba 2017-11-15  418  	workspace->out_buf.dst = kmap(out_page);
431e9822 David Sterba 2017-11-15  419  	workspace->out_buf.pos = 0;
431e9822 David Sterba 2017-11-15  420  	workspace->out_buf.size = min_t(size_t, max_out, PAGE_SIZE);
5c1aab1d Nick Terrell 2017-08-09  421  
5c1aab1d Nick Terrell 2017-08-09  422  	while (1) {
5c1aab1d Nick Terrell 2017-08-09  423  		size_t ret2;
5c1aab1d Nick Terrell 2017-08-09  424  
431e9822 David Sterba 2017-11-15  425  		ret2 = ZSTD_compressStream(stream, &workspace->out_buf,
431e9822 David Sterba 2017-11-15  426  				&workspace->in_buf);
5c1aab1d Nick Terrell 2017-08-09  427  		if (ZSTD_isError(ret2)) {
5c1aab1d Nick Terrell 2017-08-09  428  			pr_debug("BTRFS: ZSTD_compressStream returned %d\n",
5c1aab1d Nick Terrell 2017-08-09  429  					ZSTD_getErrorCode(ret2));
5c1aab1d Nick Terrell 2017-08-09  430  			ret = -EIO;
5c1aab1d Nick Terrell 2017-08-09  431  			goto out;
5c1aab1d Nick Terrell 2017-08-09  432  		}
5c1aab1d Nick Terrell 2017-08-09  433  
5c1aab1d Nick Terrell 2017-08-09  434  		/* Check to see if we are making it bigger */
431e9822 David Sterba 2017-11-15  435  		if (tot_in + workspace->in_buf.pos > 8192 &&
431e9822 David Sterba 2017-11-15  436  				tot_in + workspace->in_buf.pos <
431e9822 David Sterba 2017-11-15  437  				tot_out + workspace->out_buf.pos) {
5c1aab1d Nick Terrell 2017-08-09  438  			ret = -E2BIG;
5c1aab1d Nick Terrell 2017-08-09  439  			goto out;
5c1aab1d Nick Terrell 2017-08-09  440  		}
5c1aab1d Nick Terrell 2017-08-09  441  
5c1aab1d Nick Terrell 2017-08-09  442  		/* We've reached the end of our output range */
431e9822 David Sterba 2017-11-15  443  		if (workspace->out_buf.pos >= max_out) {
431e9822 David Sterba 2017-11-15  444  			tot_out += workspace->out_buf.pos;
5c1aab1d Nick Terrell 2017-08-09  445  			ret = -E2BIG;
5c1aab1d Nick Terrell 2017-08-09  446  			goto out;
5c1aab1d Nick Terrell 2017-08-09  447  		}
5c1aab1d Nick Terrell 2017-08-09  448  
5c1aab1d Nick Terrell 2017-08-09  449  		/* Check if we need more output space */
431e9822 David Sterba 2017-11-15  450  		if (workspace->out_buf.pos == workspace->out_buf.size) {
5c1aab1d Nick Terrell 2017-08-09  451  			tot_out += PAGE_SIZE;
5c1aab1d Nick Terrell 2017-08-09  452  			max_out -= PAGE_SIZE;
5c1aab1d Nick Terrell 2017-08-09  453  			kunmap(out_page);
5c1aab1d Nick Terrell 2017-08-09  454  			if (nr_pages == nr_dest_pages) {
5c1aab1d Nick Terrell 2017-08-09  455  				out_page = NULL;
5c1aab1d Nick Terrell 2017-08-09  456  				ret = -E2BIG;
5c1aab1d Nick Terrell 2017-08-09  457  				goto out;
5c1aab1d Nick Terrell 2017-08-09  458  			}
5c1aab1d Nick Terrell 2017-08-09  459  			out_page = alloc_page(GFP_NOFS | __GFP_HIGHMEM);
5c1aab1d Nick Terrell 2017-08-09  460  			if (out_page == NULL) {
5c1aab1d Nick Terrell 2017-08-09  461  				ret = -ENOMEM;
5c1aab1d Nick Terrell 2017-08-09  462  				goto out;
5c1aab1d Nick Terrell 2017-08-09  463  			}
5c1aab1d Nick Terrell 2017-08-09  464  			pages[nr_pages++] = out_page;
431e9822 David Sterba 2017-11-15  465  			workspace->out_buf.dst = kmap(out_page);
431e9822 David Sterba 2017-11-15  466  			workspace->out_buf.pos = 0;
431e9822 David Sterba 2017-11-15  467  			workspace->out_buf.size = min_t(size_t, max_out,
431e9822 David Sterba 2017-11-15  468  							PAGE_SIZE);
5c1aab1d Nick Terrell 2017-08-09  469  		}
5c1aab1d Nick Terrell 2017-08-09  470  
5c1aab1d Nick Terrell 2017-08-09  471  		/* We've reached the end of the input */
431e9822 David Sterba 2017-11-15  472  		if (workspace->in_buf.pos >= len) {
431e9822 David Sterba 2017-11-15  473  			tot_in += workspace->in_buf.pos;
5c1aab1d Nick Terrell 2017-08-09  474  			break;
5c1aab1d Nick Terrell 2017-08-09  475  		}
5c1aab1d Nick Terrell 2017-08-09  476  
5c1aab1d Nick Terrell 2017-08-09  477  		/* Check if we need more input */
431e9822 David Sterba 2017-11-15  478  		if (workspace->in_buf.pos == workspace->in_buf.size) {
5c1aab1d Nick Terrell 2017-08-09  479  			tot_in += PAGE_SIZE;
5c1aab1d Nick Terrell 2017-08-09  480  			kunmap(in_page);
5c1aab1d Nick Terrell 2017-08-09  481  			put_page(in_page);
5c1aab1d Nick Terrell 2017-08-09  482  
5c1aab1d Nick Terrell 2017-08-09  483  			start += PAGE_SIZE;
5c1aab1d Nick Terrell 2017-08-09  484  			len -= PAGE_SIZE;
5c1aab1d Nick Terrell 2017-08-09  485  			in_page = find_get_page(mapping, start >> PAGE_SHIFT);
431e9822 David Sterba 2017-11-15  486  			workspace->in_buf.src = kmap(in_page);
431e9822 David Sterba 2017-11-15  487  			workspace->in_buf.pos = 0;
431e9822 David Sterba 2017-11-15  488  			workspace->in_buf.size = min_t(size_t, len, PAGE_SIZE);
5c1aab1d Nick Terrell 2017-08-09  489  		}
5c1aab1d Nick Terrell 2017-08-09  490  	}
5c1aab1d Nick Terrell 2017-08-09  491  	while (1) {
5c1aab1d Nick Terrell 2017-08-09  492  		size_t ret2;
5c1aab1d Nick Terrell 2017-08-09  493  
431e9822 David Sterba 2017-11-15  494  		ret2 = ZSTD_endStream(stream, &workspace->out_buf);
5c1aab1d Nick Terrell 2017-08-09  495  		if (ZSTD_isError(ret2)) {
5c1aab1d Nick Terrell 2017-08-09  496  			pr_debug("BTRFS: ZSTD_endStream returned %d\n",
5c1aab1d Nick Terrell 2017-08-09  497  					ZSTD_getErrorCode(ret2));
5c1aab1d Nick Terrell 2017-08-09  498  			ret = -EIO;
5c1aab1d Nick Terrell 2017-08-09  499  			goto out;
5c1aab1d Nick Terrell 2017-08-09  500  		}
5c1aab1d Nick Terrell 2017-08-09  501  		if (ret2 == 0) {
431e9822 David Sterba 2017-11-15  502  			tot_out += workspace->out_buf.pos;
5c1aab1d Nick Terrell 2017-08-09  503  			break;
5c1aab1d Nick Terrell 2017-08-09  504  		}
431e9822 David Sterba 2017-11-15  505  		if (workspace->out_buf.pos >= max_out) {
431e9822 David Sterba 2017-11-15  506  			tot_out += workspace->out_buf.pos;
5c1aab1d Nick Terrell 2017-08-09  507  			ret = -E2BIG;
5c1aab1d Nick Terrell 2017-08-09  508  			goto out;
5c1aab1d Nick Terrell 2017-08-09  509  		}
5c1aab1d Nick Terrell 2017-08-09  510  
5c1aab1d Nick Terrell 2017-08-09  511  		tot_out += PAGE_SIZE;
5c1aab1d Nick Terrell 2017-08-09  512  		max_out -= PAGE_SIZE;
5c1aab1d Nick Terrell 2017-08-09  513  		kunmap(out_page);
5c1aab1d Nick Terrell 2017-08-09  514  		if (nr_pages == nr_dest_pages) {
5c1aab1d Nick Terrell 2017-08-09  515  			out_page = NULL;
5c1aab1d Nick Terrell 2017-08-09  516  			ret = -E2BIG;
5c1aab1d Nick Terrell 2017-08-09  517  			goto out;
5c1aab1d Nick Terrell 2017-08-09  518  		}
5c1aab1d Nick Terrell 2017-08-09  519  		out_page = alloc_page(GFP_NOFS | __GFP_HIGHMEM);
5c1aab1d Nick Terrell 2017-08-09  520  		if (out_page == NULL) {
5c1aab1d Nick Terrell 2017-08-09  521  			ret = -ENOMEM;
5c1aab1d Nick Terrell 2017-08-09  522  			goto out;
5c1aab1d Nick Terrell 2017-08-09  523  		}
5c1aab1d Nick Terrell 2017-08-09  524  		pages[nr_pages++] = out_page;
431e9822 David Sterba 2017-11-15  525  		workspace->out_buf.dst = kmap(out_page);
431e9822 David Sterba 2017-11-15  526  		workspace->out_buf.pos = 0;
431e9822 David Sterba 2017-11-15  527  		workspace->out_buf.size = min_t(size_t, max_out, PAGE_SIZE);
5c1aab1d Nick Terrell 2017-08-09  528  	}
5c1aab1d Nick Terrell 2017-08-09  529  
5c1aab1d Nick Terrell 2017-08-09  530  	if (tot_out >= tot_in) {
5c1aab1d Nick Terrell 2017-08-09  531  		ret = -E2BIG;
5c1aab1d Nick Terrell 2017-08-09  532  		goto out;
5c1aab1d Nick Terrell 2017-08-09  533  	}
5c1aab1d Nick Terrell 2017-08-09  534  
5c1aab1d Nick Terrell 2017-08-09  535  	ret = 0;
5c1aab1d Nick Terrell 2017-08-09  536  	*total_in = tot_in;
5c1aab1d Nick Terrell 2017-08-09  537  	*total_out = tot_out;
5c1aab1d Nick Terrell 2017-08-09  538  out:
5c1aab1d Nick Terrell 2017-08-09  539  	*out_pages = nr_pages;
5c1aab1d Nick Terrell 2017-08-09  540  	/* Cleanup */
5c1aab1d Nick Terrell 2017-08-09  541  	if (in_page) {
5c1aab1d Nick Terrell 2017-08-09  542  		kunmap(in_page);
5c1aab1d Nick Terrell 2017-08-09  543  		put_page(in_page);
5c1aab1d Nick Terrell 2017-08-09  544  	}
5c1aab1d Nick Terrell 2017-08-09  545  	if (out_page)
5c1aab1d Nick Terrell 2017-08-09  546  		kunmap(out_page);
5c1aab1d Nick Terrell 2017-08-09  547  	return ret;
5c1aab1d Nick Terrell 2017-08-09  548  }
5c1aab1d Nick Terrell 2017-08-09  549  

:::::: The code at line 396 was first introduced by commit
:::::: 5c1aab1dd5445ed8bdcdbb575abc1b0d7ee5b2e7 btrfs: Add zstd support

:::::: TO: Nick Terrell <terrelln@xxxxxx>
:::::: CC: Chris Mason <clm@xxxxxx>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux