Commit 7041503d authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull netfslib, cachefiles and afs fixes from David Howells:

 - Fix another couple of oopses in cachefiles tracing stemming from the
   possibility of passing in a NULL object pointer

 - Fix netfs_clear_unread() to set READ on the iov_iter so that source
   it is passed to doesn't do the wrong thing (some drivers look at the
   flag on iov_iter rather than other available information to determine
   the direction)

 - Fix afs_launder_page() to write back at the correct file position on
   the server so as not to corrupt data

* tag 'misc-fixes-20211007' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs:
  afs: Fix afs_launder_page() to set correct start file position
  netfs: Fix READ/WRITE confusion when calling iov_iter_xarray()
  cachefiles: Fix oops with cachefiles_cull() due to NULL object
parents 14df9235 5c052248
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -974,8 +974,7 @@ int afs_launder_page(struct page *page)
		iov_iter_bvec(&iter, WRITE, bv, 1, bv[0].bv_len);

		trace_afs_page_dirty(vnode, tracepoint_string("launder"), page);
		ret = afs_store_data(vnode, &iter, (loff_t)page->index * PAGE_SIZE,
				     true);
		ret = afs_store_data(vnode, &iter, page_offset(page) + f, true);
	}

	trace_afs_page_dirty(vnode, tracepoint_string("laundered"), page);
+1 −1
Original line number Diff line number Diff line
@@ -150,7 +150,7 @@ static void netfs_clear_unread(struct netfs_read_subrequest *subreq)
{
	struct iov_iter iter;

	iov_iter_xarray(&iter, WRITE, &subreq->rreq->mapping->i_pages,
	iov_iter_xarray(&iter, READ, &subreq->rreq->mapping->i_pages,
			subreq->start + subreq->transferred,
			subreq->len   - subreq->transferred);
	iov_iter_zero(iov_iter_count(&iter), &iter);
+2 −2
Original line number Diff line number Diff line
@@ -178,7 +178,7 @@ TRACE_EVENT(cachefiles_unlink,
			     ),

	    TP_fast_assign(
		    __entry->obj	= obj->fscache.debug_id;
		    __entry->obj	= obj ? obj->fscache.debug_id : UINT_MAX;
		    __entry->de		= de;
		    __entry->why	= why;
			   ),
@@ -205,7 +205,7 @@ TRACE_EVENT(cachefiles_rename,
			     ),

	    TP_fast_assign(
		    __entry->obj	= obj->fscache.debug_id;
		    __entry->obj	= obj ? obj->fscache.debug_id : UINT_MAX;
		    __entry->de		= de;
		    __entry->to		= to;
		    __entry->why	= why;