stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev, Jeff Layton <jlayton@kernel.org>,
	Chuck Lever <chuck.lever@oracle.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.1 119/183] nfsd: rework refcounting in filecache
Date: Mon, 16 Jan 2023 16:50:42 +0100	[thread overview]
Message-ID: <20230116154808.436784406@linuxfoundation.org> (raw)
In-Reply-To: <20230116154803.321528435@linuxfoundation.org>

From: Jeff Layton <jlayton@kernel.org>

[ Upstream commit ac3a2585f018f10039b4a856dcb122da88c1c1c9 ]

The filecache refcounting is a bit non-standard for something searchable
by RCU, in that we maintain a sentinel reference while it's hashed. This
in turn requires that we have to do things differently in the "put"
depending on whether its hashed, which we believe to have led to races.

There are other problems in here too. nfsd_file_close_inode_sync can end
up freeing an nfsd_file while there are still outstanding references to
it, and there are a number of subtle ToC/ToU races.

Rework the code so that the refcount is what drives the lifecycle. When
the refcount goes to zero, then unhash and rcu free the object. A task
searching for a nfsd_file is allowed to bump its refcount, but only if
it's not already 0. Ensure that we don't make any other changes to it
until a reference is held.

With this change, the LRU carries a reference. Take special care to deal
with it when removing an entry from the list, and ensure that we only
repurpose the nf_lru list_head when the refcount is 0 to ensure
exclusive access to it.

Signed-off-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Stable-dep-of: 0b3a551fa58b ("nfsd: fix handling of cached open files in nfsd4_open codepath")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/nfsd/filecache.c | 318 +++++++++++++++++++++++---------------------
 fs/nfsd/trace.h     |  51 +++----
 2 files changed, 189 insertions(+), 180 deletions(-)

diff --git a/fs/nfsd/filecache.c b/fs/nfsd/filecache.c
index 7c673f98f95c..9bf78506d071 100644
--- a/fs/nfsd/filecache.c
+++ b/fs/nfsd/filecache.c
@@ -302,8 +302,7 @@ nfsd_file_alloc(struct nfsd_file_lookup_key *key, unsigned int may)
 		if (key->gc)
 			__set_bit(NFSD_FILE_GC, &nf->nf_flags);
 		nf->nf_inode = key->inode;
-		/* nf_ref is pre-incremented for hash table */
-		refcount_set(&nf->nf_ref, 2);
+		refcount_set(&nf->nf_ref, 1);
 		nf->nf_may = key->need;
 		nf->nf_mark = NULL;
 	}
@@ -355,24 +354,35 @@ nfsd_file_unhash(struct nfsd_file *nf)
 	return false;
 }
 
-static bool
+static void
 nfsd_file_free(struct nfsd_file *nf)
 {
 	s64 age = ktime_to_ms(ktime_sub(ktime_get(), nf->nf_birthtime));
-	bool flush = false;
 
 	trace_nfsd_file_free(nf);
 
 	this_cpu_inc(nfsd_file_releases);
 	this_cpu_add(nfsd_file_total_age, age);
 
+	nfsd_file_unhash(nf);
+
+	/*
+	 * We call fsync here in order to catch writeback errors. It's not
+	 * strictly required by the protocol, but an nfsd_file could get
+	 * evicted from the cache before a COMMIT comes in. If another
+	 * task were to open that file in the interim and scrape the error,
+	 * then the client may never see it. By calling fsync here, we ensure
+	 * that writeback happens before the entry is freed, and that any
+	 * errors reported result in the write verifier changing.
+	 */
+	nfsd_file_fsync(nf);
+
 	if (nf->nf_mark)
 		nfsd_file_mark_put(nf->nf_mark);
 	if (nf->nf_file) {
 		get_file(nf->nf_file);
 		filp_close(nf->nf_file, NULL);
 		fput(nf->nf_file);
-		flush = true;
 	}
 
 	/*
@@ -380,10 +390,9 @@ nfsd_file_free(struct nfsd_file *nf)
 	 * WARN and leak it to preserve system stability.
 	 */
 	if (WARN_ON_ONCE(!list_empty(&nf->nf_lru)))
-		return flush;
+		return;
 
 	call_rcu(&nf->nf_rcu, nfsd_file_slab_free);
-	return flush;
 }
 
 static bool
@@ -399,17 +408,23 @@ nfsd_file_check_writeback(struct nfsd_file *nf)
 		mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK);
 }
 
-static void nfsd_file_lru_add(struct nfsd_file *nf)
+static bool nfsd_file_lru_add(struct nfsd_file *nf)
 {
 	set_bit(NFSD_FILE_REFERENCED, &nf->nf_flags);
-	if (list_lru_add(&nfsd_file_lru, &nf->nf_lru))
+	if (list_lru_add(&nfsd_file_lru, &nf->nf_lru)) {
 		trace_nfsd_file_lru_add(nf);
+		return true;
+	}
+	return false;
 }
 
-static void nfsd_file_lru_remove(struct nfsd_file *nf)
+static bool nfsd_file_lru_remove(struct nfsd_file *nf)
 {
-	if (list_lru_del(&nfsd_file_lru, &nf->nf_lru))
+	if (list_lru_del(&nfsd_file_lru, &nf->nf_lru)) {
 		trace_nfsd_file_lru_del(nf);
+		return true;
+	}
+	return false;
 }
 
 struct nfsd_file *
@@ -420,86 +435,60 @@ nfsd_file_get(struct nfsd_file *nf)
 	return NULL;
 }
 
-static void
-nfsd_file_unhash_and_queue(struct nfsd_file *nf, struct list_head *dispose)
-{
-	trace_nfsd_file_unhash_and_queue(nf);
-	if (nfsd_file_unhash(nf)) {
-		/* caller must call nfsd_file_dispose_list() later */
-		nfsd_file_lru_remove(nf);
-		list_add(&nf->nf_lru, dispose);
-	}
-}
-
-static void
-nfsd_file_put_noref(struct nfsd_file *nf)
-{
-	trace_nfsd_file_put(nf);
-
-	if (refcount_dec_and_test(&nf->nf_ref)) {
-		WARN_ON(test_bit(NFSD_FILE_HASHED, &nf->nf_flags));
-		nfsd_file_lru_remove(nf);
-		nfsd_file_free(nf);
-	}
-}
-
-static void
-nfsd_file_unhash_and_put(struct nfsd_file *nf)
-{
-	if (nfsd_file_unhash(nf))
-		nfsd_file_put_noref(nf);
-}
-
+/**
+ * nfsd_file_put - put the reference to a nfsd_file
+ * @nf: nfsd_file of which to put the reference
+ *
+ * Put a reference to a nfsd_file. In the non-GC case, we just put the
+ * reference immediately. In the GC case, if the reference would be
+ * the last one, the put it on the LRU instead to be cleaned up later.
+ */
 void
 nfsd_file_put(struct nfsd_file *nf)
 {
 	might_sleep();
+	trace_nfsd_file_put(nf);
 
-	if (test_bit(NFSD_FILE_GC, &nf->nf_flags))
-		nfsd_file_lru_add(nf);
-	else if (refcount_read(&nf->nf_ref) == 2)
-		nfsd_file_unhash_and_put(nf);
-
-	if (!test_bit(NFSD_FILE_HASHED, &nf->nf_flags)) {
-		nfsd_file_fsync(nf);
-		nfsd_file_put_noref(nf);
-	} else if (nf->nf_file && test_bit(NFSD_FILE_GC, &nf->nf_flags)) {
-		nfsd_file_put_noref(nf);
-		nfsd_file_schedule_laundrette();
-	} else
-		nfsd_file_put_noref(nf);
-}
-
-static void
-nfsd_file_dispose_list(struct list_head *dispose)
-{
-	struct nfsd_file *nf;
+	if (test_bit(NFSD_FILE_GC, &nf->nf_flags) &&
+	    test_bit(NFSD_FILE_HASHED, &nf->nf_flags)) {
+		/*
+		 * If this is the last reference (nf_ref == 1), then try to
+		 * transfer it to the LRU.
+		 */
+		if (refcount_dec_not_one(&nf->nf_ref))
+			return;
+
+		/* Try to add it to the LRU.  If that fails, decrement. */
+		if (nfsd_file_lru_add(nf)) {
+			/* If it's still hashed, we're done */
+			if (test_bit(NFSD_FILE_HASHED, &nf->nf_flags)) {
+				nfsd_file_schedule_laundrette();
+				return;
+			}
 
-	while(!list_empty(dispose)) {
-		nf = list_first_entry(dispose, struct nfsd_file, nf_lru);
-		list_del_init(&nf->nf_lru);
-		nfsd_file_fsync(nf);
-		nfsd_file_put_noref(nf);
+			/*
+			 * We're racing with unhashing, so try to remove it from
+			 * the LRU. If removal fails, then someone else already
+			 * has our reference.
+			 */
+			if (!nfsd_file_lru_remove(nf))
+				return;
+		}
 	}
+	if (refcount_dec_and_test(&nf->nf_ref))
+		nfsd_file_free(nf);
 }
 
 static void
-nfsd_file_dispose_list_sync(struct list_head *dispose)
+nfsd_file_dispose_list(struct list_head *dispose)
 {
-	bool flush = false;
 	struct nfsd_file *nf;
 
-	while(!list_empty(dispose)) {
+	while (!list_empty(dispose)) {
 		nf = list_first_entry(dispose, struct nfsd_file, nf_lru);
 		list_del_init(&nf->nf_lru);
-		nfsd_file_fsync(nf);
-		if (!refcount_dec_and_test(&nf->nf_ref))
-			continue;
-		if (nfsd_file_free(nf))
-			flush = true;
+		nfsd_file_free(nf);
 	}
-	if (flush)
-		flush_delayed_fput();
 }
 
 static void
@@ -569,21 +558,8 @@ nfsd_file_lru_cb(struct list_head *item, struct list_lru_one *lru,
 	struct list_head *head = arg;
 	struct nfsd_file *nf = list_entry(item, struct nfsd_file, nf_lru);
 
-	/*
-	 * Do a lockless refcount check. The hashtable holds one reference, so
-	 * we look to see if anything else has a reference, or if any have
-	 * been put since the shrinker last ran. Those don't get unhashed and
-	 * released.
-	 *
-	 * Note that in the put path, we set the flag and then decrement the
-	 * counter. Here we check the counter and then test and clear the flag.
-	 * That order is deliberate to ensure that we can do this locklessly.
-	 */
-	if (refcount_read(&nf->nf_ref) > 1) {
-		list_lru_isolate(lru, &nf->nf_lru);
-		trace_nfsd_file_gc_in_use(nf);
-		return LRU_REMOVED;
-	}
+	/* We should only be dealing with GC entries here */
+	WARN_ON_ONCE(!test_bit(NFSD_FILE_GC, &nf->nf_flags));
 
 	/*
 	 * Don't throw out files that are still undergoing I/O or
@@ -594,40 +570,30 @@ nfsd_file_lru_cb(struct list_head *item, struct list_lru_one *lru,
 		return LRU_SKIP;
 	}
 
+	/* If it was recently added to the list, skip it */
 	if (test_and_clear_bit(NFSD_FILE_REFERENCED, &nf->nf_flags)) {
 		trace_nfsd_file_gc_referenced(nf);
 		return LRU_ROTATE;
 	}
 
-	if (!test_and_clear_bit(NFSD_FILE_HASHED, &nf->nf_flags)) {
-		trace_nfsd_file_gc_hashed(nf);
-		return LRU_SKIP;
+	/*
+	 * Put the reference held on behalf of the LRU. If it wasn't the last
+	 * one, then just remove it from the LRU and ignore it.
+	 */
+	if (!refcount_dec_and_test(&nf->nf_ref)) {
+		trace_nfsd_file_gc_in_use(nf);
+		list_lru_isolate(lru, &nf->nf_lru);
+		return LRU_REMOVED;
 	}
 
+	/* Refcount went to zero. Unhash it and queue it to the dispose list */
+	nfsd_file_unhash(nf);
 	list_lru_isolate_move(lru, &nf->nf_lru, head);
 	this_cpu_inc(nfsd_file_evictions);
 	trace_nfsd_file_gc_disposed(nf);
 	return LRU_REMOVED;
 }
 
-/*
- * Unhash items on @dispose immediately, then queue them on the
- * disposal workqueue to finish releasing them in the background.
- *
- * cel: Note that between the time list_lru_shrink_walk runs and
- * now, these items are in the hash table but marked unhashed.
- * Why release these outside of lru_cb ? There's no lock ordering
- * problem since lru_cb currently takes no lock.
- */
-static void nfsd_file_gc_dispose_list(struct list_head *dispose)
-{
-	struct nfsd_file *nf;
-
-	list_for_each_entry(nf, dispose, nf_lru)
-		nfsd_file_hash_remove(nf);
-	nfsd_file_dispose_list_delayed(dispose);
-}
-
 static void
 nfsd_file_gc(void)
 {
@@ -637,7 +603,7 @@ nfsd_file_gc(void)
 	ret = list_lru_walk(&nfsd_file_lru, nfsd_file_lru_cb,
 			    &dispose, list_lru_count(&nfsd_file_lru));
 	trace_nfsd_file_gc_removed(ret, list_lru_count(&nfsd_file_lru));
-	nfsd_file_gc_dispose_list(&dispose);
+	nfsd_file_dispose_list_delayed(&dispose);
 }
 
 static void
@@ -662,7 +628,7 @@ nfsd_file_lru_scan(struct shrinker *s, struct shrink_control *sc)
 	ret = list_lru_shrink_walk(&nfsd_file_lru, sc,
 				   nfsd_file_lru_cb, &dispose);
 	trace_nfsd_file_shrinker_removed(ret, list_lru_count(&nfsd_file_lru));
-	nfsd_file_gc_dispose_list(&dispose);
+	nfsd_file_dispose_list_delayed(&dispose);
 	return ret;
 }
 
@@ -672,72 +638,111 @@ static struct shrinker	nfsd_file_shrinker = {
 	.seeks = 1,
 };
 
-/*
- * Find all cache items across all net namespaces that match @inode and
- * move them to @dispose. The lookup is atomic wrt nfsd_file_acquire().
+/**
+ * nfsd_file_queue_for_close: try to close out any open nfsd_files for an inode
+ * @inode:   inode on which to close out nfsd_files
+ * @dispose: list on which to gather nfsd_files to close out
+ *
+ * An nfsd_file represents a struct file being held open on behalf of nfsd. An
+ * open file however can block other activity (such as leases), or cause
+ * undesirable behavior (e.g. spurious silly-renames when reexporting NFS).
+ *
+ * This function is intended to find open nfsd_files when this sort of
+ * conflicting access occurs and then attempt to close those files out.
+ *
+ * Populates the dispose list with entries that have already had their
+ * refcounts go to zero. The actual free of an nfsd_file can be expensive,
+ * so we leave it up to the caller whether it wants to wait or not.
  */
-static unsigned int
-__nfsd_file_close_inode(struct inode *inode, struct list_head *dispose)
+static void
+nfsd_file_queue_for_close(struct inode *inode, struct list_head *dispose)
 {
 	struct nfsd_file_lookup_key key = {
 		.type	= NFSD_FILE_KEY_INODE,
 		.inode	= inode,
 	};
-	unsigned int count = 0;
 	struct nfsd_file *nf;
 
 	rcu_read_lock();
 	do {
+		int decrement = 1;
+
 		nf = rhashtable_lookup(&nfsd_file_rhash_tbl, &key,
 				       nfsd_file_rhash_params);
 		if (!nf)
 			break;
-		nfsd_file_unhash_and_queue(nf, dispose);
-		count++;
+
+		/* If we raced with someone else unhashing, ignore it */
+		if (!nfsd_file_unhash(nf))
+			continue;
+
+		/* If we can't get a reference, ignore it */
+		if (!nfsd_file_get(nf))
+			continue;
+
+		/* Extra decrement if we remove from the LRU */
+		if (nfsd_file_lru_remove(nf))
+			++decrement;
+
+		/* If refcount goes to 0, then put on the dispose list */
+		if (refcount_sub_and_test(decrement, &nf->nf_ref)) {
+			list_add(&nf->nf_lru, dispose);
+			trace_nfsd_file_closing(nf);
+		}
 	} while (1);
 	rcu_read_unlock();
-	return count;
 }
 
 /**
- * nfsd_file_close_inode_sync - attempt to forcibly close a nfsd_file
+ * nfsd_file_close_inode - attempt a delayed close of a nfsd_file
  * @inode: inode of the file to attempt to remove
  *
- * Unhash and put, then flush and fput all cache items associated with @inode.
+ * Close out any open nfsd_files that can be reaped for @inode. The
+ * actual freeing is deferred to the dispose_list_delayed infrastructure.
+ *
+ * This is used by the fsnotify callbacks and setlease notifier.
  */
-void
-nfsd_file_close_inode_sync(struct inode *inode)
+static void
+nfsd_file_close_inode(struct inode *inode)
 {
 	LIST_HEAD(dispose);
-	unsigned int count;
 
-	count = __nfsd_file_close_inode(inode, &dispose);
-	trace_nfsd_file_close_inode_sync(inode, count);
-	nfsd_file_dispose_list_sync(&dispose);
+	nfsd_file_queue_for_close(inode, &dispose);
+	nfsd_file_dispose_list_delayed(&dispose);
 }
 
 /**
- * nfsd_file_close_inode - attempt a delayed close of a nfsd_file
+ * nfsd_file_close_inode_sync - attempt to forcibly close a nfsd_file
  * @inode: inode of the file to attempt to remove
  *
- * Unhash and put all cache item associated with @inode.
+ * Close out any open nfsd_files that can be reaped for @inode. The
+ * nfsd_files are closed out synchronously.
+ *
+ * This is called from nfsd_rename and nfsd_unlink to avoid silly-renames
+ * when reexporting NFS.
  */
-static void
-nfsd_file_close_inode(struct inode *inode)
+void
+nfsd_file_close_inode_sync(struct inode *inode)
 {
+	struct nfsd_file *nf;
 	LIST_HEAD(dispose);
-	unsigned int count;
 
-	count = __nfsd_file_close_inode(inode, &dispose);
-	trace_nfsd_file_close_inode(inode, count);
-	nfsd_file_dispose_list_delayed(&dispose);
+	trace_nfsd_file_close(inode);
+
+	nfsd_file_queue_for_close(inode, &dispose);
+	while (!list_empty(&dispose)) {
+		nf = list_first_entry(&dispose, struct nfsd_file, nf_lru);
+		list_del_init(&nf->nf_lru);
+		nfsd_file_free(nf);
+	}
+	flush_delayed_fput();
 }
 
 /**
  * nfsd_file_delayed_close - close unused nfsd_files
  * @work: dummy
  *
- * Walk the LRU list and close any entries that have not been used since
+ * Walk the LRU list and destroy any entries that have not been used since
  * the last scan.
  */
 static void
@@ -759,7 +764,7 @@ nfsd_file_lease_notifier_call(struct notifier_block *nb, unsigned long arg,
 
 	/* Only close files for F_SETLEASE leases */
 	if (fl->fl_flags & FL_LEASE)
-		nfsd_file_close_inode_sync(file_inode(fl->fl_file));
+		nfsd_file_close_inode(file_inode(fl->fl_file));
 	return 0;
 }
 
@@ -880,6 +885,13 @@ nfsd_file_cache_init(void)
 	goto out;
 }
 
+/**
+ * __nfsd_file_cache_purge: clean out the cache for shutdown
+ * @net: net-namespace to shut down the cache (may be NULL)
+ *
+ * Walk the nfsd_file cache and close out any that match @net. If @net is NULL,
+ * then close out everything. Called when an nfsd instance is being shut down.
+ */
 static void
 __nfsd_file_cache_purge(struct net *net)
 {
@@ -893,8 +905,11 @@ __nfsd_file_cache_purge(struct net *net)
 
 		nf = rhashtable_walk_next(&iter);
 		while (!IS_ERR_OR_NULL(nf)) {
-			if (!net || nf->nf_net == net)
-				nfsd_file_unhash_and_queue(nf, &dispose);
+			if (!net || nf->nf_net == net) {
+				nfsd_file_unhash(nf);
+				nfsd_file_lru_remove(nf);
+				list_add(&nf->nf_lru, &dispose);
+			}
 			nf = rhashtable_walk_next(&iter);
 		}
 
@@ -1061,8 +1076,12 @@ nfsd_file_do_acquire(struct svc_rqst *rqstp, struct svc_fh *fhp,
 	if (nf)
 		nf = nfsd_file_get(nf);
 	rcu_read_unlock();
-	if (nf)
+
+	if (nf) {
+		if (nfsd_file_lru_remove(nf))
+			WARN_ON_ONCE(refcount_dec_and_test(&nf->nf_ref));
 		goto wait_for_construction;
+	}
 
 	nf = nfsd_file_alloc(&key, may_flags);
 	if (!nf) {
@@ -1095,11 +1114,11 @@ nfsd_file_do_acquire(struct svc_rqst *rqstp, struct svc_fh *fhp,
 			goto out;
 		}
 		open_retry = false;
-		nfsd_file_put_noref(nf);
+		if (refcount_dec_and_test(&nf->nf_ref))
+			nfsd_file_free(nf);
 		goto retry;
 	}
 
-	nfsd_file_lru_remove(nf);
 	this_cpu_inc(nfsd_file_cache_hits);
 
 	status = nfserrno(nfsd_open_break_lease(file_inode(nf->nf_file), may_flags));
@@ -1109,7 +1128,8 @@ nfsd_file_do_acquire(struct svc_rqst *rqstp, struct svc_fh *fhp,
 			this_cpu_inc(nfsd_file_acquisitions);
 		*pnf = nf;
 	} else {
-		nfsd_file_put(nf);
+		if (refcount_dec_and_test(&nf->nf_ref))
+			nfsd_file_free(nf);
 		nf = NULL;
 	}
 
@@ -1135,8 +1155,10 @@ nfsd_file_do_acquire(struct svc_rqst *rqstp, struct svc_fh *fhp,
 	 * If construction failed, or we raced with a call to unlink()
 	 * then unhash.
 	 */
-	if (status != nfs_ok || key.inode->i_nlink == 0)
-		nfsd_file_unhash_and_put(nf);
+	if (status == nfs_ok && key.inode->i_nlink == 0)
+		status = nfserr_jukebox;
+	if (status != nfs_ok)
+		nfsd_file_unhash(nf);
 	clear_bit_unlock(NFSD_FILE_PENDING, &nf->nf_flags);
 	smp_mb__after_atomic();
 	wake_up_bit(&nf->nf_flags, NFSD_FILE_PENDING);
diff --git a/fs/nfsd/trace.h b/fs/nfsd/trace.h
index 08e2738adf8f..4feeaed32541 100644
--- a/fs/nfsd/trace.h
+++ b/fs/nfsd/trace.h
@@ -817,8 +817,8 @@ DEFINE_CLID_EVENT(confirmed_r);
 	__print_flags(val, "|",						\
 		{ 1 << NFSD_FILE_HASHED,	"HASHED" },		\
 		{ 1 << NFSD_FILE_PENDING,	"PENDING" },		\
-		{ 1 << NFSD_FILE_REFERENCED,	"REFERENCED"},		\
-		{ 1 << NFSD_FILE_GC,		"GC"})
+		{ 1 << NFSD_FILE_REFERENCED,	"REFERENCED" },		\
+		{ 1 << NFSD_FILE_GC,		"GC" })
 
 DECLARE_EVENT_CLASS(nfsd_file_class,
 	TP_PROTO(struct nfsd_file *nf),
@@ -853,6 +853,7 @@ DEFINE_EVENT(nfsd_file_class, name, \
 DEFINE_NFSD_FILE_EVENT(nfsd_file_free);
 DEFINE_NFSD_FILE_EVENT(nfsd_file_unhash);
 DEFINE_NFSD_FILE_EVENT(nfsd_file_put);
+DEFINE_NFSD_FILE_EVENT(nfsd_file_closing);
 DEFINE_NFSD_FILE_EVENT(nfsd_file_unhash_and_queue);
 
 TRACE_EVENT(nfsd_file_alloc,
@@ -1044,35 +1045,6 @@ TRACE_EVENT(nfsd_file_open,
 		__entry->nf_file)
 )
 
-DECLARE_EVENT_CLASS(nfsd_file_search_class,
-	TP_PROTO(
-		const struct inode *inode,
-		unsigned int count
-	),
-	TP_ARGS(inode, count),
-	TP_STRUCT__entry(
-		__field(const struct inode *, inode)
-		__field(unsigned int, count)
-	),
-	TP_fast_assign(
-		__entry->inode = inode;
-		__entry->count = count;
-	),
-	TP_printk("inode=%p count=%u",
-		__entry->inode, __entry->count)
-);
-
-#define DEFINE_NFSD_FILE_SEARCH_EVENT(name)				\
-DEFINE_EVENT(nfsd_file_search_class, name,				\
-	TP_PROTO(							\
-		const struct inode *inode,				\
-		unsigned int count					\
-	),								\
-	TP_ARGS(inode, count))
-
-DEFINE_NFSD_FILE_SEARCH_EVENT(nfsd_file_close_inode_sync);
-DEFINE_NFSD_FILE_SEARCH_EVENT(nfsd_file_close_inode);
-
 TRACE_EVENT(nfsd_file_is_cached,
 	TP_PROTO(
 		const struct inode *inode,
@@ -1150,7 +1122,6 @@ DEFINE_NFSD_FILE_GC_EVENT(nfsd_file_lru_del_disposed);
 DEFINE_NFSD_FILE_GC_EVENT(nfsd_file_gc_in_use);
 DEFINE_NFSD_FILE_GC_EVENT(nfsd_file_gc_writeback);
 DEFINE_NFSD_FILE_GC_EVENT(nfsd_file_gc_referenced);
-DEFINE_NFSD_FILE_GC_EVENT(nfsd_file_gc_hashed);
 DEFINE_NFSD_FILE_GC_EVENT(nfsd_file_gc_disposed);
 
 DECLARE_EVENT_CLASS(nfsd_file_lruwalk_class,
@@ -1182,6 +1153,22 @@ DEFINE_EVENT(nfsd_file_lruwalk_class, name,				\
 DEFINE_NFSD_FILE_LRUWALK_EVENT(nfsd_file_gc_removed);
 DEFINE_NFSD_FILE_LRUWALK_EVENT(nfsd_file_shrinker_removed);
 
+TRACE_EVENT(nfsd_file_close,
+	TP_PROTO(
+		const struct inode *inode
+	),
+	TP_ARGS(inode),
+	TP_STRUCT__entry(
+		__field(const void *, inode)
+	),
+	TP_fast_assign(
+		__entry->inode = inode;
+	),
+	TP_printk("inode=%p",
+		__entry->inode
+	)
+);
+
 TRACE_EVENT(nfsd_file_fsync,
 	TP_PROTO(
 		const struct nfsd_file *nf,
-- 
2.35.1




  parent reply	other threads:[~2023-01-16 15:59 UTC|newest]

Thread overview: 198+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-16 15:48 [PATCH 6.1 000/183] 6.1.7-rc1 review Greg Kroah-Hartman
2023-01-16 15:48 ` [PATCH 6.1 001/183] netfilter: nft_payload: incorrect arithmetics when fetching VLAN header bits Greg Kroah-Hartman
2023-01-16 15:48 ` [PATCH 6.1 002/183] Revert "ALSA: usb-audio: Drop superfluous interface setup at parsing" Greg Kroah-Hartman
2023-01-16 15:48 ` [PATCH 6.1 003/183] ALSA: control-led: use strscpy in set_led_id() Greg Kroah-Hartman
2023-01-16 15:48 ` [PATCH 6.1 004/183] ALSA: usb-audio: Always initialize fixed_rate in snd_usb_find_implicit_fb_sync_format() Greg Kroah-Hartman
2023-01-16 15:48 ` [PATCH 6.1 005/183] ALSA: hda/realtek - Turn on power early Greg Kroah-Hartman
2023-01-16 15:48 ` [PATCH 6.1 006/183] ALSA: hda/realtek: Enable mute/micmute LEDs on HP Spectre x360 13-aw0xxx Greg Kroah-Hartman
2023-01-16 15:48 ` [PATCH 6.1 007/183] KVM: x86: Do not return host topology information from KVM_GET_SUPPORTED_CPUID Greg Kroah-Hartman
2023-01-16 15:48 ` [PATCH 6.1 008/183] KVM: arm64: Fix S1PTW handling on RO memslots Greg Kroah-Hartman
2023-01-16 15:48 ` [PATCH 6.1 009/183] efi: fix userspace infinite retry read efivars after EFI runtime services page fault Greg Kroah-Hartman
2023-01-16 15:48 ` [PATCH 6.1 010/183] efi: tpm: Avoid READ_ONCE() for accessing the event log Greg Kroah-Hartman
2023-01-16 15:48 ` [PATCH 6.1 011/183] docs: Fix the docs build with Sphinx 6.0 Greg Kroah-Hartman
2023-01-16 15:48 ` [PATCH 6.1 012/183] io_uring/poll: add hash if ready poll request cant complete inline Greg Kroah-Hartman
2023-01-16 15:48 ` [PATCH 6.1 013/183] arm64: mte: Fix double-freeing of the temporary tag storage during coredump Greg Kroah-Hartman
2023-01-16 15:48 ` [PATCH 6.1 014/183] arm64: mte: Avoid the racy walk of the vma list during core dump Greg Kroah-Hartman
2023-01-16 15:48 ` [PATCH 6.1 015/183] arm64: cmpxchg_double*: hazard against entire exchange variable Greg Kroah-Hartman
2023-01-16 15:48 ` [PATCH 6.1 016/183] ACPI: Fix selecting wrong ACPI fwnode for the iGPU on some Dell laptops Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 017/183] net: stmmac: add aux timestamps fifo clearance wait Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 018/183] perf auxtrace: Fix address filter duplicate symbol selection Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 019/183] s390/kexec: fix ipl report address for kdump Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 020/183] brcmfmac: Prefer DT board type over DMI board type Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 021/183] ASoC: qcom: lpass-cpu: Fix fallback SD line index handling Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 022/183] elfcore: Add a cprm parameter to elf_core_extra_{phdrs,data_size} Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 023/183] cpufreq: amd-pstate: fix kernel hang issue while amd-pstate unregistering Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 024/183] s390/cpum_sf: add READ_ONCE() semantics to compare and swap loops Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 025/183] s390/percpu: add READ_ONCE() to arch_this_cpu_to_op_simple() Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 026/183] drm/virtio: Fix GEM handle creation UAF Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 027/183] drm/amd/pm/smu13: BACO is supported when its in BACO state Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 028/183] drm: Optimize drm buddy top-down allocation method Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 029/183] drm/i915/gt: Reset twice Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 030/183] drm/i915: Reserve enough fence slot for i915_vma_unbind_async Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 031/183] drm/i915: Fix potential context UAFs Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 032/183] drm/amd: Delay removal of the firmware framebuffer Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 033/183] drm/amdgpu: Fixed bug on error when unloading amdgpu Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 034/183] drm/amd/pm: correct the reference clock for fan speed(rpm) calculation Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 035/183] drm/amd/pm: add the missing mapping for PPT feature on SMU13.0.0 and 13.0.7 Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 036/183] drm/amd/display: move remaining FPU code to dml folder Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 037/183] Revert "drm/amdgpu: Revert "drm/amdgpu: getting fan speed pwm for vega10 properly"" Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 038/183] cifs: Fix uninitialized memory read for smb311 posix symlink create Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 039/183] cifs: fix file info setting in cifs_query_path_info() Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 040/183] cifs: fix file info setting in cifs_open_file() Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 041/183] cifs: do not query ifaces on smb1 mounts Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 042/183] cifs: fix double free on failed kerberos auth Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 043/183] io_uring/fdinfo: include locked hash table in fdinfo output Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 044/183] ASoC: rt9120: Make dev PM runtime bind AsoC component PM Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 045/183] ACPI: video: Allow selecting NVidia-WMI-EC or Apple GMUX backlight from the cmdline Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 046/183] platform/x86: dell-privacy: Only register SW_CAMERA_LENS_COVER if present Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 047/183] platform/surface: aggregator: Ignore command messages not intended for us Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 048/183] platform/x86: int3472/discrete: Ensure the clk/power enable pins are in output mode Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 049/183] platform/x86: thinkpad_acpi: Fix profile mode display in AMT mode Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 050/183] platform/x86: asus-wmi: Dont load fan curves without fan Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 051/183] platform/x86: dell-privacy: Fix SW_CAMERA_LENS_COVER reporting Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 052/183] dt-bindings: msm: dsi-controller-main: Fix operating-points-v2 constraint Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 053/183] drm/msm: another fix for the headless Adreno GPU Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 054/183] firmware/psci: Fix MEM_PROTECT_RANGE function numbers Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 055/183] firmware/psci: Dont register with debugfs if PSCI isnt available Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 056/183] drm/msm/adreno: Make adreno quirks not overwrite each other Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 057/183] arm64/signal: Always allocate SVE signal frames on SME only systems Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 058/183] dt-bindings: msm: dsi-controller-main: Fix power-domain constraint Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 059/183] dt-bindings: msm: dsi-controller-main: Fix description of core clock Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 060/183] arm64/signal: Always accept SVE signal frames on SME only systems Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 061/183] arm64/mm: add pud_user_exec() check in pud_user_accessible_page() Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 062/183] dt-bindings: msm: dsi-phy-28nm: Add missing qcom, dsi-phy-regulator-ldo-mode Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 063/183] arm64: ptrace: Use ARM64_SME to guard the SME register enumerations Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 064/183] arm64/mm: fix incorrect file_map_count for invalid pmd Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 065/183] platform/x86: ideapad-laptop: Add Legion 5 15ARH05 DMI id to set_fn_lock_led_list[] Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 066/183] drm/msm/dp: do not complete dp_aux_cmd_fifo_tx() if irq is not for aux transfer Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 067/183] dt-bindings: msm/dsi: Dont require vdds-supply on 10nm PHY Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 068/183] dt-bindings: msm/dsi: Dont require vcca-supply on 14nm PHY Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 069/183] platform/x86: sony-laptop: Dont turn off 0x153 keyboard backlight during probe Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 070/183] ixgbe: fix pci device refcount leak Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 071/183] ipv6: raw: Deduct extension header length in rawv6_push_pending_frames Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 072/183] iavf/iavf_main: actually log ->src mask when talking about it Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 073/183] drm/i915/gt: Cleanup partial engine discovery failures Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 074/183] usb: ulpi: defer ulpi_register on ulpi_read_id timeout Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 075/183] drm/amd/pm: enable mode1 reset on smu_v13_0_10 Greg Kroah-Hartman
2023-01-16 15:49 ` [PATCH 6.1 076/183] drm/amd/pm: Enable bad memory page/channel recording support for smu v13_0_0 Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 077/183] drm/amd/pm: enable GPO dynamic control support for SMU13.0.0 Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 078/183] drm/amd/pm: enable GPO dynamic control support for SMU13.0.7 Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 079/183] drm/amdgpu: add soc21 common ip block support for GC 11.0.4 Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 080/183] drm/amdgpu: Enable pg/cg flags on GC11_0_4 for VCN Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 081/183] drm/amdgpu: enable VCN DPG for GC IP v11.0.4 Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 082/183] mm: Always release pages to the buddy allocator in memblock_free_late() Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 083/183] iommu/iova: Fix alloc iova overflows issue Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 084/183] iommu/arm-smmu-v3: Dont unregister on shutdown Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 085/183] iommu/mediatek-v1: Fix an error handling path in mtk_iommu_v1_probe() Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 086/183] iommu/arm-smmu: Dont unregister on shutdown Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 087/183] iommu/arm-smmu: Report IOMMU_CAP_CACHE_COHERENCY even betterer Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 088/183] sched/core: Fix use-after-free bug in dup_user_cpus_ptr() Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 089/183] netfilter: ipset: Fix overflow before widen in the bitmap_ip_create() function Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 090/183] selftests: netfilter: fix transaction test script timeout handling Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 091/183] powerpc/imc-pmu: Fix use of mutex in IRQs disabled section Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 092/183] x86/boot: Avoid using Intel mnemonics in AT&T syntax asm Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 093/183] EDAC/device: Fix period calculation in edac_device_reset_delay_period() Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 094/183] x86/pat: Fix pat_x_mtrr_type() for MTRR disabled case Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 095/183] x86/resctrl: Fix task CLOSID/RMID update race Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 096/183] x86/resctrl: Fix event counts regression in reused RMIDs Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 097/183] regulator: da9211: Use irq handler when ready Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 098/183] scsi: storvsc: Fix swiotlb bounce buffer leak in confidential VM Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 099/183] scsi: mpi3mr: Refer CONFIG_SCSI_MPI3MR in Makefile Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 100/183] scsi: ufs: core: WLUN suspend SSU/enter hibern8 fail recovery Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 101/183] ASoC: Intel: fix sof-nau8825 link failure Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 102/183] ASoC: Intel: sof_nau8825: support rt1015p speaker amplifier Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 103/183] ASoC: Intel: sof-nau8825: fix module alias overflow Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 104/183] drm/msm/dpu: Fix some kernel-doc comments Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 105/183] drm/msm/dpu: Fix memory leak in msm_mdss_parse_data_bus_icc_path Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 106/183] ASoC: wm8904: fix wrong outputs volume after power reactivation Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 107/183] mtd: parsers: scpart: fix __udivdi3 undefined on mips Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 108/183] mtd: cfi: allow building spi-intel standalone Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 109/183] ALSA: usb-audio: Make sure to stop endpoints before closing EPs Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 110/183] ALSA: usb-audio: Relax hw constraints for implicit fb sync Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 111/183] stmmac: dwmac-mediatek: remove the dwmac_fix_mac_speed Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 112/183] tipc: fix unexpected link reset due to discovery messages Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 113/183] NFSD: Pass the target nfsd_file to nfsd_commit() Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 114/183] NFSD: Revert "NFSD: NFSv4 CLOSE should release an nfsd_file immediately" Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 115/183] NFSD: Add an NFSD_FILE_GC flag to enable nfsd_file garbage collection Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 116/183] nfsd: remove the pages_flushed statistic from filecache Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 117/183] nfsd: reorganize filecache.c Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 118/183] NFSD: Add an nfsd_file_fsync tracepoint Greg Kroah-Hartman
2023-01-16 15:50 ` Greg Kroah-Hartman [this message]
2023-01-16 15:50 ` [PATCH 6.1 120/183] nfsd: fix handling of cached open files in nfsd4_open codepath Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 121/183] octeontx2-af: Fix LMAC config in cgx_lmac_rx_tx_enable Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 122/183] sched/core: Fix arch_scale_freq_tick() on tickless systems Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 123/183] blk-mq: move the srcu_struct used for quiescing to the tagset Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 124/183] blk-crypto: pass a gendisk to blk_crypto_sysfs_{,un}register Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 125/183] block: factor out a blk_debugfs_remove helper Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 126/183] block: fix error unwinding in blk_register_queue Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 127/183] block: untangle request_queue refcounting from sysfs Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 128/183] block: mark blk_put_queue as potentially blocking Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 129/183] block: Drop spurious might_sleep() from blk_put_queue() Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 130/183] hvc/xen: lock console list traversal Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 131/183] nfc: pn533: Wait for out_urbs completion in pn533_usb_send_frame() Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 132/183] gro: avoid checking for a failed search Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 133/183] gro: take care of DODGY packets Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 134/183] af_unix: selftest: Fix the size of the parameter to connect() Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 135/183] ASoC: qcom: Fix building APQ8016 machine driver without SOUNDWIRE Greg Kroah-Hartman
2023-01-16 15:50 ` [PATCH 6.1 136/183] tools/nolibc: restore mips branch ordering in the _start block Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 137/183] tools/nolibc: fix the O_* fcntl/open macro definitions for riscv Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 138/183] drm/amdgpu: Fix potential NULL dereference Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 139/183] ice: Fix potential memory leak in ice_gnss_tty_write() Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 140/183] ice: Add check for kzalloc Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 141/183] drm/vmwgfx: Write the driver id registers Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 142/183] drm/vmwgfx: Refactor resource managers hashtable to use linux/hashtable implementation Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 143/183] drm/vmwgfx: Remove ttm object hashtable Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 144/183] drm/vmwgfx: Refactor resource validation hashtable to use linux/hashtable implementation Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 145/183] drm/vmwgfx: Refactor ttm reference object hashtable to use linux/hashtable Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 146/183] drm/vmwgfx: Remove vmwgfx_hashtab Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 147/183] drm/vmwgfx: Remove rcu locks from user resources Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 148/183] net/sched: act_mpls: Fix warning during failed attribute validation Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 149/183] Revert "r8169: disable detection of chip version 36" Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 150/183] net/mlx5: check attr pointer validity before dereferencing it Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 151/183] net/mlx5e: TC, Keep mod hdr actions after mod hdr alloc Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 152/183] net/mlx5: Fix command stats access after free Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 153/183] net/mlx5e: Verify dev is present for fix features ndo Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 154/183] net/mlx5e: IPoIB, Block queue count configuration when sub interfaces are present Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 155/183] net/mlx5e: IPoIB, Block PKEY interfaces with less rx queues than parent Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 156/183] net/mlx5e: IPoIB, Fix child PKEY interface stats on rx path Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 157/183] net/mlx5: Fix ptp max frequency adjustment range Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 158/183] net/mlx5e: Dont support encap rules with gbp option Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 159/183] net/mlx5e: Fix macsec ssci attribute handling in offload path Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 160/183] net/mlx5e: Fix macsec possible null dereference when updating MAC security entity (SecY) Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 161/183] selftests/net: l2_tos_ttl_inherit.sh: Set IPv6 addresses with "nodad" Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 162/183] selftests/net: l2_tos_ttl_inherit.sh: Run tests in their own netns Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 163/183] selftests/net: l2_tos_ttl_inherit.sh: Ensure environment cleanup on failure Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 164/183] octeontx2-pf: Fix resource leakage in VF driver unbind Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 165/183] perf build: Properly guard libbpf includes Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 166/183] perf kmem: Support legacy tracepoints Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 167/183] perf kmem: Support field "node" in evsel__process_alloc_event() coping with recent tracepoint restructuring Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 168/183] igc: Fix PPS delta between two synchronized end-points Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 169/183] net: lan966x: check for ptp to be enabled in lan966x_ptp_deinit() Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 170/183] net: hns3: fix wrong use of rss size during VF rss config Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 171/183] bnxt: make sure we return pages to the pool Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 172/183] platform/surface: aggregator: Add missing call to ssam_request_sync_free() Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 173/183] platform/x86/amd: Fix refcount leak in amd_pmc_probe Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 174/183] ALSA: usb-audio: Fix possible NULL pointer dereference in snd_usb_pcm_has_fixed_rate() Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 175/183] efi: fix NULL-deref in init error path Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 176/183] io_uring: lock overflowing for IOPOLL Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 177/183] io_uring/poll: attempt request issue after racy poll wakeup Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 178/183] drm/i915: Fix CFI violations in gt_sysfs Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 179/183] io_uring/io-wq: free worker if task_work creation is canceled Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 180/183] io_uring/io-wq: only free worker if it was allocated for creation Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 181/183] block: handle bio_split_to_limits() NULL return Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 182/183] Revert "usb: ulpi: defer ulpi_register on ulpi_read_id timeout" Greg Kroah-Hartman
2023-01-16 15:51 ` [PATCH 6.1 183/183] pinctrl: amd: Add dynamic debugging for active GPIOs Greg Kroah-Hartman
2023-01-16 22:38 ` [PATCH 6.1 000/183] 6.1.7-rc1 review Conor Dooley
2023-01-16 23:55 ` Shuah Khan
2023-01-17  2:05 ` Justin Forbes
2023-01-17  4:14 ` ogasawara takeshi
2023-01-17  7:11 ` Wang Yugui
2023-01-17  9:17   ` Greg Kroah-Hartman
2023-01-18  2:14     ` Wang Yugui
2023-01-18  6:08       ` Greg Kroah-Hartman
2023-01-17  8:40 ` Rudi Heitbaum
2023-01-17  9:01 ` Bagas Sanjaya
2023-01-17  9:32 ` Ron Economos
2023-01-17 10:05 ` Naresh Kamboju
2023-01-17 12:43 ` Sudip Mukherjee
2023-01-17 13:21 ` Allen Pais

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230116154808.436784406@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=chuck.lever@oracle.com \
    --cc=jlayton@kernel.org \
    --cc=patches@lists.linux.dev \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).