All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20241118212035.3848-6-cel@kernel.org>

diff --git a/a/1.txt b/N1/1.txt
index fc94b8e..5e202b9 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,109 +1,121 @@
-From: Chuck Lever <chuck.lever@oracle.com>
+[ Sasha's backport helper bot ]
 
-[ Upstream commit aadc3bbea163b6caaaebfdd2b6c4667fbc726752 ]
+Hi,
 
-Nothing appears to limit the number of concurrent async COPY
-operations that clients can start. In addition, AFAICT each async
-COPY can copy an unlimited number of 4MB chunks, so can run for a
-long time. Thus IMO async COPY can become a DoS vector.
+The upstream commit SHA1 provided is correct: aadc3bbea163b6caaaebfdd2b6c4667fbc726752
 
-Add a restriction mechanism that bounds the number of concurrent
-background COPY operations. Start simple and try to be fair -- this
-patch implements a per-namespace limit.
+WARNING: Author mismatch between patch and upstream commit:
+Backport author: cel@kernel.org
+Commit author: Chuck Lever <chuck.lever@oracle.com>
 
-An async COPY request that occurs while this limit is exceeded gets
-NFS4ERR_DELAY. The requesting client can choose to send the request
-again after a delay or fall back to a traditional read/write style
-copy.
+Commit in newer trees:
 
-If there is need to make the mechanism more sophisticated, we can
-visit that in future patches.
+|-----------------|----------------------------------------------|
+| 6.11.y          |  Present (different SHA1: 6a488ad7745b)      |
+| 6.6.y           |  Not found                                   |
+| 6.1.y           |  Not found                                   |
+| 5.15.y          |  Not found                                   |
+|-----------------|----------------------------------------------|
 
-Cc: stable@vger.kernel.org
-Reviewed-by: Jeff Layton <jlayton@kernel.org>
-Link: https://nvd.nist.gov/vuln/detail/CVE-2024-49974
-Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+Note: The patch differs from the upstream commit:
 ---
- fs/nfsd/netns.h     |  1 +
- fs/nfsd/nfs4proc.c  | 11 +++++++++--
- fs/nfsd/nfs4state.c |  1 +
- fs/nfsd/xdr4.h      |  1 +
- 4 files changed, 12 insertions(+), 2 deletions(-)
-
-diff --git a/fs/nfsd/netns.h b/fs/nfsd/netns.h
-index 548422b24a7d..41c750f34473 100644
---- a/fs/nfsd/netns.h
-+++ b/fs/nfsd/netns.h
-@@ -152,6 +152,7 @@ struct nfsd_net {
- 	u32		s2s_cp_cl_id;
- 	struct idr	s2s_cp_stateids;
- 	spinlock_t	s2s_cp_lock;
-+	atomic_t	pending_async_copies;
- 
- 	/*
- 	 * Version information
-diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
-index 08d90e0e8fae..54f43501fed9 100644
---- a/fs/nfsd/nfs4proc.c
-+++ b/fs/nfsd/nfs4proc.c
-@@ -1244,6 +1244,7 @@ static void nfs4_put_copy(struct nfsd4_copy *copy)
- {
- 	if (!refcount_dec_and_test(&copy->refcount))
- 		return;
-+	atomic_dec(&copy->cp_nn->pending_async_copies);
- 	kfree(copy->cp_src);
- 	kfree(copy);
- }
-@@ -1782,10 +1783,16 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
- 	memcpy(&copy->fh, &cstate->current_fh.fh_handle,
- 		sizeof(struct knfsd_fh));
- 	if (nfsd4_copy_is_async(copy)) {
--		status = nfserrno(-ENOMEM);
- 		async_copy = kzalloc(sizeof(struct nfsd4_copy), GFP_KERNEL);
- 		if (!async_copy)
- 			goto out_err;
-+		async_copy->cp_nn = nn;
-+		/* Arbitrary cap on number of pending async copy operations */
-+		if (atomic_inc_return(&nn->pending_async_copies) >
-+				(int)rqstp->rq_pool->sp_nrthreads) {
-+			atomic_dec(&nn->pending_async_copies);
-+			goto out_err;
-+		}
- 		INIT_LIST_HEAD(&async_copy->copies);
- 		refcount_set(&async_copy->refcount, 1);
- 		async_copy->cp_src = kmalloc(sizeof(*async_copy->cp_src), GFP_KERNEL);
-@@ -1824,7 +1831,7 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
- 	}
- 	if (async_copy)
- 		cleanup_async_copy(async_copy);
--	status = nfserrno(-ENOMEM);
-+	status = nfserr_jukebox;
- 	goto out;
- }
- 
-diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
-index 5ab3045c649f..a7016f738647 100644
---- a/fs/nfsd/nfs4state.c
-+++ b/fs/nfsd/nfs4state.c
-@@ -8079,6 +8079,7 @@ static int nfs4_state_create_net(struct net *net)
- 	spin_lock_init(&nn->client_lock);
- 	spin_lock_init(&nn->s2s_cp_lock);
- 	idr_init(&nn->s2s_cp_stateids);
-+	atomic_set(&nn->pending_async_copies, 0);
+--- -	2024-11-19 00:21:15.890891404 -0500
++++ /tmp/tmp.y7YMnBfnA8	2024-11-19 00:21:15.887605316 -0500
+@@ -1,3 +1,5 @@
++[ Upstream commit aadc3bbea163b6caaaebfdd2b6c4667fbc726752 ]
++
+ Nothing appears to limit the number of concurrent async COPY
+ operations that clients can start. In addition, AFAICT each async
+ COPY can copy an unlimited number of 4MB chunks, so can run for a
+@@ -17,6 +19,7 @@
  
- 	spin_lock_init(&nn->blocked_locks_lock);
- 	INIT_LIST_HEAD(&nn->blocked_locks_lru);
-diff --git a/fs/nfsd/xdr4.h b/fs/nfsd/xdr4.h
-index 510978e602da..9bd1ade6ba54 100644
---- a/fs/nfsd/xdr4.h
-+++ b/fs/nfsd/xdr4.h
-@@ -574,6 +574,7 @@ struct nfsd4_copy {
- 	struct nfsd4_ssc_umount_item *ss_nsui;
- 	struct nfs_fh		c_fh;
- 	nfs4_stateid		stateid;
-+	struct nfsd_net		*cp_nn;
- };
+ Cc: stable@vger.kernel.org
+ Reviewed-by: Jeff Layton <jlayton@kernel.org>
++Link: https://nvd.nist.gov/vuln/detail/CVE-2024-49974
+ Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+ ---
+  fs/nfsd/netns.h     |  1 +
+@@ -26,10 +29,10 @@
+  4 files changed, 12 insertions(+), 2 deletions(-)
  
- static inline void nfsd4_copy_set_sync(struct nfsd4_copy *copy, bool sync)
--- 
-2.47.0
+ diff --git a/fs/nfsd/netns.h b/fs/nfsd/netns.h
+-index 238fc4e56e539..37b8bfdcfeea8 100644
++index 548422b24a7d..41c750f34473 100644
+ --- a/fs/nfsd/netns.h
+ +++ b/fs/nfsd/netns.h
+-@@ -148,6 +148,7 @@ struct nfsd_net {
++@@ -152,6 +152,7 @@ struct nfsd_net {
+  	u32		s2s_cp_cl_id;
+  	struct idr	s2s_cp_stateids;
+  	spinlock_t	s2s_cp_lock;
+@@ -38,10 +41,10 @@
+  	/*
+  	 * Version information
+ diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
+-index 231c6035602f6..9655acb407b72 100644
++index 08d90e0e8fae..54f43501fed9 100644
+ --- a/fs/nfsd/nfs4proc.c
+ +++ b/fs/nfsd/nfs4proc.c
+-@@ -1280,6 +1280,7 @@ static void nfs4_put_copy(struct nfsd4_copy *copy)
++@@ -1244,6 +1244,7 @@ static void nfs4_put_copy(struct nfsd4_copy *copy)
+  {
+  	if (!refcount_dec_and_test(&copy->refcount))
+  		return;
+@@ -49,7 +52,7 @@
+  	kfree(copy->cp_src);
+  	kfree(copy);
+  }
+-@@ -1835,10 +1836,16 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
++@@ -1782,10 +1783,16 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
+  	memcpy(&copy->fh, &cstate->current_fh.fh_handle,
+  		sizeof(struct knfsd_fh));
+  	if (nfsd4_copy_is_async(copy)) {
+@@ -67,7 +70,7 @@
+  		INIT_LIST_HEAD(&async_copy->copies);
+  		refcount_set(&async_copy->refcount, 1);
+  		async_copy->cp_src = kmalloc(sizeof(*async_copy->cp_src), GFP_KERNEL);
+-@@ -1878,7 +1885,7 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
++@@ -1824,7 +1831,7 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
+  	}
+  	if (async_copy)
+  		cleanup_async_copy(async_copy);
+@@ -77,10 +80,10 @@
+  }
+  
+ diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
+-index 7ade551bc0221..a49aa75bc0b79 100644
++index 5ab3045c649f..a7016f738647 100644
+ --- a/fs/nfsd/nfs4state.c
+ +++ b/fs/nfsd/nfs4state.c
+-@@ -8554,6 +8554,7 @@ static int nfs4_state_create_net(struct net *net)
++@@ -8079,6 +8079,7 @@ static int nfs4_state_create_net(struct net *net)
+  	spin_lock_init(&nn->client_lock);
+  	spin_lock_init(&nn->s2s_cp_lock);
+  	idr_init(&nn->s2s_cp_stateids);
+@@ -89,10 +92,10 @@
+  	spin_lock_init(&nn->blocked_locks_lock);
+  	INIT_LIST_HEAD(&nn->blocked_locks_lru);
+ diff --git a/fs/nfsd/xdr4.h b/fs/nfsd/xdr4.h
+-index fbdd42cde1fa5..2a21a7662e030 100644
++index 510978e602da..9bd1ade6ba54 100644
+ --- a/fs/nfsd/xdr4.h
+ +++ b/fs/nfsd/xdr4.h
+-@@ -713,6 +713,7 @@ struct nfsd4_copy {
++@@ -574,6 +574,7 @@ struct nfsd4_copy {
+  	struct nfsd4_ssc_umount_item *ss_nsui;
+  	struct nfs_fh		c_fh;
+  	nfs4_stateid		stateid;
+@@ -100,3 +103,6 @@
+  };
+  
+  static inline void nfsd4_copy_set_sync(struct nfsd4_copy *copy, bool sync)
++-- 
++2.47.0
++
+---
+
+Results of testing on various branches:
+
+| Branch                    | Patch Apply | Build Test |
+|---------------------------|-------------|------------|
+| stable/linux-5.15.y       |  Success    |  Success   |
diff --git a/a/content_digest b/N1/content_digest
index 8aafcdc..0e5f7b7 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -1,121 +1,131 @@
- "ref\020241118212035.3848-1-cel@kernel.org\0"
- "From\0cel@kernel.org\0"
- "Subject\0[PATCH 5.15 3/5] NFSD: Limit the number of concurrent async COPY operations\0"
- "Date\0Mon, 18 Nov 2024 16:20:17 -0500\0"
- "To\0<stable@vger.kernel.org>\0"
- "Cc\0<linux-nfs@vger.kernel.org>"
-  Jeff Layton <jlayton@kernel.org>
- " Chuck Lever <chuck.lever@oracle.com>\0"
+ "From\0Sasha Levin <sashal@kernel.org>\0"
+ "Subject\0Re: [PATCH 5.15 3/5] NFSD: Limit the number of concurrent async COPY operations\0"
+ "Date\0Tue, 19 Nov 2024 07:30:53 -0500\0"
+ "To\0stable@vger.kernel.org\0"
+ "Cc\0cel@kernel.org"
+ " Sasha Levin <sashal@kernel.org>\0"
  "\00:1\0"
  "b\0"
- "From: Chuck Lever <chuck.lever@oracle.com>\n"
+ "[ Sasha's backport helper bot ]\n"
  "\n"
- "[ Upstream commit aadc3bbea163b6caaaebfdd2b6c4667fbc726752 ]\n"
+ "Hi,\n"
  "\n"
- "Nothing appears to limit the number of concurrent async COPY\n"
- "operations that clients can start. In addition, AFAICT each async\n"
- "COPY can copy an unlimited number of 4MB chunks, so can run for a\n"
- "long time. Thus IMO async COPY can become a DoS vector.\n"
+ "The upstream commit SHA1 provided is correct: aadc3bbea163b6caaaebfdd2b6c4667fbc726752\n"
  "\n"
- "Add a restriction mechanism that bounds the number of concurrent\n"
- "background COPY operations. Start simple and try to be fair -- this\n"
- "patch implements a per-namespace limit.\n"
+ "WARNING: Author mismatch between patch and upstream commit:\n"
+ "Backport author: cel@kernel.org\n"
+ "Commit author: Chuck Lever <chuck.lever@oracle.com>\n"
  "\n"
- "An async COPY request that occurs while this limit is exceeded gets\n"
- "NFS4ERR_DELAY. The requesting client can choose to send the request\n"
- "again after a delay or fall back to a traditional read/write style\n"
- "copy.\n"
+ "Commit in newer trees:\n"
  "\n"
- "If there is need to make the mechanism more sophisticated, we can\n"
- "visit that in future patches.\n"
+ "|-----------------|----------------------------------------------|\n"
+ "| 6.11.y          |  Present (different SHA1: 6a488ad7745b)      |\n"
+ "| 6.6.y           |  Not found                                   |\n"
+ "| 6.1.y           |  Not found                                   |\n"
+ "| 5.15.y          |  Not found                                   |\n"
+ "|-----------------|----------------------------------------------|\n"
  "\n"
- "Cc: stable@vger.kernel.org\n"
- "Reviewed-by: Jeff Layton <jlayton@kernel.org>\n"
- "Link: https://nvd.nist.gov/vuln/detail/CVE-2024-49974\n"
- "Signed-off-by: Chuck Lever <chuck.lever@oracle.com>\n"
+ "Note: The patch differs from the upstream commit:\n"
  "---\n"
- " fs/nfsd/netns.h     |  1 +\n"
- " fs/nfsd/nfs4proc.c  | 11 +++++++++--\n"
- " fs/nfsd/nfs4state.c |  1 +\n"
- " fs/nfsd/xdr4.h      |  1 +\n"
- " 4 files changed, 12 insertions(+), 2 deletions(-)\n"
- "\n"
- "diff --git a/fs/nfsd/netns.h b/fs/nfsd/netns.h\n"
- "index 548422b24a7d..41c750f34473 100644\n"
- "--- a/fs/nfsd/netns.h\n"
- "+++ b/fs/nfsd/netns.h\n"
- "@@ -152,6 +152,7 @@ struct nfsd_net {\n"
- " \tu32\t\ts2s_cp_cl_id;\n"
- " \tstruct idr\ts2s_cp_stateids;\n"
- " \tspinlock_t\ts2s_cp_lock;\n"
- "+\tatomic_t\tpending_async_copies;\n"
- " \n"
- " \t/*\n"
- " \t * Version information\n"
- "diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c\n"
- "index 08d90e0e8fae..54f43501fed9 100644\n"
- "--- a/fs/nfsd/nfs4proc.c\n"
- "+++ b/fs/nfsd/nfs4proc.c\n"
- "@@ -1244,6 +1244,7 @@ static void nfs4_put_copy(struct nfsd4_copy *copy)\n"
- " {\n"
- " \tif (!refcount_dec_and_test(&copy->refcount))\n"
- " \t\treturn;\n"
- "+\tatomic_dec(&copy->cp_nn->pending_async_copies);\n"
- " \tkfree(copy->cp_src);\n"
- " \tkfree(copy);\n"
- " }\n"
- "@@ -1782,10 +1783,16 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
- " \tmemcpy(&copy->fh, &cstate->current_fh.fh_handle,\n"
- " \t\tsizeof(struct knfsd_fh));\n"
- " \tif (nfsd4_copy_is_async(copy)) {\n"
- "-\t\tstatus = nfserrno(-ENOMEM);\n"
- " \t\tasync_copy = kzalloc(sizeof(struct nfsd4_copy), GFP_KERNEL);\n"
- " \t\tif (!async_copy)\n"
- " \t\t\tgoto out_err;\n"
- "+\t\tasync_copy->cp_nn = nn;\n"
- "+\t\t/* Arbitrary cap on number of pending async copy operations */\n"
- "+\t\tif (atomic_inc_return(&nn->pending_async_copies) >\n"
- "+\t\t\t\t(int)rqstp->rq_pool->sp_nrthreads) {\n"
- "+\t\t\tatomic_dec(&nn->pending_async_copies);\n"
- "+\t\t\tgoto out_err;\n"
- "+\t\t}\n"
- " \t\tINIT_LIST_HEAD(&async_copy->copies);\n"
- " \t\trefcount_set(&async_copy->refcount, 1);\n"
- " \t\tasync_copy->cp_src = kmalloc(sizeof(*async_copy->cp_src), GFP_KERNEL);\n"
- "@@ -1824,7 +1831,7 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
- " \t}\n"
- " \tif (async_copy)\n"
- " \t\tcleanup_async_copy(async_copy);\n"
- "-\tstatus = nfserrno(-ENOMEM);\n"
- "+\tstatus = nfserr_jukebox;\n"
- " \tgoto out;\n"
- " }\n"
- " \n"
- "diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c\n"
- "index 5ab3045c649f..a7016f738647 100644\n"
- "--- a/fs/nfsd/nfs4state.c\n"
- "+++ b/fs/nfsd/nfs4state.c\n"
- "@@ -8079,6 +8079,7 @@ static int nfs4_state_create_net(struct net *net)\n"
- " \tspin_lock_init(&nn->client_lock);\n"
- " \tspin_lock_init(&nn->s2s_cp_lock);\n"
- " \tidr_init(&nn->s2s_cp_stateids);\n"
- "+\tatomic_set(&nn->pending_async_copies, 0);\n"
+ "--- -\t2024-11-19 00:21:15.890891404 -0500\n"
+ "+++ /tmp/tmp.y7YMnBfnA8\t2024-11-19 00:21:15.887605316 -0500\n"
+ "@@ -1,3 +1,5 @@\n"
+ "+[ Upstream commit aadc3bbea163b6caaaebfdd2b6c4667fbc726752 ]\n"
+ "+\n"
+ " Nothing appears to limit the number of concurrent async COPY\n"
+ " operations that clients can start. In addition, AFAICT each async\n"
+ " COPY can copy an unlimited number of 4MB chunks, so can run for a\n"
+ "@@ -17,6 +19,7 @@\n"
  " \n"
- " \tspin_lock_init(&nn->blocked_locks_lock);\n"
- " \tINIT_LIST_HEAD(&nn->blocked_locks_lru);\n"
- "diff --git a/fs/nfsd/xdr4.h b/fs/nfsd/xdr4.h\n"
- "index 510978e602da..9bd1ade6ba54 100644\n"
- "--- a/fs/nfsd/xdr4.h\n"
- "+++ b/fs/nfsd/xdr4.h\n"
- "@@ -574,6 +574,7 @@ struct nfsd4_copy {\n"
- " \tstruct nfsd4_ssc_umount_item *ss_nsui;\n"
- " \tstruct nfs_fh\t\tc_fh;\n"
- " \tnfs4_stateid\t\tstateid;\n"
- "+\tstruct nfsd_net\t\t*cp_nn;\n"
- " };\n"
+ " Cc: stable@vger.kernel.org\n"
+ " Reviewed-by: Jeff Layton <jlayton@kernel.org>\n"
+ "+Link: https://nvd.nist.gov/vuln/detail/CVE-2024-49974\n"
+ " Signed-off-by: Chuck Lever <chuck.lever@oracle.com>\n"
+ " ---\n"
+ "  fs/nfsd/netns.h     |  1 +\n"
+ "@@ -26,10 +29,10 @@\n"
+ "  4 files changed, 12 insertions(+), 2 deletions(-)\n"
  " \n"
- " static inline void nfsd4_copy_set_sync(struct nfsd4_copy *copy, bool sync)\n"
- "-- \n"
- 2.47.0
+ " diff --git a/fs/nfsd/netns.h b/fs/nfsd/netns.h\n"
+ "-index 238fc4e56e539..37b8bfdcfeea8 100644\n"
+ "+index 548422b24a7d..41c750f34473 100644\n"
+ " --- a/fs/nfsd/netns.h\n"
+ " +++ b/fs/nfsd/netns.h\n"
+ "-@@ -148,6 +148,7 @@ struct nfsd_net {\n"
+ "+@@ -152,6 +152,7 @@ struct nfsd_net {\n"
+ "  \tu32\t\ts2s_cp_cl_id;\n"
+ "  \tstruct idr\ts2s_cp_stateids;\n"
+ "  \tspinlock_t\ts2s_cp_lock;\n"
+ "@@ -38,10 +41,10 @@\n"
+ "  \t/*\n"
+ "  \t * Version information\n"
+ " diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c\n"
+ "-index 231c6035602f6..9655acb407b72 100644\n"
+ "+index 08d90e0e8fae..54f43501fed9 100644\n"
+ " --- a/fs/nfsd/nfs4proc.c\n"
+ " +++ b/fs/nfsd/nfs4proc.c\n"
+ "-@@ -1280,6 +1280,7 @@ static void nfs4_put_copy(struct nfsd4_copy *copy)\n"
+ "+@@ -1244,6 +1244,7 @@ static void nfs4_put_copy(struct nfsd4_copy *copy)\n"
+ "  {\n"
+ "  \tif (!refcount_dec_and_test(&copy->refcount))\n"
+ "  \t\treturn;\n"
+ "@@ -49,7 +52,7 @@\n"
+ "  \tkfree(copy->cp_src);\n"
+ "  \tkfree(copy);\n"
+ "  }\n"
+ "-@@ -1835,10 +1836,16 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
+ "+@@ -1782,10 +1783,16 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
+ "  \tmemcpy(&copy->fh, &cstate->current_fh.fh_handle,\n"
+ "  \t\tsizeof(struct knfsd_fh));\n"
+ "  \tif (nfsd4_copy_is_async(copy)) {\n"
+ "@@ -67,7 +70,7 @@\n"
+ "  \t\tINIT_LIST_HEAD(&async_copy->copies);\n"
+ "  \t\trefcount_set(&async_copy->refcount, 1);\n"
+ "  \t\tasync_copy->cp_src = kmalloc(sizeof(*async_copy->cp_src), GFP_KERNEL);\n"
+ "-@@ -1878,7 +1885,7 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
+ "+@@ -1824,7 +1831,7 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
+ "  \t}\n"
+ "  \tif (async_copy)\n"
+ "  \t\tcleanup_async_copy(async_copy);\n"
+ "@@ -77,10 +80,10 @@\n"
+ "  }\n"
+ "  \n"
+ " diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c\n"
+ "-index 7ade551bc0221..a49aa75bc0b79 100644\n"
+ "+index 5ab3045c649f..a7016f738647 100644\n"
+ " --- a/fs/nfsd/nfs4state.c\n"
+ " +++ b/fs/nfsd/nfs4state.c\n"
+ "-@@ -8554,6 +8554,7 @@ static int nfs4_state_create_net(struct net *net)\n"
+ "+@@ -8079,6 +8079,7 @@ static int nfs4_state_create_net(struct net *net)\n"
+ "  \tspin_lock_init(&nn->client_lock);\n"
+ "  \tspin_lock_init(&nn->s2s_cp_lock);\n"
+ "  \tidr_init(&nn->s2s_cp_stateids);\n"
+ "@@ -89,10 +92,10 @@\n"
+ "  \tspin_lock_init(&nn->blocked_locks_lock);\n"
+ "  \tINIT_LIST_HEAD(&nn->blocked_locks_lru);\n"
+ " diff --git a/fs/nfsd/xdr4.h b/fs/nfsd/xdr4.h\n"
+ "-index fbdd42cde1fa5..2a21a7662e030 100644\n"
+ "+index 510978e602da..9bd1ade6ba54 100644\n"
+ " --- a/fs/nfsd/xdr4.h\n"
+ " +++ b/fs/nfsd/xdr4.h\n"
+ "-@@ -713,6 +713,7 @@ struct nfsd4_copy {\n"
+ "+@@ -574,6 +574,7 @@ struct nfsd4_copy {\n"
+ "  \tstruct nfsd4_ssc_umount_item *ss_nsui;\n"
+ "  \tstruct nfs_fh\t\tc_fh;\n"
+ "  \tnfs4_stateid\t\tstateid;\n"
+ "@@ -100,3 +103,6 @@\n"
+ "  };\n"
+ "  \n"
+ "  static inline void nfsd4_copy_set_sync(struct nfsd4_copy *copy, bool sync)\n"
+ "+-- \n"
+ "+2.47.0\n"
+ "+\n"
+ "---\n"
+ "\n"
+ "Results of testing on various branches:\n"
+ "\n"
+ "| Branch                    | Patch Apply | Build Test |\n"
+ "|---------------------------|-------------|------------|\n"
+ | stable/linux-5.15.y       |  Success    |  Success   |
 
-b22a6343a7c2d4d58e54e1a1b349f225427cd792444321281c45f0c0cc58f7b7
+7e81594f47590eaf68bbfde7d1f607311de337c11c944eaaa195f36fd9cf3228

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.