All of lore.kernel.org
 help / color / mirror / Atom feed
* [android-common:android16-6.12-kminext 1/1] fs/netfs/read_collect.c:219 netfs_consume_read_data() error: we previously assumed 'folioq' could be null (see line 115)
@ 2026-07-18 14:36 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-07-18 14:36 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: cros-kernel-buildreports@googlegroups.com

tree:   https://android.googlesource.com/kernel/common android16-6.12-kminext
head:   2bfc8fe4015fcf2e39fc5989b95d20d6b5f7b566
commit: ee4cdf7ba857a894ad1650d6ab77669cbbfa329e [1/1] netfs: Speed up buffered reading
:::::: branch date: 2 days ago
:::::: commit date: 1 year, 10 months ago
config: i386-randconfig-141 (https://download.01.org/0day-ci/archive/20260718/202607182144.OsRTYRad-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
smatch: v0.5.0-9185-gbcc58b9c

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
| Fixes: ee4cdf7ba857 ("netfs: Speed up buffered reading")
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202607182144.OsRTYRad-lkp@intel.com/

smatch warnings:
fs/netfs/read_collect.c:219 netfs_consume_read_data() error: we previously assumed 'folioq' could be null (see line 115)

vim +/folioq +219 fs/netfs/read_collect.c

ee4cdf7ba857a8 David Howells 2024-07-02   81  
ee4cdf7ba857a8 David Howells 2024-07-02   82  /*
ee4cdf7ba857a8 David Howells 2024-07-02   83   * Unlock any folios that are now completely read.  Returns true if the
ee4cdf7ba857a8 David Howells 2024-07-02   84   * subrequest is removed from the list.
ee4cdf7ba857a8 David Howells 2024-07-02   85   */
ee4cdf7ba857a8 David Howells 2024-07-02   86  static bool netfs_consume_read_data(struct netfs_io_subrequest *subreq, bool was_async)
ee4cdf7ba857a8 David Howells 2024-07-02   87  {
ee4cdf7ba857a8 David Howells 2024-07-02   88  	struct netfs_io_subrequest *prev, *next;
ee4cdf7ba857a8 David Howells 2024-07-02   89  	struct netfs_io_request *rreq = subreq->rreq;
ee4cdf7ba857a8 David Howells 2024-07-02   90  	struct folio_queue *folioq = subreq->curr_folioq;
ee4cdf7ba857a8 David Howells 2024-07-02   91  	size_t avail, prev_donated, next_donated, fsize, part, excess;
ee4cdf7ba857a8 David Howells 2024-07-02   92  	loff_t fpos, start;
ee4cdf7ba857a8 David Howells 2024-07-02   93  	loff_t fend;
ee4cdf7ba857a8 David Howells 2024-07-02   94  	int slot = subreq->curr_folioq_slot;
ee4cdf7ba857a8 David Howells 2024-07-02   95  
ee4cdf7ba857a8 David Howells 2024-07-02   96  	if (WARN(subreq->transferred > subreq->len,
ee4cdf7ba857a8 David Howells 2024-07-02   97  		 "Subreq overread: R%x[%x] %zu > %zu",
ee4cdf7ba857a8 David Howells 2024-07-02   98  		 rreq->debug_id, subreq->debug_index,
ee4cdf7ba857a8 David Howells 2024-07-02   99  		 subreq->transferred, subreq->len))
ee4cdf7ba857a8 David Howells 2024-07-02  100  		subreq->transferred = subreq->len;
ee4cdf7ba857a8 David Howells 2024-07-02  101  
ee4cdf7ba857a8 David Howells 2024-07-02  102  next_folio:
ee4cdf7ba857a8 David Howells 2024-07-02  103  	fsize = PAGE_SIZE << subreq->curr_folio_order;
ee4cdf7ba857a8 David Howells 2024-07-02  104  	fpos = round_down(subreq->start + subreq->consumed, fsize);
ee4cdf7ba857a8 David Howells 2024-07-02  105  	fend = fpos + fsize;
ee4cdf7ba857a8 David Howells 2024-07-02  106  
ee4cdf7ba857a8 David Howells 2024-07-02  107  	if (WARN_ON_ONCE(!folioq) ||
ee4cdf7ba857a8 David Howells 2024-07-02  108  	    WARN_ON_ONCE(!folioq_folio(folioq, slot)) ||
ee4cdf7ba857a8 David Howells 2024-07-02  109  	    WARN_ON_ONCE(folioq_folio(folioq, slot)->index != fpos / PAGE_SIZE)) {
ee4cdf7ba857a8 David Howells 2024-07-02  110  		pr_err("R=%08x[%x] s=%llx-%llx ctl=%zx/%zx/%zx sl=%u\n",
ee4cdf7ba857a8 David Howells 2024-07-02  111  		       rreq->debug_id, subreq->debug_index,
ee4cdf7ba857a8 David Howells 2024-07-02  112  		       subreq->start, subreq->start + subreq->transferred - 1,
ee4cdf7ba857a8 David Howells 2024-07-02  113  		       subreq->consumed, subreq->transferred, subreq->len,
ee4cdf7ba857a8 David Howells 2024-07-02  114  		       slot);
ee4cdf7ba857a8 David Howells 2024-07-02 @115  		if (folioq) {
ee4cdf7ba857a8 David Howells 2024-07-02  116  			struct folio *folio = folioq_folio(folioq, slot);
ee4cdf7ba857a8 David Howells 2024-07-02  117  
ee4cdf7ba857a8 David Howells 2024-07-02  118  			pr_err("folioq: orders=%02x%02x%02x%02x\n",
ee4cdf7ba857a8 David Howells 2024-07-02  119  			       folioq->orders[0], folioq->orders[1],
ee4cdf7ba857a8 David Howells 2024-07-02  120  			       folioq->orders[2], folioq->orders[3]);
ee4cdf7ba857a8 David Howells 2024-07-02  121  			if (folio)
ee4cdf7ba857a8 David Howells 2024-07-02  122  				pr_err("folio: %llx-%llx ix=%llx o=%u qo=%u\n",
ee4cdf7ba857a8 David Howells 2024-07-02  123  				       fpos, fend - 1, folio_pos(folio), folio_order(folio),
ee4cdf7ba857a8 David Howells 2024-07-02  124  				       folioq_folio_order(folioq, slot));
ee4cdf7ba857a8 David Howells 2024-07-02  125  		}
ee4cdf7ba857a8 David Howells 2024-07-02  126  	}
ee4cdf7ba857a8 David Howells 2024-07-02  127  
ee4cdf7ba857a8 David Howells 2024-07-02  128  donation_changed:
ee4cdf7ba857a8 David Howells 2024-07-02  129  	/* Try to consume the current folio if we've hit or passed the end of
ee4cdf7ba857a8 David Howells 2024-07-02  130  	 * it.  There's a possibility that this subreq doesn't start at the
ee4cdf7ba857a8 David Howells 2024-07-02  131  	 * beginning of the folio, in which case we need to donate to/from the
ee4cdf7ba857a8 David Howells 2024-07-02  132  	 * preceding subreq.
ee4cdf7ba857a8 David Howells 2024-07-02  133  	 *
ee4cdf7ba857a8 David Howells 2024-07-02  134  	 * We also need to include any potential donation back from the
ee4cdf7ba857a8 David Howells 2024-07-02  135  	 * following subreq.
ee4cdf7ba857a8 David Howells 2024-07-02  136  	 */
ee4cdf7ba857a8 David Howells 2024-07-02  137  	prev_donated = READ_ONCE(subreq->prev_donated);
ee4cdf7ba857a8 David Howells 2024-07-02  138  	next_donated =  READ_ONCE(subreq->next_donated);
ee4cdf7ba857a8 David Howells 2024-07-02  139  	if (prev_donated || next_donated) {
ee4cdf7ba857a8 David Howells 2024-07-02  140  		spin_lock_bh(&rreq->lock);
ee4cdf7ba857a8 David Howells 2024-07-02  141  		prev_donated = subreq->prev_donated;
ee4cdf7ba857a8 David Howells 2024-07-02  142  		next_donated =  subreq->next_donated;
ee4cdf7ba857a8 David Howells 2024-07-02  143  		subreq->start -= prev_donated;
ee4cdf7ba857a8 David Howells 2024-07-02  144  		subreq->len += prev_donated;
ee4cdf7ba857a8 David Howells 2024-07-02  145  		subreq->transferred += prev_donated;
ee4cdf7ba857a8 David Howells 2024-07-02  146  		prev_donated = subreq->prev_donated = 0;
ee4cdf7ba857a8 David Howells 2024-07-02  147  		if (subreq->transferred == subreq->len) {
ee4cdf7ba857a8 David Howells 2024-07-02  148  			subreq->len += next_donated;
ee4cdf7ba857a8 David Howells 2024-07-02  149  			subreq->transferred += next_donated;
ee4cdf7ba857a8 David Howells 2024-07-02  150  			next_donated = subreq->next_donated = 0;
ee4cdf7ba857a8 David Howells 2024-07-02  151  		}
ee4cdf7ba857a8 David Howells 2024-07-02  152  		trace_netfs_sreq(subreq, netfs_sreq_trace_add_donations);
ee4cdf7ba857a8 David Howells 2024-07-02  153  		spin_unlock_bh(&rreq->lock);
ee4cdf7ba857a8 David Howells 2024-07-02  154  	}
ee4cdf7ba857a8 David Howells 2024-07-02  155  
ee4cdf7ba857a8 David Howells 2024-07-02  156  	avail = subreq->transferred;
ee4cdf7ba857a8 David Howells 2024-07-02  157  	if (avail == subreq->len)
ee4cdf7ba857a8 David Howells 2024-07-02  158  		avail += next_donated;
ee4cdf7ba857a8 David Howells 2024-07-02  159  	start = subreq->start;
ee4cdf7ba857a8 David Howells 2024-07-02  160  	if (subreq->consumed == 0) {
ee4cdf7ba857a8 David Howells 2024-07-02  161  		start -= prev_donated;
ee4cdf7ba857a8 David Howells 2024-07-02  162  		avail += prev_donated;
ee4cdf7ba857a8 David Howells 2024-07-02  163  	} else {
ee4cdf7ba857a8 David Howells 2024-07-02  164  		start += subreq->consumed;
ee4cdf7ba857a8 David Howells 2024-07-02  165  		avail -= subreq->consumed;
ee4cdf7ba857a8 David Howells 2024-07-02  166  	}
ee4cdf7ba857a8 David Howells 2024-07-02  167  	part = umin(avail, fsize);
ee4cdf7ba857a8 David Howells 2024-07-02  168  
ee4cdf7ba857a8 David Howells 2024-07-02  169  	trace_netfs_progress(subreq, start, avail, part);
ee4cdf7ba857a8 David Howells 2024-07-02  170  
ee4cdf7ba857a8 David Howells 2024-07-02  171  	if (start + avail >= fend) {
ee4cdf7ba857a8 David Howells 2024-07-02  172  		if (fpos == start) {
ee4cdf7ba857a8 David Howells 2024-07-02  173  			/* Flush, unlock and mark for caching any folio we've just read. */
ee4cdf7ba857a8 David Howells 2024-07-02  174  			subreq->consumed = fend - subreq->start;
ee4cdf7ba857a8 David Howells 2024-07-02  175  			netfs_unlock_read_folio(subreq, rreq, folioq, slot);
ee4cdf7ba857a8 David Howells 2024-07-02  176  			folioq_mark2(folioq, slot);
ee4cdf7ba857a8 David Howells 2024-07-02  177  			if (subreq->consumed >= subreq->len)
ee4cdf7ba857a8 David Howells 2024-07-02  178  				goto remove_subreq;
ee4cdf7ba857a8 David Howells 2024-07-02  179  		} else if (fpos < start) {
ee4cdf7ba857a8 David Howells 2024-07-02  180  			excess = fend - subreq->start;
ee4cdf7ba857a8 David Howells 2024-07-02  181  
ee4cdf7ba857a8 David Howells 2024-07-02  182  			spin_lock_bh(&rreq->lock);
ee4cdf7ba857a8 David Howells 2024-07-02  183  			/* If we complete first on a folio split with the
ee4cdf7ba857a8 David Howells 2024-07-02  184  			 * preceding subreq, donate to that subreq - otherwise
ee4cdf7ba857a8 David Howells 2024-07-02  185  			 * we get the responsibility.
ee4cdf7ba857a8 David Howells 2024-07-02  186  			 */
ee4cdf7ba857a8 David Howells 2024-07-02  187  			if (subreq->prev_donated != prev_donated) {
ee4cdf7ba857a8 David Howells 2024-07-02  188  				spin_unlock_bh(&rreq->lock);
ee4cdf7ba857a8 David Howells 2024-07-02  189  				goto donation_changed;
ee4cdf7ba857a8 David Howells 2024-07-02  190  			}
ee4cdf7ba857a8 David Howells 2024-07-02  191  
ee4cdf7ba857a8 David Howells 2024-07-02  192  			if (list_is_first(&subreq->rreq_link, &rreq->subrequests)) {
ee4cdf7ba857a8 David Howells 2024-07-02  193  				spin_unlock_bh(&rreq->lock);
ee4cdf7ba857a8 David Howells 2024-07-02  194  				pr_err("Can't donate prior to front\n");
ee4cdf7ba857a8 David Howells 2024-07-02  195  				goto bad;
ee4cdf7ba857a8 David Howells 2024-07-02  196  			}
ee4cdf7ba857a8 David Howells 2024-07-02  197  
ee4cdf7ba857a8 David Howells 2024-07-02  198  			prev = list_prev_entry(subreq, rreq_link);
ee4cdf7ba857a8 David Howells 2024-07-02  199  			WRITE_ONCE(prev->next_donated, prev->next_donated + excess);
ee4cdf7ba857a8 David Howells 2024-07-02  200  			subreq->start += excess;
ee4cdf7ba857a8 David Howells 2024-07-02  201  			subreq->len -= excess;
ee4cdf7ba857a8 David Howells 2024-07-02  202  			subreq->transferred -= excess;
ee4cdf7ba857a8 David Howells 2024-07-02  203  			trace_netfs_donate(rreq, subreq, prev, excess,
ee4cdf7ba857a8 David Howells 2024-07-02  204  					   netfs_trace_donate_tail_to_prev);
ee4cdf7ba857a8 David Howells 2024-07-02  205  			trace_netfs_sreq(subreq, netfs_sreq_trace_donate_to_prev);
ee4cdf7ba857a8 David Howells 2024-07-02  206  
ee4cdf7ba857a8 David Howells 2024-07-02  207  			if (subreq->consumed >= subreq->len)
ee4cdf7ba857a8 David Howells 2024-07-02  208  				goto remove_subreq_locked;
ee4cdf7ba857a8 David Howells 2024-07-02  209  			spin_unlock_bh(&rreq->lock);
ee4cdf7ba857a8 David Howells 2024-07-02  210  		} else {
ee4cdf7ba857a8 David Howells 2024-07-02  211  			pr_err("fpos > start\n");
ee4cdf7ba857a8 David Howells 2024-07-02  212  			goto bad;
ee4cdf7ba857a8 David Howells 2024-07-02  213  		}
ee4cdf7ba857a8 David Howells 2024-07-02  214  
ee4cdf7ba857a8 David Howells 2024-07-02  215  		/* Advance the rolling buffer to the next folio. */
ee4cdf7ba857a8 David Howells 2024-07-02  216  		slot++;
ee4cdf7ba857a8 David Howells 2024-07-02  217  		if (slot >= folioq_nr_slots(folioq)) {
ee4cdf7ba857a8 David Howells 2024-07-02  218  			slot = 0;
ee4cdf7ba857a8 David Howells 2024-07-02 @219  			folioq = folioq->next;
ee4cdf7ba857a8 David Howells 2024-07-02  220  			subreq->curr_folioq = folioq;
ee4cdf7ba857a8 David Howells 2024-07-02  221  		}
ee4cdf7ba857a8 David Howells 2024-07-02  222  		subreq->curr_folioq_slot = slot;
ee4cdf7ba857a8 David Howells 2024-07-02  223  		if (folioq && folioq_folio(folioq, slot))
ee4cdf7ba857a8 David Howells 2024-07-02  224  			subreq->curr_folio_order = folioq->orders[slot];
ee4cdf7ba857a8 David Howells 2024-07-02  225  		if (!was_async)
ee4cdf7ba857a8 David Howells 2024-07-02  226  			cond_resched();
ee4cdf7ba857a8 David Howells 2024-07-02  227  		goto next_folio;
ee4cdf7ba857a8 David Howells 2024-07-02  228  	}
ee4cdf7ba857a8 David Howells 2024-07-02  229  
ee4cdf7ba857a8 David Howells 2024-07-02  230  	/* Deal with partial progress. */
ee4cdf7ba857a8 David Howells 2024-07-02  231  	if (subreq->transferred < subreq->len)
ee4cdf7ba857a8 David Howells 2024-07-02  232  		return false;
ee4cdf7ba857a8 David Howells 2024-07-02  233  
ee4cdf7ba857a8 David Howells 2024-07-02  234  	/* Donate the remaining downloaded data to one of the neighbouring
ee4cdf7ba857a8 David Howells 2024-07-02  235  	 * subrequests.  Note that we may race with them doing the same thing.
ee4cdf7ba857a8 David Howells 2024-07-02  236  	 */
ee4cdf7ba857a8 David Howells 2024-07-02  237  	spin_lock_bh(&rreq->lock);
ee4cdf7ba857a8 David Howells 2024-07-02  238  
ee4cdf7ba857a8 David Howells 2024-07-02  239  	if (subreq->prev_donated != prev_donated ||
ee4cdf7ba857a8 David Howells 2024-07-02  240  	    subreq->next_donated != next_donated) {
ee4cdf7ba857a8 David Howells 2024-07-02  241  		spin_unlock_bh(&rreq->lock);
ee4cdf7ba857a8 David Howells 2024-07-02  242  		cond_resched();
ee4cdf7ba857a8 David Howells 2024-07-02  243  		goto donation_changed;
ee4cdf7ba857a8 David Howells 2024-07-02  244  	}
ee4cdf7ba857a8 David Howells 2024-07-02  245  
ee4cdf7ba857a8 David Howells 2024-07-02  246  	/* Deal with the trickiest case: that this subreq is in the middle of a
ee4cdf7ba857a8 David Howells 2024-07-02  247  	 * folio, not touching either edge, but finishes first.  In such a
ee4cdf7ba857a8 David Howells 2024-07-02  248  	 * case, we donate to the previous subreq, if there is one, so that the
ee4cdf7ba857a8 David Howells 2024-07-02  249  	 * donation is only handled when that completes - and remove this
ee4cdf7ba857a8 David Howells 2024-07-02  250  	 * subreq from the list.
ee4cdf7ba857a8 David Howells 2024-07-02  251  	 *
ee4cdf7ba857a8 David Howells 2024-07-02  252  	 * If the previous subreq finished first, we will have acquired their
ee4cdf7ba857a8 David Howells 2024-07-02  253  	 * donation and should be able to unlock folios and/or donate nextwards.
ee4cdf7ba857a8 David Howells 2024-07-02  254  	 */
ee4cdf7ba857a8 David Howells 2024-07-02  255  	if (!subreq->consumed &&
ee4cdf7ba857a8 David Howells 2024-07-02  256  	    !prev_donated &&
ee4cdf7ba857a8 David Howells 2024-07-02  257  	    !list_is_first(&subreq->rreq_link, &rreq->subrequests)) {
ee4cdf7ba857a8 David Howells 2024-07-02  258  		prev = list_prev_entry(subreq, rreq_link);
ee4cdf7ba857a8 David Howells 2024-07-02  259  		WRITE_ONCE(prev->next_donated, prev->next_donated + subreq->len);
ee4cdf7ba857a8 David Howells 2024-07-02  260  		subreq->start += subreq->len;
ee4cdf7ba857a8 David Howells 2024-07-02  261  		subreq->len = 0;
ee4cdf7ba857a8 David Howells 2024-07-02  262  		subreq->transferred = 0;
ee4cdf7ba857a8 David Howells 2024-07-02  263  		trace_netfs_donate(rreq, subreq, prev, subreq->len,
ee4cdf7ba857a8 David Howells 2024-07-02  264  				   netfs_trace_donate_to_prev);
ee4cdf7ba857a8 David Howells 2024-07-02  265  		trace_netfs_sreq(subreq, netfs_sreq_trace_donate_to_prev);
ee4cdf7ba857a8 David Howells 2024-07-02  266  		goto remove_subreq_locked;
ee4cdf7ba857a8 David Howells 2024-07-02  267  	}
ee4cdf7ba857a8 David Howells 2024-07-02  268  
ee4cdf7ba857a8 David Howells 2024-07-02  269  	/* If we can't donate down the chain, donate up the chain instead. */
ee4cdf7ba857a8 David Howells 2024-07-02  270  	excess = subreq->len - subreq->consumed + next_donated;
ee4cdf7ba857a8 David Howells 2024-07-02  271  
ee4cdf7ba857a8 David Howells 2024-07-02  272  	if (!subreq->consumed)
ee4cdf7ba857a8 David Howells 2024-07-02  273  		excess += prev_donated;
ee4cdf7ba857a8 David Howells 2024-07-02  274  
ee4cdf7ba857a8 David Howells 2024-07-02  275  	if (list_is_last(&subreq->rreq_link, &rreq->subrequests)) {
ee4cdf7ba857a8 David Howells 2024-07-02  276  		rreq->prev_donated = excess;
ee4cdf7ba857a8 David Howells 2024-07-02  277  		trace_netfs_donate(rreq, subreq, NULL, excess,
ee4cdf7ba857a8 David Howells 2024-07-02  278  				   netfs_trace_donate_to_deferred_next);
ee4cdf7ba857a8 David Howells 2024-07-02  279  	} else {
ee4cdf7ba857a8 David Howells 2024-07-02  280  		next = list_next_entry(subreq, rreq_link);
ee4cdf7ba857a8 David Howells 2024-07-02  281  		WRITE_ONCE(next->prev_donated, excess);
ee4cdf7ba857a8 David Howells 2024-07-02  282  		trace_netfs_donate(rreq, subreq, next, excess,
ee4cdf7ba857a8 David Howells 2024-07-02  283  				   netfs_trace_donate_to_next);
ee4cdf7ba857a8 David Howells 2024-07-02  284  	}
ee4cdf7ba857a8 David Howells 2024-07-02  285  	trace_netfs_sreq(subreq, netfs_sreq_trace_donate_to_next);
ee4cdf7ba857a8 David Howells 2024-07-02  286  	subreq->len = subreq->consumed;
ee4cdf7ba857a8 David Howells 2024-07-02  287  	subreq->transferred = subreq->consumed;
ee4cdf7ba857a8 David Howells 2024-07-02  288  	goto remove_subreq_locked;
ee4cdf7ba857a8 David Howells 2024-07-02  289  
ee4cdf7ba857a8 David Howells 2024-07-02  290  remove_subreq:
ee4cdf7ba857a8 David Howells 2024-07-02  291  	spin_lock_bh(&rreq->lock);
ee4cdf7ba857a8 David Howells 2024-07-02  292  remove_subreq_locked:
ee4cdf7ba857a8 David Howells 2024-07-02  293  	subreq->consumed = subreq->len;
ee4cdf7ba857a8 David Howells 2024-07-02  294  	list_del(&subreq->rreq_link);
ee4cdf7ba857a8 David Howells 2024-07-02  295  	spin_unlock_bh(&rreq->lock);
ee4cdf7ba857a8 David Howells 2024-07-02  296  	netfs_put_subrequest(subreq, false, netfs_sreq_trace_put_consumed);
ee4cdf7ba857a8 David Howells 2024-07-02  297  	return true;
ee4cdf7ba857a8 David Howells 2024-07-02  298  
ee4cdf7ba857a8 David Howells 2024-07-02  299  bad:
ee4cdf7ba857a8 David Howells 2024-07-02  300  	/* Errr... prev and next both donated to us, but insufficient to finish
ee4cdf7ba857a8 David Howells 2024-07-02  301  	 * the folio.
ee4cdf7ba857a8 David Howells 2024-07-02  302  	 */
ee4cdf7ba857a8 David Howells 2024-07-02  303  	printk("R=%08x[%x] s=%llx-%llx %zx/%zx/%zx\n",
ee4cdf7ba857a8 David Howells 2024-07-02  304  	       rreq->debug_id, subreq->debug_index,
ee4cdf7ba857a8 David Howells 2024-07-02  305  	       subreq->start, subreq->start + subreq->transferred - 1,
ee4cdf7ba857a8 David Howells 2024-07-02  306  	       subreq->consumed, subreq->transferred, subreq->len);
ee4cdf7ba857a8 David Howells 2024-07-02  307  	printk("folio: %llx-%llx\n", fpos, fend - 1);
ee4cdf7ba857a8 David Howells 2024-07-02  308  	printk("donated: prev=%zx next=%zx\n", prev_donated, next_donated);
ee4cdf7ba857a8 David Howells 2024-07-02  309  	printk("s=%llx av=%zx part=%zx\n", start, avail, part);
ee4cdf7ba857a8 David Howells 2024-07-02  310  	BUG();
ee4cdf7ba857a8 David Howells 2024-07-02  311  }
ee4cdf7ba857a8 David Howells 2024-07-02  312  

--
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-07-18 14:36 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-18 14:36 [android-common:android16-6.12-kminext 1/1] fs/netfs/read_collect.c:219 netfs_consume_read_data() error: we previously assumed 'folioq' could be null (see line 115) 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.