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(©->refcount)) - return; -+ atomic_dec(©->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(©->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(©->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(©->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(©->refcount))\n" - " \t\treturn;\n" - "+\tatomic_dec(©->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(©->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(©->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(©->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.