All of lore.kernel.org
 help / color / mirror / Atom feed
* [dhowells-fs:netfs-next 33/50] fs/netfs/bvecq.c:153:15: warning: implicit truncation from 'int' to bit-field changes value from 3 to -1
@ 2026-05-14 20:31 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-05-14 20:31 UTC (permalink / raw)
  To: David Howells; +Cc: llvm, oe-kbuild-all

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git netfs-next
head:   da61c0cc3991fe9aab4894d85ab80021d1f24929
commit: c61bbe667e764ee7f7bc98b9003b225e91eabc69 [33/50] netfs: Add some tools for managing bvecq chains
config: hexagon-allmodconfig (https://download.01.org/0day-ci/archive/20260515/202605150457.18ZdCIcX-lkp@intel.com/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260515/202605150457.18ZdCIcX-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202605150457.18ZdCIcX-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> fs/netfs/bvecq.c:153:15: warning: implicit truncation from 'int' to bit-field changes value from 3 to -1 [-Wbitfield-constant-conversion]
     153 |                 p->mem_type = BVECQ_MEM_ALLOCED;
         |                             ^ ~~~~~~~~~~~~~~~~~
   fs/netfs/bvecq.c:288:16: warning: implicit truncation from 'int' to bit-field changes value from 3 to -1 [-Wbitfield-constant-conversion]
     288 |                         p->mem_type = BVECQ_MEM_ALLOCED;
         |                                     ^ ~~~~~~~~~~~~~~~~~
   2 warnings generated.


vim +/int +153 fs/netfs/bvecq.c

   116	
   117	/**
   118	 * bvecq_alloc_buffer - Allocate a bvecq chain and populate with buffers
   119	 * @size: Target size of the buffer (can be 0 for an empty buffer)
   120	 * @pre_slots: Number of preamble slots to set aside
   121	 * @gfp: The allocation constraints.
   122	 *
   123	 * Allocate a chain of bvecq nodes and populate the slots with sufficient pages
   124	 * to provide at least the requested amount of space, leaving the first
   125	 * @pre_slots slots unset.  The pre-slots must all fit into the the first
   126	 * bvecq.
   127	 *
   128	 * The pages allocated may be compound pages larger than PAGE_SIZE and thus
   129	 * occupy fewer slots.  The pages have their refcounts set to 1 and can be
   130	 * passed to MSG_SPLICE_PAGES.
   131	 *
   132	 * Return: The first node pointer or NULL on allocation failure.
   133	 */
   134	struct bvecq *bvecq_alloc_buffer(size_t size, unsigned int pre_slots, gfp_t gfp)
   135	{
   136		struct bvecq *head = NULL, *tail = NULL, *p = NULL;
   137		size_t nr_per_bq = 32 - 3;
   138		size_t count = DIV_ROUND_UP(size, PAGE_SIZE);
   139	
   140		_enter("%zx,%zx,%u", size, count, pre_slots);
   141	
   142		if (WARN_ON_ONCE(pre_slots > nr_per_bq))
   143			return NULL;
   144	
   145		do {
   146			struct page **pages;
   147			int want, got;
   148	
   149			p = bvecq_alloc_one(umin(pre_slots + count, nr_per_bq), gfp);
   150			if (!p)
   151				goto oom;
   152	
 > 153			p->mem_type = BVECQ_MEM_ALLOCED;
   154	
   155			if (tail) {
   156				tail->next = p;
   157				p->prev = tail;
   158			} else {
   159				head = p;
   160			}
   161			tail = p;
   162			if (!count)
   163				break;
   164	
   165			/* Need to clear pre slots and pages[], so just clear all. */
   166			memset(p->bv, 0, p->max_slots * sizeof(p->bv[0]));
   167	
   168			pages = (struct page **)&p->bv[p->max_slots];
   169			pages -= p->max_slots - pre_slots;
   170	
   171			want = umin(count, p->max_slots - pre_slots);
   172			got = alloc_pages_bulk(gfp, want, pages);
   173			if (got < want) {
   174				for (int i = 0; i < got; i++) {
   175					__free_page(pages[i]);
   176					pages[i] = NULL;
   177				}
   178				goto oom;
   179			}
   180	
   181			tail->nr_slots = pre_slots + got;
   182			for (int i = 0; i < got; i++) {
   183				int j = pre_slots + i;
   184	
   185				set_page_count(pages[i], 1);
   186				bvec_set_page(&tail->bv[j], pages[i], PAGE_SIZE, 0);
   187			}
   188	
   189			count -= got;
   190			pre_slots = 0;
   191		} while (count > 0);
   192	
   193		return head;
   194	oom:
   195		bvecq_put(head);
   196		return NULL;
   197	}
   198	EXPORT_SYMBOL(bvecq_alloc_buffer);
   199	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-05-14 21:23 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-14 20:31 [dhowells-fs:netfs-next 33/50] fs/netfs/bvecq.c:153:15: warning: implicit truncation from 'int' to bit-field changes value from 3 to -1 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.