linux-next.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* linux-next: manual merge of the nfs tree with Linus' tree
@ 2009-04-02  0:41 Stephen Rothwell
  2009-04-02  8:56 ` David Howells
  0 siblings, 1 reply; 19+ messages in thread
From: Stephen Rothwell @ 2009-04-02  0:41 UTC (permalink / raw)
  To: Trond Myklebust; +Cc: linux-next, David Howells, Nick Piggin, Andrew Morton

Hi Trond,

Today's linux-next merge of the nfs tree got a conflict in fs/nfs/file.c
between commit c2ec175c39f62949438354f603f4aa170846aabb ("mm:
page_mkwrite change prototype to match fault") from Linus' tree and
commit e858675049961c24d12a9fb66aae6638ff30abb8 ("NFS: Add comment
banners to some NFS functions") from the nfs tree.

Just context changes.  I fixed it up (see below) and can carry the fix
for a while.
-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

diff --cc fs/nfs/file.c
index 0abf3f3,caf9be4..0000000
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@@ -451,9 -478,13 +478,14 @@@ const struct address_space_operations n
  	.launder_page = nfs_launder_page,
  };
  
+ /*
+  * Notification that a PTE pointing to an NFS page is about to be made
+  * writable, implying that someone is about to modify the page through a
+  * shared-writable mapping
+  */
 -static int nfs_vm_page_mkwrite(struct vm_area_struct *vma, struct page *page)
 +static int nfs_vm_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
  {
 +	struct page *page = vmf->page;
  	struct file *filp = vma->vm_file;
  	struct dentry *dentry = filp->f_path.dentry;
  	unsigned pagelen;

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: linux-next: manual merge of the nfs tree with Linus' tree
  2009-04-02  0:41 Stephen Rothwell
@ 2009-04-02  8:56 ` David Howells
  0 siblings, 0 replies; 19+ messages in thread
From: David Howells @ 2009-04-02  8:56 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: dhowells, Trond Myklebust, linux-next, Nick Piggin, Andrew Morton

Stephen Rothwell <sfr@canb.auug.org.au> wrote:

>  -static int nfs_vm_page_mkwrite(struct vm_area_struct *vma, struct page *page)
>  +static int nfs_vm_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)

That is the correct fix.  I've it to my version of the patch.

David

^ permalink raw reply	[flat|nested] 19+ messages in thread

* linux-next: manual merge of the nfs tree with Linus' tree
@ 2012-05-22  2:10 Stephen Rothwell
  0 siblings, 0 replies; 19+ messages in thread
From: Stephen Rothwell @ 2012-05-22  2:10 UTC (permalink / raw)
  To: Trond Myklebust; +Cc: linux-next, linux-kernel, Linus

[-- Attachment #1: Type: text/plain, Size: 957 bytes --]

Hi Trond,

Today's linux-next merge of the nfs tree got a conflict in
fs/nfs/nfs4proc.c between commit 26fe57502870 ("vfs: make it possible to
access the dentry hash/len as one 64-bit entry") from Linus' tree and
commit 778d28172f71 ("NFSv4: Simplify the NFSv4 REMOVE, LINK and RENAME
compounds") from the nfs tree.

Just context changes.  I fixed it up (see below) and can carry the fix as
necessary.
-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

diff --cc fs/nfs/nfs4proc.c
index ab985f6,78784e5..0000000
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@@ -2782,8 -2799,8 +2799,7 @@@ static int _nfs4_proc_remove(struct ino
  	struct nfs_server *server = NFS_SERVER(dir);
  	struct nfs_removeargs args = {
  		.fh = NFS_FH(dir),
 -		.name.len = name->len,
 -		.name.name = name->name,
 +		.name = *name,
- 		.bitmask = server->attr_bitmask,
  	};
  	struct nfs_removeres res = {
  		.server = server,

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* linux-next: manual merge of the nfs tree with Linus' tree
@ 2016-05-19  0:40 Stephen Rothwell
  2016-05-19  1:18 ` Weston Andros Adamson
  0 siblings, 1 reply; 19+ messages in thread
From: Stephen Rothwell @ 2016-05-19  0:40 UTC (permalink / raw)
  To: Trond Myklebust
  Cc: linux-next, linux-kernel, Christoph Hellwig, Al Viro,
	Weston Andros Adamson, Anna Schumaker

Hi Trond,

Today's linux-next merge of the nfs tree got a conflict in:

  fs/nfs/direct.c

between commit:

  c8b8e32d700f ("direct-io: eliminate the offset argument to ->direct_IO")

from Linus' tree and commit:

  ed3743a6d4f3 ("nfs: add debug to directio "good_bytes" counting")

from the nfs tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc fs/nfs/direct.c
index 741a92c470bb,7f03163b5364..000000000000
--- a/fs/nfs/direct.c
+++ b/fs/nfs/direct.c
@@@ -591,8 -596,8 +594,8 @@@ ssize_t nfs_file_direct_read(struct kio
  		goto out_unlock;
  
  	dreq->inode = inode;
- 	dreq->bytes_left = count;
+ 	dreq->bytes_left = dreq->max_count = count;
 -	dreq->io_start = pos;
 +	dreq->io_start = iocb->ki_pos;
  	dreq->ctx = get_nfs_open_context(nfs_file_open_context(iocb->ki_filp));
  	l_ctx = nfs_get_lock_context(dreq->ctx);
  	if (IS_ERR(l_ctx)) {

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: linux-next: manual merge of the nfs tree with Linus' tree
  2016-05-19  0:40 Stephen Rothwell
@ 2016-05-19  1:18 ` Weston Andros Adamson
  0 siblings, 0 replies; 19+ messages in thread
From: Weston Andros Adamson @ 2016-05-19  1:18 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Trond Myklebust, linux-next@vger.kernel.org,
	linux-kernel@vger.kernel.org, hch, Al Viro, Anna Schumaker


> On May 18, 2016, at 8:40 PM, Stephen Rothwell <sfr@canb.auug.org.au> wrote:
> 
> Hi Trond,
> 
> Today's linux-next merge of the nfs tree got a conflict in:
> 
>  fs/nfs/direct.c
> 
> between commit:
> 
>  c8b8e32d700f ("direct-io: eliminate the offset argument to ->direct_IO")
> 
> from Linus' tree and commit:
> 
>  ed3743a6d4f3 ("nfs: add debug to directio "good_bytes" counting")
> 
> from the nfs tree.

The merge of the nfs tree’s commit looks good to me.

-dros

> 
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your tree
> is submitted for merging.  You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any particularly
> complex conflicts.
> 
> -- 
> Cheers,
> Stephen Rothwell
> 
> diff --cc fs/nfs/direct.c
> index 741a92c470bb,7f03163b5364..000000000000
> --- a/fs/nfs/direct.c
> +++ b/fs/nfs/direct.c
> @@@ -591,8 -596,8 +594,8 @@@ ssize_t nfs_file_direct_read(struct kio
>  		goto out_unlock;
> 
>  	dreq->inode = inode;
> - 	dreq->bytes_left = count;
> + 	dreq->bytes_left = dreq->max_count = count;
> -	dreq->io_start = pos;
> +	dreq->io_start = iocb->ki_pos;
>  	dreq->ctx = get_nfs_open_context(nfs_file_open_context(iocb->ki_filp));
>  	l_ctx = nfs_get_lock_context(dreq->ctx);
>  	if (IS_ERR(l_ctx)) {
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* linux-next: manual merge of the nfs tree with Linus' tree
@ 2017-05-03  0:07 Stephen Rothwell
  0 siblings, 0 replies; 19+ messages in thread
From: Stephen Rothwell @ 2017-05-03  0:07 UTC (permalink / raw)
  To: Trond Myklebust
  Cc: Linux-Next Mailing List, Linux Kernel Mailing List,
	Hans-Christian Noren Egtvedt, Håvard Skinnemoen,
	Nicolas Ferre, Christoph Hellwig

Hi Trond,

Today's linux-next merge of the nfs tree got a conflict in:

  Documentation/admin-guide/kernel-parameters.txt

between commit:

  c0c74acbb60b ("docs: remove all references to AVR32 architecture")

from Linus' tree and commit:

  6d22323b2e9f ("nfs: remove the objlayout driver")

from the nfs tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc Documentation/admin-guide/kernel-parameters.txt
index 8d676d2a48ac,17156d66b124..000000000000
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@@ -2419,13 -2419,7 +2419,7 @@@
  			and gids from such clients.  This is intended to ease
  			migration from NFSv2/v3.
  
- 	objlayoutdriver.osd_login_prog=
- 			[NFS] [OBJLAYOUT] sets the pathname to the program which
- 			is used to automatically discover and login into new
- 			osd-targets. Please see:
- 			Documentation/filesystems/pnfs.txt for more explanations
- 
 -	nmi_debug=	[KNL,AVR32,SH] Specify one or more actions to take
 +	nmi_debug=	[KNL,SH] Specify one or more actions to take
  			when a NMI is triggered.
  			Format: [state][,regs][,debounce][,die]
  

^ permalink raw reply	[flat|nested] 19+ messages in thread

* linux-next: manual merge of the nfs tree with Linus' tree
@ 2020-12-15  0:24 Stephen Rothwell
  2020-12-15  0:30 ` Trond Myklebust
  0 siblings, 1 reply; 19+ messages in thread
From: Stephen Rothwell @ 2020-12-15  0:24 UTC (permalink / raw)
  To: Trond Myklebust
  Cc: Anna Schumaker, Linux Kernel Mailing List,
	Linux Next Mailing List, Trond Myklebust

[-- Attachment #1: Type: text/plain, Size: 1868 bytes --]

Hi all,

Today's linux-next merge of the nfs tree got a conflict in:

  fs/nfs/nfs4proc.c

between commit:

  21e31401fc45 ("NFS: Disable READ_PLUS by default")

from Linus' tree and commit:

  5c3485bb12c9 ("NFSv4.2/pnfs: Don't use READ_PLUS with pNFS yet")

from the nfs tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc fs/nfs/nfs4proc.c
index e89468678ae1,61a07dcb963d..000000000000
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@@ -5309,18 -5319,18 +5319,18 @@@ static int nfs4_read_done(struct rpc_ta
  				    nfs4_read_done_cb(task, hdr);
  }
  
 -#ifdef CONFIG_NFS_V4_2
 +#if defined CONFIG_NFS_V4_2 && defined CONFIG_NFS_V4_2_READ_PLUS
- static void nfs42_read_plus_support(struct nfs_server *server, struct rpc_message *msg)
+ static void nfs42_read_plus_support(struct nfs_pgio_header *hdr,
+ 				    struct rpc_message *msg)
  {
- 	if (server->caps & NFS_CAP_READ_PLUS)
+ 	/* Note: We don't use READ_PLUS with pNFS yet */
+ 	if (nfs_server_capable(hdr->inode, NFS_CAP_READ_PLUS) && !hdr->ds_clp)
  		msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_READ_PLUS];
- 	else
- 		msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_READ];
  }
  #else
- static void nfs42_read_plus_support(struct nfs_server *server, struct rpc_message *msg)
+ static void nfs42_read_plus_support(struct nfs_pgio_header *hdr,
+ 				    struct rpc_message *msg)
  {
- 	msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_READ];
  }
  #endif /* CONFIG_NFS_V4_2 */
  

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: linux-next: manual merge of the nfs tree with Linus' tree
  2020-12-15  0:24 linux-next: manual merge of the nfs tree with Linus' tree Stephen Rothwell
@ 2020-12-15  0:30 ` Trond Myklebust
  0 siblings, 0 replies; 19+ messages in thread
From: Trond Myklebust @ 2020-12-15  0:30 UTC (permalink / raw)
  To: sfr@canb.auug.org.au
  Cc: linux-next@vger.kernel.org, Anna.Schumaker@Netapp.com,
	linux-kernel@vger.kernel.org

On Tue, 2020-12-15 at 11:24 +1100, Stephen Rothwell wrote:
> Hi all,
> 
> Today's linux-next merge of the nfs tree got a conflict in:
> 
>   fs/nfs/nfs4proc.c
> 
> between commit:
> 
>   21e31401fc45 ("NFS: Disable READ_PLUS by default")
> 
> from Linus' tree and commit:
> 
>   5c3485bb12c9 ("NFSv4.2/pnfs: Don't use READ_PLUS with pNFS yet")
> 
> from the nfs tree.
> 
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your
> tree
> is submitted for merging.  You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any
> particularly
> complex conflicts.
> 

Thanks Stephen!

Yes, the fixes for the client side READ_PLUS code ended up being a
little more extensive than hoped for in the last week of the 2.10
cycle, hence the need for a Kconfig option to disable it. Apologies for
the extra work it caused you.

Cheers
  Trond

-- 
Trond Myklebust
Linux NFS client maintainer, Hammerspace
trond.myklebust@hammerspace.com



^ permalink raw reply	[flat|nested] 19+ messages in thread

* linux-next: manual merge of the nfs tree with Linus' tree
@ 2025-12-05  0:19 Stephen Rothwell
  2025-12-05  0:34 ` Trond Myklebust
  2025-12-05  1:08 ` [6.19 PATCH] nfs/localio: fix regression due to out-of-order __put_cred [was: Re: linux-next: manual merge of the nfs tree with Linus' tree] Mike Snitzer
  0 siblings, 2 replies; 19+ messages in thread
From: Stephen Rothwell @ 2025-12-05  0:19 UTC (permalink / raw)
  To: Trond Myklebust
  Cc: Christian Brauner, Linus Torvalds, Linux Kernel Mailing List,
	Linux Next Mailing List, Mike Snitzer, Trond Myklebust

[-- Attachment #1: Type: text/plain, Size: 942 bytes --]

Hi all,

Today's linux-next merge of the nfs tree got a conflict in:

  fs/nfs/localio.c

between commits:

  94afb627dfc2 ("nfs: use credential guards in nfs_local_call_read()")
  bff3c841f7bd ("nfs: use credential guards in nfs_local_call_write()")
  1d18101a644e ("Merge tag 'kernel-6.19-rc1.cred' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs")

from Linus' tree and commit:

  30a4385509b4 ("nfs/localio: fix regression due to out-of-order __put_cred")

from the nfs tree.

I fixed it up (I just dropped the nfs tree commit) and can carry the
fix as necessary. This is now fixed as far as linux-next is concerned,
but any non trivial conflicts should be mentioned to your upstream
maintainer when your tree is submitted for merging.  You may also want
to consider cooperating with the maintainer of the conflicting tree to
minimise any particularly complex conflicts.

-- 
Cheers,
Stephen Rothwell

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: linux-next: manual merge of the nfs tree with Linus' tree
  2025-12-05  0:19 linux-next: manual merge of the nfs tree with Linus' tree Stephen Rothwell
@ 2025-12-05  0:34 ` Trond Myklebust
  2025-12-05  1:11   ` Mike Snitzer
  2025-12-05  1:08 ` [6.19 PATCH] nfs/localio: fix regression due to out-of-order __put_cred [was: Re: linux-next: manual merge of the nfs tree with Linus' tree] Mike Snitzer
  1 sibling, 1 reply; 19+ messages in thread
From: Trond Myklebust @ 2025-12-05  0:34 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Christian Brauner, Linus Torvalds, Linux Kernel Mailing List,
	Linux Next Mailing List, Mike Snitzer

On Fri, 2025-12-05 at 11:19 +1100, Stephen Rothwell wrote:
> Hi all,
> 
> Today's linux-next merge of the nfs tree got a conflict in:
> 
>   fs/nfs/localio.c
> 
> between commits:
> 
>   94afb627dfc2 ("nfs: use credential guards in
> nfs_local_call_read()")
>   bff3c841f7bd ("nfs: use credential guards in
> nfs_local_call_write()")
>   1d18101a644e ("Merge tag 'kernel-6.19-rc1.cred' of
> git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs")
> 
> from Linus' tree and commit:
> 
>   30a4385509b4 ("nfs/localio: fix regression due to out-of-order
> __put_cred")
> 
> from the nfs tree.
> 
> I fixed it up (I just dropped the nfs tree commit) and can carry the
> fix as necessary. This is now fixed as far as linux-next is
> concerned,
> but any non trivial conflicts should be mentioned to your upstream
> maintainer when your tree is submitted for merging.  You may also
> want
> to consider cooperating with the maintainer of the conflicting tree
> to
> minimise any particularly complex conflicts.

I'm worried that resolving this is not going to be trivial...

The nfs tree commit is a fix for a regression that appeared in 6.18,
and the problem with just dropping it in favour of the scoped cred
version in Christian's tree is that that appears to propagate the
regression.

Mike, am I wrong?

-- 
Trond Myklebust
Linux NFS client maintainer, Hammerspace
trondmy@kernel.org, trond.myklebust@hammerspace.com

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [6.19 PATCH] nfs/localio: fix regression due to out-of-order __put_cred [was: Re: linux-next: manual merge of the nfs tree with Linus' tree]
  2025-12-05  0:19 linux-next: manual merge of the nfs tree with Linus' tree Stephen Rothwell
  2025-12-05  0:34 ` Trond Myklebust
@ 2025-12-05  1:08 ` Mike Snitzer
  2025-12-05 10:08   ` Christian Brauner
  2025-12-06  0:01   ` Trond Myklebust
  1 sibling, 2 replies; 19+ messages in thread
From: Mike Snitzer @ 2025-12-05  1:08 UTC (permalink / raw)
  To: Stephen Rothwell, Linus Torvalds, Trond Myklebust
  Cc: Trond Myklebust, Christian Brauner, Linux Kernel Mailing List,
	Linux Next Mailing List, linux-nfs, linux-stable

Hi Stephen,

On Fri, Dec 05, 2025 at 11:19:42AM +1100, Stephen Rothwell wrote:
> Hi all,
> 
> Today's linux-next merge of the nfs tree got a conflict in:
> 
>   fs/nfs/localio.c
> 
> between commits:
> 
>   94afb627dfc2 ("nfs: use credential guards in nfs_local_call_read()")
>   bff3c841f7bd ("nfs: use credential guards in nfs_local_call_write()")
>   1d18101a644e ("Merge tag 'kernel-6.19-rc1.cred' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs")
> 
> from Linus' tree and commit:
> 
>   30a4385509b4 ("nfs/localio: fix regression due to out-of-order __put_cred")
> 
> from the nfs tree.

The NFS tree's commit 30a4385509b4 needed to be rebased (taken care of
below), which complicates the 6.18-stable backport (equivalent of the
nfs tree's commit 30a4385509b4 must be sent to linux-stable@ rather
than it being cherry-picked once the below updated fix applied to
Linus' tree).

> I fixed it up (I just dropped the nfs tree commit) and can carry the
> fix as necessary. This is now fixed as far as linux-next is concerned,
> but any non trivial conflicts should be mentioned to your upstream
> maintainer when your tree is submitted for merging.  You may also want
> to consider cooperating with the maintainer of the conflicting tree to
> minimise any particularly complex conflicts.

Trond and Linus,

Here is the fix for 6.19 rebased ontop of Linus' tree:

From: Mike Snitzer <snitzer@kernel.org>
Date: Wed, 26 Nov 2025 01:01:25 -0500
Subject: [PATCH] nfs/localio: fix regression due to out-of-order __put_cred

Commit f2060bdc21d7 ("nfs/localio: add refcounting for each iocb IO
associated with NFS pgio header") inadvertantly reintroduced the same
potential for __put_cred() triggering BUG_ON(cred == current->cred)
that commit 992203a1fba5 ("nfs/localio: restore creds before releasing
pageio data") fixed.

Fix this by saving and restoring the cred around each {read,write}_iter
call within the respective for loop of nfs_local_call_{read,write}
using scoped_with_creds().

NOTE: this fix started by first reverting the following commits:

 94afb627dfc2 ("nfs: use credential guards in nfs_local_call_read()")
 bff3c841f7bd ("nfs: use credential guards in nfs_local_call_write()")
 1d18101a644e ("Merge tag 'kernel-6.19-rc1.cred' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs")

followed by narrowly fixing the cred lifetime issue by using
scoped_with_creds(). In doing so, this commit's changes appear more
extensive than they really are (as evidenced by comparing to v6.18's
fs/nfs/localio.c).

Reported-by: Zorro Lang <zlang@redhat.com>
Fixes: f2060bdc21d7 ("nfs/localio: add refcounting for each iocb IO associated with NFS pgio header")
Cc: linux-stable@vger.kernel.org # a custom 6.18-stable backport is required
Signed-off-by: Mike Snitzer <snitzer@kernel.org>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>

diff --git a/fs/nfs/localio.c b/fs/nfs/localio.c
index 49ed90c6b9f2..f33bfa7b58e6 100644
--- a/fs/nfs/localio.c
+++ b/fs/nfs/localio.c
@@ -615,8 +615,11 @@ static void nfs_local_read_aio_complete(struct kiocb *kiocb, long ret)
 	nfs_local_pgio_aio_complete(iocb); /* Calls nfs_local_read_aio_complete_work */
 }
 
-static void do_nfs_local_call_read(struct nfs_local_kiocb *iocb, struct file *filp)
+static void nfs_local_call_read(struct work_struct *work)
 {
+	struct nfs_local_kiocb *iocb =
+		container_of(work, struct nfs_local_kiocb, work);
+	struct file *filp = iocb->kiocb.ki_filp;
 	bool force_done = false;
 	ssize_t status;
 	int n_iters;
@@ -633,7 +636,9 @@ static void do_nfs_local_call_read(struct nfs_local_kiocb *iocb, struct file *fi
 		} else
 			iocb->kiocb.ki_flags &= ~IOCB_DIRECT;
 
-		status = filp->f_op->read_iter(&iocb->kiocb, &iocb->iters[i]);
+		scoped_with_creds(filp->f_cred)
+			status = filp->f_op->read_iter(&iocb->kiocb, &iocb->iters[i]);
+
 		if (status != -EIOCBQUEUED) {
 			if (unlikely(status >= 0 && status < iocb->iters[i].count))
 				force_done = true; /* Partial read */
@@ -645,16 +650,6 @@ static void do_nfs_local_call_read(struct nfs_local_kiocb *iocb, struct file *fi
 	}
 }
 
-static void nfs_local_call_read(struct work_struct *work)
-{
-	struct nfs_local_kiocb *iocb =
-		container_of(work, struct nfs_local_kiocb, work);
-	struct file *filp = iocb->kiocb.ki_filp;
-
-	scoped_with_creds(filp->f_cred)
-		do_nfs_local_call_read(iocb, filp);
-}
-
 static int
 nfs_local_do_read(struct nfs_local_kiocb *iocb,
 		  const struct rpc_call_ops *call_ops)
@@ -822,13 +817,18 @@ static void nfs_local_write_aio_complete(struct kiocb *kiocb, long ret)
 	nfs_local_pgio_aio_complete(iocb); /* Calls nfs_local_write_aio_complete_work */
 }
 
-static ssize_t do_nfs_local_call_write(struct nfs_local_kiocb *iocb,
-				       struct file *filp)
+static void nfs_local_call_write(struct work_struct *work)
 {
+	struct nfs_local_kiocb *iocb =
+		container_of(work, struct nfs_local_kiocb, work);
+	struct file *filp = iocb->kiocb.ki_filp;
+	unsigned long old_flags = current->flags;
 	bool force_done = false;
 	ssize_t status;
 	int n_iters;
 
+	current->flags |= PF_LOCAL_THROTTLE | PF_MEMALLOC_NOIO;
+
 	file_start_write(filp);
 	n_iters = atomic_read(&iocb->n_iters);
 	for (int i = 0; i < n_iters ; i++) {
@@ -842,7 +842,9 @@ static ssize_t do_nfs_local_call_write(struct nfs_local_kiocb *iocb,
 		} else
 			iocb->kiocb.ki_flags &= ~IOCB_DIRECT;
 
-		status = filp->f_op->write_iter(&iocb->kiocb, &iocb->iters[i]);
+		scoped_with_creds(filp->f_cred)
+			status = filp->f_op->write_iter(&iocb->kiocb, &iocb->iters[i]);
+
 		if (status != -EIOCBQUEUED) {
 			if (unlikely(status >= 0 && status < iocb->iters[i].count))
 				force_done = true; /* Partial write */
@@ -854,22 +856,6 @@ static ssize_t do_nfs_local_call_write(struct nfs_local_kiocb *iocb,
 	}
 	file_end_write(filp);
 
-	return status;
-}
-
-static void nfs_local_call_write(struct work_struct *work)
-{
-	struct nfs_local_kiocb *iocb =
-		container_of(work, struct nfs_local_kiocb, work);
-	struct file *filp = iocb->kiocb.ki_filp;
-	unsigned long old_flags = current->flags;
-	ssize_t status;
-
-	current->flags |= PF_LOCAL_THROTTLE | PF_MEMALLOC_NOIO;
-
-	scoped_with_creds(filp->f_cred)
-		status = do_nfs_local_call_write(iocb, filp);
-
 	current->flags = old_flags;
 }
 

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: linux-next: manual merge of the nfs tree with Linus' tree
  2025-12-05  0:34 ` Trond Myklebust
@ 2025-12-05  1:11   ` Mike Snitzer
  0 siblings, 0 replies; 19+ messages in thread
From: Mike Snitzer @ 2025-12-05  1:11 UTC (permalink / raw)
  To: Trond Myklebust
  Cc: Stephen Rothwell, Christian Brauner, Linus Torvalds,
	Linux Kernel Mailing List, Linux Next Mailing List

On Thu, Dec 04, 2025 at 07:34:30PM -0500, Trond Myklebust wrote:
> On Fri, 2025-12-05 at 11:19 +1100, Stephen Rothwell wrote:
> > Hi all,
> > 
> > Today's linux-next merge of the nfs tree got a conflict in:
> > 
> >   fs/nfs/localio.c
> > 
> > between commits:
> > 
> >   94afb627dfc2 ("nfs: use credential guards in
> > nfs_local_call_read()")
> >   bff3c841f7bd ("nfs: use credential guards in
> > nfs_local_call_write()")
> >   1d18101a644e ("Merge tag 'kernel-6.19-rc1.cred' of
> > git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs")
> > 
> > from Linus' tree and commit:
> > 
> >   30a4385509b4 ("nfs/localio: fix regression due to out-of-order
> > __put_cred")
> > 
> > from the nfs tree.
> > 
> > I fixed it up (I just dropped the nfs tree commit) and can carry the
> > fix as necessary. This is now fixed as far as linux-next is
> > concerned,
> > but any non trivial conflicts should be mentioned to your upstream
> > maintainer when your tree is submitted for merging.  You may also
> > want
> > to consider cooperating with the maintainer of the conflicting tree
> > to
> > minimise any particularly complex conflicts.
> 
> I'm worried that resolving this is not going to be trivial...
> 
> The nfs tree commit is a fix for a regression that appeared in 6.18,
> and the problem with just dropping it in favour of the scoped cred
> version in Christian's tree is that that appears to propagate the
> regression.
> 
> Mike, am I wrong?

You're correct. But I just sent how I think we need to handle this.

Thanks,
Mike

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [6.19 PATCH] nfs/localio: fix regression due to out-of-order __put_cred [was: Re: linux-next: manual merge of the nfs tree with Linus' tree]
  2025-12-05  1:08 ` [6.19 PATCH] nfs/localio: fix regression due to out-of-order __put_cred [was: Re: linux-next: manual merge of the nfs tree with Linus' tree] Mike Snitzer
@ 2025-12-05 10:08   ` Christian Brauner
  2025-12-06  0:01   ` Trond Myklebust
  1 sibling, 0 replies; 19+ messages in thread
From: Christian Brauner @ 2025-12-05 10:08 UTC (permalink / raw)
  To: Mike Snitzer
  Cc: Stephen Rothwell, Linus Torvalds, Trond Myklebust,
	Trond Myklebust, Linux Kernel Mailing List,
	Linux Next Mailing List, linux-nfs, linux-stable

On Thu, Dec 04, 2025 at 08:08:22PM -0500, Mike Snitzer wrote:
> Hi Stephen,
> 
> On Fri, Dec 05, 2025 at 11:19:42AM +1100, Stephen Rothwell wrote:
> > Hi all,
> > 
> > Today's linux-next merge of the nfs tree got a conflict in:
> > 
> >   fs/nfs/localio.c
> > 
> > between commits:
> > 
> >   94afb627dfc2 ("nfs: use credential guards in nfs_local_call_read()")
> >   bff3c841f7bd ("nfs: use credential guards in nfs_local_call_write()")
> >   1d18101a644e ("Merge tag 'kernel-6.19-rc1.cred' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs")
> > 
> > from Linus' tree and commit:
> > 
> >   30a4385509b4 ("nfs/localio: fix regression due to out-of-order __put_cred")
> > 
> > from the nfs tree.
> 
> The NFS tree's commit 30a4385509b4 needed to be rebased (taken care of
> below), which complicates the 6.18-stable backport (equivalent of the
> nfs tree's commit 30a4385509b4 must be sent to linux-stable@ rather
> than it being cherry-picked once the below updated fix applied to
> Linus' tree).
> 
> > I fixed it up (I just dropped the nfs tree commit) and can carry the
> > fix as necessary. This is now fixed as far as linux-next is concerned,
> > but any non trivial conflicts should be mentioned to your upstream
> > maintainer when your tree is submitted for merging.  You may also want
> > to consider cooperating with the maintainer of the conflicting tree to
> > minimise any particularly complex conflicts.
> 
> Trond and Linus,
> 
> Here is the fix for 6.19 rebased ontop of Linus' tree:
> 
> From: Mike Snitzer <snitzer@kernel.org>
> Date: Wed, 26 Nov 2025 01:01:25 -0500
> Subject: [PATCH] nfs/localio: fix regression due to out-of-order __put_cred
> 
> Commit f2060bdc21d7 ("nfs/localio: add refcounting for each iocb IO

Ah, ok. So it reintroduced a bug. Thanks for the explanation and the
fix. I was worried we created that bug.

Reviewed-by: Christian Brauner <brauner@kernel.org>

> associated with NFS pgio header") inadvertantly reintroduced the same
> potential for __put_cred() triggering BUG_ON(cred == current->cred)
> that commit 992203a1fba5 ("nfs/localio: restore creds before releasing
> pageio data") fixed.
> 
> Fix this by saving and restoring the cred around each {read,write}_iter
> call within the respective for loop of nfs_local_call_{read,write}
> using scoped_with_creds().
> 
> NOTE: this fix started by first reverting the following commits:
> 
>  94afb627dfc2 ("nfs: use credential guards in nfs_local_call_read()")
>  bff3c841f7bd ("nfs: use credential guards in nfs_local_call_write()")
>  1d18101a644e ("Merge tag 'kernel-6.19-rc1.cred' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs")
> 
> followed by narrowly fixing the cred lifetime issue by using
> scoped_with_creds(). In doing so, this commit's changes appear more
> extensive than they really are (as evidenced by comparing to v6.18's
> fs/nfs/localio.c).
> 
> Reported-by: Zorro Lang <zlang@redhat.com>
> Fixes: f2060bdc21d7 ("nfs/localio: add refcounting for each iocb IO associated with NFS pgio header")
> Cc: linux-stable@vger.kernel.org # a custom 6.18-stable backport is required
> Signed-off-by: Mike Snitzer <snitzer@kernel.org>
> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
> 
> diff --git a/fs/nfs/localio.c b/fs/nfs/localio.c
> index 49ed90c6b9f2..f33bfa7b58e6 100644
> --- a/fs/nfs/localio.c
> +++ b/fs/nfs/localio.c
> @@ -615,8 +615,11 @@ static void nfs_local_read_aio_complete(struct kiocb *kiocb, long ret)
>  	nfs_local_pgio_aio_complete(iocb); /* Calls nfs_local_read_aio_complete_work */
>  }
>  
> -static void do_nfs_local_call_read(struct nfs_local_kiocb *iocb, struct file *filp)
> +static void nfs_local_call_read(struct work_struct *work)
>  {
> +	struct nfs_local_kiocb *iocb =
> +		container_of(work, struct nfs_local_kiocb, work);
> +	struct file *filp = iocb->kiocb.ki_filp;
>  	bool force_done = false;
>  	ssize_t status;
>  	int n_iters;
> @@ -633,7 +636,9 @@ static void do_nfs_local_call_read(struct nfs_local_kiocb *iocb, struct file *fi
>  		} else
>  			iocb->kiocb.ki_flags &= ~IOCB_DIRECT;
>  
> -		status = filp->f_op->read_iter(&iocb->kiocb, &iocb->iters[i]);
> +		scoped_with_creds(filp->f_cred)
> +			status = filp->f_op->read_iter(&iocb->kiocb, &iocb->iters[i]);
> +
>  		if (status != -EIOCBQUEUED) {
>  			if (unlikely(status >= 0 && status < iocb->iters[i].count))
>  				force_done = true; /* Partial read */
> @@ -645,16 +650,6 @@ static void do_nfs_local_call_read(struct nfs_local_kiocb *iocb, struct file *fi
>  	}
>  }
>  
> -static void nfs_local_call_read(struct work_struct *work)
> -{
> -	struct nfs_local_kiocb *iocb =
> -		container_of(work, struct nfs_local_kiocb, work);
> -	struct file *filp = iocb->kiocb.ki_filp;
> -
> -	scoped_with_creds(filp->f_cred)
> -		do_nfs_local_call_read(iocb, filp);
> -}
> -
>  static int
>  nfs_local_do_read(struct nfs_local_kiocb *iocb,
>  		  const struct rpc_call_ops *call_ops)
> @@ -822,13 +817,18 @@ static void nfs_local_write_aio_complete(struct kiocb *kiocb, long ret)
>  	nfs_local_pgio_aio_complete(iocb); /* Calls nfs_local_write_aio_complete_work */
>  }
>  
> -static ssize_t do_nfs_local_call_write(struct nfs_local_kiocb *iocb,
> -				       struct file *filp)
> +static void nfs_local_call_write(struct work_struct *work)
>  {
> +	struct nfs_local_kiocb *iocb =
> +		container_of(work, struct nfs_local_kiocb, work);
> +	struct file *filp = iocb->kiocb.ki_filp;
> +	unsigned long old_flags = current->flags;
>  	bool force_done = false;
>  	ssize_t status;
>  	int n_iters;
>  
> +	current->flags |= PF_LOCAL_THROTTLE | PF_MEMALLOC_NOIO;
> +
>  	file_start_write(filp);
>  	n_iters = atomic_read(&iocb->n_iters);
>  	for (int i = 0; i < n_iters ; i++) {
> @@ -842,7 +842,9 @@ static ssize_t do_nfs_local_call_write(struct nfs_local_kiocb *iocb,
>  		} else
>  			iocb->kiocb.ki_flags &= ~IOCB_DIRECT;
>  
> -		status = filp->f_op->write_iter(&iocb->kiocb, &iocb->iters[i]);
> +		scoped_with_creds(filp->f_cred)
> +			status = filp->f_op->write_iter(&iocb->kiocb, &iocb->iters[i]);
> +
>  		if (status != -EIOCBQUEUED) {
>  			if (unlikely(status >= 0 && status < iocb->iters[i].count))
>  				force_done = true; /* Partial write */
> @@ -854,22 +856,6 @@ static ssize_t do_nfs_local_call_write(struct nfs_local_kiocb *iocb,
>  	}
>  	file_end_write(filp);
>  
> -	return status;
> -}
> -
> -static void nfs_local_call_write(struct work_struct *work)
> -{
> -	struct nfs_local_kiocb *iocb =
> -		container_of(work, struct nfs_local_kiocb, work);
> -	struct file *filp = iocb->kiocb.ki_filp;
> -	unsigned long old_flags = current->flags;
> -	ssize_t status;
> -
> -	current->flags |= PF_LOCAL_THROTTLE | PF_MEMALLOC_NOIO;
> -
> -	scoped_with_creds(filp->f_cred)
> -		status = do_nfs_local_call_write(iocb, filp);
> -
>  	current->flags = old_flags;
>  }
>  

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [6.19 PATCH] nfs/localio: fix regression due to out-of-order __put_cred [was: Re: linux-next: manual merge of the nfs tree with Linus' tree]
  2025-12-05  1:08 ` [6.19 PATCH] nfs/localio: fix regression due to out-of-order __put_cred [was: Re: linux-next: manual merge of the nfs tree with Linus' tree] Mike Snitzer
  2025-12-05 10:08   ` Christian Brauner
@ 2025-12-06  0:01   ` Trond Myklebust
  2025-12-06  0:32     ` Trond Myklebust
  2025-12-06  0:36     ` Mike Snitzer
  1 sibling, 2 replies; 19+ messages in thread
From: Trond Myklebust @ 2025-12-06  0:01 UTC (permalink / raw)
  To: Mike Snitzer, Stephen Rothwell, Linus Torvalds
  Cc: Christian Brauner, Linux Kernel Mailing List,
	Linux Next Mailing List, linux-nfs, linux-stable

On Thu, 2025-12-04 at 20:08 -0500, Mike Snitzer wrote:
> Hi Stephen,
> 
> On Fri, Dec 05, 2025 at 11:19:42AM +1100, Stephen Rothwell wrote:
> > Hi all,
> > 
> > Today's linux-next merge of the nfs tree got a conflict in:
> > 
> >   fs/nfs/localio.c
> > 
> > between commits:
> > 
> >   94afb627dfc2 ("nfs: use credential guards in
> > nfs_local_call_read()")
> >   bff3c841f7bd ("nfs: use credential guards in
> > nfs_local_call_write()")
> >   1d18101a644e ("Merge tag 'kernel-6.19-rc1.cred' of
> > git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs")
> > 
> > from Linus' tree and commit:
> > 
> >   30a4385509b4 ("nfs/localio: fix regression due to out-of-order
> > __put_cred")
> > 
> > from the nfs tree.
> 
> The NFS tree's commit 30a4385509b4 needed to be rebased (taken care
> of
> below), which complicates the 6.18-stable backport (equivalent of the
> nfs tree's commit 30a4385509b4 must be sent to linux-stable@ rather
> than it being cherry-picked once the below updated fix applied to
> Linus' tree).
> 
> > I fixed it up (I just dropped the nfs tree commit) and can carry
> > the
> > fix as necessary. This is now fixed as far as linux-next is
> > concerned,
> > but any non trivial conflicts should be mentioned to your upstream
> > maintainer when your tree is submitted for merging.  You may also
> > want
> > to consider cooperating with the maintainer of the conflicting tree
> > to
> > minimise any particularly complex conflicts.
> 
> Trond and Linus,
> 
> Here is the fix for 6.19 rebased ontop of Linus' tree:
> 
> From: Mike Snitzer <snitzer@kernel.org>
> Date: Wed, 26 Nov 2025 01:01:25 -0500
> Subject: [PATCH] nfs/localio: fix regression due to out-of-order
> __put_cred
> 
> Commit f2060bdc21d7 ("nfs/localio: add refcounting for each iocb IO
> associated with NFS pgio header") inadvertantly reintroduced the same
> potential for __put_cred() triggering BUG_ON(cred == current->cred)
> that commit 992203a1fba5 ("nfs/localio: restore creds before
> releasing
> pageio data") fixed.
> 
> Fix this by saving and restoring the cred around each
> {read,write}_iter
> call within the respective for loop of nfs_local_call_{read,write}
> using scoped_with_creds().
> 
> NOTE: this fix started by first reverting the following commits:
> 
>  94afb627dfc2 ("nfs: use credential guards in nfs_local_call_read()")
>  bff3c841f7bd ("nfs: use credential guards in
> nfs_local_call_write()")
>  1d18101a644e ("Merge tag 'kernel-6.19-rc1.cred' of
> git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs")
> 
> followed by narrowly fixing the cred lifetime issue by using
> scoped_with_creds(). In doing so, this commit's changes appear more
> extensive than they really are (as evidenced by comparing to v6.18's
> fs/nfs/localio.c).
> 
> Reported-by: Zorro Lang <zlang@redhat.com>
> Fixes: f2060bdc21d7 ("nfs/localio: add refcounting for each iocb IO
> associated with NFS pgio header")
> Cc: linux-stable@vger.kernel.org # a custom 6.18-stable backport is
> required
> Signed-off-by: Mike Snitzer <snitzer@kernel.org>
> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
> 
> diff --git a/fs/nfs/localio.c b/fs/nfs/localio.c
> index 49ed90c6b9f2..f33bfa7b58e6 100644
> --- a/fs/nfs/localio.c
> +++ b/fs/nfs/localio.c
> @@ -615,8 +615,11 @@ static void nfs_local_read_aio_complete(struct
> kiocb *kiocb, long ret)
>  	nfs_local_pgio_aio_complete(iocb); /* Calls
> nfs_local_read_aio_complete_work */
>  }
>  
> -static void do_nfs_local_call_read(struct nfs_local_kiocb *iocb,
> struct file *filp)
> +static void nfs_local_call_read(struct work_struct *work)
>  {
> +	struct nfs_local_kiocb *iocb =
> +		container_of(work, struct nfs_local_kiocb, work);
> +	struct file *filp = iocb->kiocb.ki_filp;
>  	bool force_done = false;
>  	ssize_t status;
>  	int n_iters;
> @@ -633,7 +636,9 @@ static void do_nfs_local_call_read(struct
> nfs_local_kiocb *iocb, struct file *fi
>  		} else
>  			iocb->kiocb.ki_flags &= ~IOCB_DIRECT;
>  
> -		status = filp->f_op->read_iter(&iocb->kiocb, &iocb-
> >iters[i]);
> +		scoped_with_creds(filp->f_cred)
> +			status = filp->f_op->read_iter(&iocb->kiocb,
> &iocb->iters[i]);
> +
>  		if (status != -EIOCBQUEUED) {
>  			if (unlikely(status >= 0 && status < iocb-
> >iters[i].count))
>  				force_done = true; /* Partial read
> */
> @@ -645,16 +650,6 @@ static void do_nfs_local_call_read(struct
> nfs_local_kiocb *iocb, struct file *fi
>  	}
>  }
>  
> -static void nfs_local_call_read(struct work_struct *work)
> -{
> -	struct nfs_local_kiocb *iocb =
> -		container_of(work, struct nfs_local_kiocb, work);
> -	struct file *filp = iocb->kiocb.ki_filp;
> -
> -	scoped_with_creds(filp->f_cred)
> -		do_nfs_local_call_read(iocb, filp);
> -}
> -
>  static int
>  nfs_local_do_read(struct nfs_local_kiocb *iocb,
>  		  const struct rpc_call_ops *call_ops)
> @@ -822,13 +817,18 @@ static void nfs_local_write_aio_complete(struct
> kiocb *kiocb, long ret)
>  	nfs_local_pgio_aio_complete(iocb); /* Calls
> nfs_local_write_aio_complete_work */
>  }
>  
> -static ssize_t do_nfs_local_call_write(struct nfs_local_kiocb *iocb,
> -				       struct file *filp)
> +static void nfs_local_call_write(struct work_struct *work)
>  {
> +	struct nfs_local_kiocb *iocb =
> +		container_of(work, struct nfs_local_kiocb, work);
> +	struct file *filp = iocb->kiocb.ki_filp;
> +	unsigned long old_flags = current->flags;
>  	bool force_done = false;
>  	ssize_t status;
>  	int n_iters;
>  
> +	current->flags |= PF_LOCAL_THROTTLE | PF_MEMALLOC_NOIO;
> +
>  	file_start_write(filp);
>  	n_iters = atomic_read(&iocb->n_iters);
>  	for (int i = 0; i < n_iters ; i++) {
> @@ -842,7 +842,9 @@ static ssize_t do_nfs_local_call_write(struct
> nfs_local_kiocb *iocb,
>  		} else
>  			iocb->kiocb.ki_flags &= ~IOCB_DIRECT;
>  
> -		status = filp->f_op->write_iter(&iocb->kiocb, &iocb-
> >iters[i]);
> +		scoped_with_creds(filp->f_cred)
> +			status = filp->f_op->write_iter(&iocb-
> >kiocb, &iocb->iters[i]);
> +
>  		if (status != -EIOCBQUEUED) {
>  			if (unlikely(status >= 0 && status < iocb-
> >iters[i].count))
>  				force_done = true; /* Partial write
> */
> @@ -854,22 +856,6 @@ static ssize_t do_nfs_local_call_write(struct
> nfs_local_kiocb *iocb,
>  	}
>  	file_end_write(filp);
>  
> -	return status;
> -}
> -
> -static void nfs_local_call_write(struct work_struct *work)
> -{
> -	struct nfs_local_kiocb *iocb =
> -		container_of(work, struct nfs_local_kiocb, work);
> -	struct file *filp = iocb->kiocb.ki_filp;
> -	unsigned long old_flags = current->flags;
> -	ssize_t status;
> -
> -	current->flags |= PF_LOCAL_THROTTLE | PF_MEMALLOC_NOIO;
> -
> -	scoped_with_creds(filp->f_cred)
> -		status = do_nfs_local_call_write(iocb, filp);
> -
>  	current->flags = old_flags;
>  }
>  

OK, so what is the easiest way to merge this?

Should I just remove the "old" patch from my tree, and submit that
patch directly to stable@vger.kernel.org as a fix for 6.18? That would
allow Christian to pick up this (after perhaps removing the stable and
Fixes tags above), and submit it as part of his merge, thus fixing the
6.19 kernel.

Thoughts? Preferences?

-- 
Trond Myklebust
Linux NFS client maintainer, Hammerspace
trondmy@kernel.org, trond.myklebust@hammerspace.com

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [6.19 PATCH] nfs/localio: fix regression due to out-of-order __put_cred [was: Re: linux-next: manual merge of the nfs tree with Linus' tree]
  2025-12-06  0:01   ` Trond Myklebust
@ 2025-12-06  0:32     ` Trond Myklebust
  2025-12-06  0:36     ` Mike Snitzer
  1 sibling, 0 replies; 19+ messages in thread
From: Trond Myklebust @ 2025-12-06  0:32 UTC (permalink / raw)
  To: Mike Snitzer, Stephen Rothwell, Linus Torvalds
  Cc: Christian Brauner, Linux Kernel Mailing List,
	Linux Next Mailing List, linux-nfs, linux-stable

On Fri, 2025-12-05 at 19:01 -0500, Trond Myklebust wrote:
> On Thu, 2025-12-04 at 20:08 -0500, Mike Snitzer wrote:
> > Hi Stephen,
> > 
> > On Fri, Dec 05, 2025 at 11:19:42AM +1100, Stephen Rothwell wrote:
> > > Hi all,
> > > 
> > > Today's linux-next merge of the nfs tree got a conflict in:
> > > 
> > >   fs/nfs/localio.c
> > > 
> > > between commits:
> > > 
> > >   94afb627dfc2 ("nfs: use credential guards in
> > > nfs_local_call_read()")
> > >   bff3c841f7bd ("nfs: use credential guards in
> > > nfs_local_call_write()")
> > >   1d18101a644e ("Merge tag 'kernel-6.19-rc1.cred' of
> > > git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs")
> > > 
> > > from Linus' tree and commit:
> > > 
> > >   30a4385509b4 ("nfs/localio: fix regression due to out-of-order
> > > __put_cred")
> > > 
> > > from the nfs tree.
> > 
> > The NFS tree's commit 30a4385509b4 needed to be rebased (taken care
> > of
> > below), which complicates the 6.18-stable backport (equivalent of
> > the
> > nfs tree's commit 30a4385509b4 must be sent to linux-stable@ rather
> > than it being cherry-picked once the below updated fix applied to
> > Linus' tree).
> > 
> > > I fixed it up (I just dropped the nfs tree commit) and can carry
> > > the
> > > fix as necessary. This is now fixed as far as linux-next is
> > > concerned,
> > > but any non trivial conflicts should be mentioned to your
> > > upstream
> > > maintainer when your tree is submitted for merging.  You may also
> > > want
> > > to consider cooperating with the maintainer of the conflicting
> > > tree
> > > to
> > > minimise any particularly complex conflicts.
> > 
> > Trond and Linus,
> > 
> > Here is the fix for 6.19 rebased ontop of Linus' tree:
> > 
> > From: Mike Snitzer <snitzer@kernel.org>
> > Date: Wed, 26 Nov 2025 01:01:25 -0500
> > Subject: [PATCH] nfs/localio: fix regression due to out-of-order
> > __put_cred
> > 
> > Commit f2060bdc21d7 ("nfs/localio: add refcounting for each iocb IO
> > associated with NFS pgio header") inadvertantly reintroduced the
> > same
> > potential for __put_cred() triggering BUG_ON(cred == current->cred)
> > that commit 992203a1fba5 ("nfs/localio: restore creds before
> > releasing
> > pageio data") fixed.
> > 
> > Fix this by saving and restoring the cred around each
> > {read,write}_iter
> > call within the respective for loop of nfs_local_call_{read,write}
> > using scoped_with_creds().
> > 
> > NOTE: this fix started by first reverting the following commits:
> > 
> >  94afb627dfc2 ("nfs: use credential guards in
> > nfs_local_call_read()")
> >  bff3c841f7bd ("nfs: use credential guards in
> > nfs_local_call_write()")
> >  1d18101a644e ("Merge tag 'kernel-6.19-rc1.cred' of
> > git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs")
> > 
> > followed by narrowly fixing the cred lifetime issue by using
> > scoped_with_creds(). In doing so, this commit's changes appear more
> > extensive than they really are (as evidenced by comparing to
> > v6.18's
> > fs/nfs/localio.c).
> > 
> > Reported-by: Zorro Lang <zlang@redhat.com>
> > Fixes: f2060bdc21d7 ("nfs/localio: add refcounting for each iocb IO
> > associated with NFS pgio header")
> > Cc: linux-stable@vger.kernel.org # a custom 6.18-stable backport is
> > required
> > Signed-off-by: Mike Snitzer <snitzer@kernel.org>
> > Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
> > 
> > diff --git a/fs/nfs/localio.c b/fs/nfs/localio.c
> > index 49ed90c6b9f2..f33bfa7b58e6 100644
> > --- a/fs/nfs/localio.c
> > +++ b/fs/nfs/localio.c
> > @@ -615,8 +615,11 @@ static void nfs_local_read_aio_complete(struct
> > kiocb *kiocb, long ret)
> >  	nfs_local_pgio_aio_complete(iocb); /* Calls
> > nfs_local_read_aio_complete_work */
> >  }
> >  
> > -static void do_nfs_local_call_read(struct nfs_local_kiocb *iocb,
> > struct file *filp)
> > +static void nfs_local_call_read(struct work_struct *work)
> >  {
> > +	struct nfs_local_kiocb *iocb =
> > +		container_of(work, struct nfs_local_kiocb, work);
> > +	struct file *filp = iocb->kiocb.ki_filp;
> >  	bool force_done = false;
> >  	ssize_t status;
> >  	int n_iters;
> > @@ -633,7 +636,9 @@ static void do_nfs_local_call_read(struct
> > nfs_local_kiocb *iocb, struct file *fi
> >  		} else
> >  			iocb->kiocb.ki_flags &= ~IOCB_DIRECT;
> >  
> > -		status = filp->f_op->read_iter(&iocb->kiocb,
> > &iocb-
> > > iters[i]);
> > +		scoped_with_creds(filp->f_cred)
> > +			status = filp->f_op->read_iter(&iocb-
> > >kiocb,
> > &iocb->iters[i]);
> > +
> >  		if (status != -EIOCBQUEUED) {
> >  			if (unlikely(status >= 0 && status < iocb-
> > > iters[i].count))
> >  				force_done = true; /* Partial read
> > */
> > @@ -645,16 +650,6 @@ static void do_nfs_local_call_read(struct
> > nfs_local_kiocb *iocb, struct file *fi
> >  	}
> >  }
> >  
> > -static void nfs_local_call_read(struct work_struct *work)
> > -{
> > -	struct nfs_local_kiocb *iocb =
> > -		container_of(work, struct nfs_local_kiocb, work);
> > -	struct file *filp = iocb->kiocb.ki_filp;
> > -
> > -	scoped_with_creds(filp->f_cred)
> > -		do_nfs_local_call_read(iocb, filp);
> > -}
> > -
> >  static int
> >  nfs_local_do_read(struct nfs_local_kiocb *iocb,
> >  		  const struct rpc_call_ops *call_ops)
> > @@ -822,13 +817,18 @@ static void
> > nfs_local_write_aio_complete(struct
> > kiocb *kiocb, long ret)
> >  	nfs_local_pgio_aio_complete(iocb); /* Calls
> > nfs_local_write_aio_complete_work */
> >  }
> >  
> > -static ssize_t do_nfs_local_call_write(struct nfs_local_kiocb
> > *iocb,
> > -				       struct file *filp)
> > +static void nfs_local_call_write(struct work_struct *work)
> >  {
> > +	struct nfs_local_kiocb *iocb =
> > +		container_of(work, struct nfs_local_kiocb, work);
> > +	struct file *filp = iocb->kiocb.ki_filp;
> > +	unsigned long old_flags = current->flags;
> >  	bool force_done = false;
> >  	ssize_t status;
> >  	int n_iters;
> >  
> > +	current->flags |= PF_LOCAL_THROTTLE | PF_MEMALLOC_NOIO;
> > +
> >  	file_start_write(filp);
> >  	n_iters = atomic_read(&iocb->n_iters);
> >  	for (int i = 0; i < n_iters ; i++) {
> > @@ -842,7 +842,9 @@ static ssize_t do_nfs_local_call_write(struct
> > nfs_local_kiocb *iocb,
> >  		} else
> >  			iocb->kiocb.ki_flags &= ~IOCB_DIRECT;
> >  
> > -		status = filp->f_op->write_iter(&iocb->kiocb,
> > &iocb-
> > > iters[i]);
> > +		scoped_with_creds(filp->f_cred)
> > +			status = filp->f_op->write_iter(&iocb-
> > > kiocb, &iocb->iters[i]);
> > +
> >  		if (status != -EIOCBQUEUED) {
> >  			if (unlikely(status >= 0 && status < iocb-
> > > iters[i].count))
> >  				force_done = true; /* Partial
> > write
> > */
> > @@ -854,22 +856,6 @@ static ssize_t do_nfs_local_call_write(struct
> > nfs_local_kiocb *iocb,
> >  	}
> >  	file_end_write(filp);
> >  
> > -	return status;
> > -}
> > -
> > -static void nfs_local_call_write(struct work_struct *work)
> > -{
> > -	struct nfs_local_kiocb *iocb =
> > -		container_of(work, struct nfs_local_kiocb, work);
> > -	struct file *filp = iocb->kiocb.ki_filp;
> > -	unsigned long old_flags = current->flags;
> > -	ssize_t status;
> > -
> > -	current->flags |= PF_LOCAL_THROTTLE | PF_MEMALLOC_NOIO;
> > -
> > -	scoped_with_creds(filp->f_cred)
> > -		status = do_nfs_local_call_write(iocb, filp);
> > -
> >  	current->flags = old_flags;
> >  }
> >  
> 
> OK, so what is the easiest way to merge this?
> 
> Should I just remove the "old" patch from my tree, and submit that
> patch directly to stable@vger.kernel.org as a fix for 6.18? That
> would
> allow Christian to pick up this (after perhaps removing the stable
> and
> Fixes tags above), and submit it as part of his merge, thus fixing
> the
> 6.19 kernel.
> 
> Thoughts? Preferences?

Never mind... I see Christian's branch has already been merged (Sorry,
I was busy this week).
I'll do as I suggested above, to remove the existing patch and submit
the 6.18 stable fix separately, then we can push Mike's 6.19-specific
fix into Linus' tree after the merge of the main NFS client branch.
-- 
Trond Myklebust
Linux NFS client maintainer, Hammerspace
trondmy@kernel.org, trond.myklebust@hammerspace.com

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [6.19 PATCH] nfs/localio: fix regression due to out-of-order __put_cred [was: Re: linux-next: manual merge of the nfs tree with Linus' tree]
  2025-12-06  0:01   ` Trond Myklebust
  2025-12-06  0:32     ` Trond Myklebust
@ 2025-12-06  0:36     ` Mike Snitzer
  2025-12-06  1:32       ` Linus Torvalds
  1 sibling, 1 reply; 19+ messages in thread
From: Mike Snitzer @ 2025-12-06  0:36 UTC (permalink / raw)
  To: Trond Myklebust
  Cc: Stephen Rothwell, Linus Torvalds, Christian Brauner,
	Linux Kernel Mailing List, Linux Next Mailing List, linux-nfs,
	linux-stable

On Fri, Dec 05, 2025 at 07:01:13PM -0500, Trond Myklebust wrote:
> On Thu, 2025-12-04 at 20:08 -0500, Mike Snitzer wrote:
> > Hi Stephen,
> > 
> > On Fri, Dec 05, 2025 at 11:19:42AM +1100, Stephen Rothwell wrote:
> > > Hi all,
> > > 
> > > Today's linux-next merge of the nfs tree got a conflict in:
> > > 
> > >   fs/nfs/localio.c
> > > 
> > > between commits:
> > > 
> > >   94afb627dfc2 ("nfs: use credential guards in
> > > nfs_local_call_read()")
> > >   bff3c841f7bd ("nfs: use credential guards in
> > > nfs_local_call_write()")
> > >   1d18101a644e ("Merge tag 'kernel-6.19-rc1.cred' of
> > > git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs")
> > > 
> > > from Linus' tree and commit:
> > > 
> > >   30a4385509b4 ("nfs/localio: fix regression due to out-of-order
> > > __put_cred")
> > > 
> > > from the nfs tree.
> > 
> > The NFS tree's commit 30a4385509b4 needed to be rebased (taken care
> > of
> > below), which complicates the 6.18-stable backport (equivalent of the
> > nfs tree's commit 30a4385509b4 must be sent to linux-stable@ rather
> > than it being cherry-picked once the below updated fix applied to
> > Linus' tree).
> > 
> > > I fixed it up (I just dropped the nfs tree commit) and can carry
> > > the
> > > fix as necessary. This is now fixed as far as linux-next is
> > > concerned,
> > > but any non trivial conflicts should be mentioned to your upstream
> > > maintainer when your tree is submitted for merging.  You may also
> > > want
> > > to consider cooperating with the maintainer of the conflicting tree
> > > to
> > > minimise any particularly complex conflicts.
> > 
> > Trond and Linus,
> > 
> > Here is the fix for 6.19 rebased ontop of Linus' tree:
> > 
> > From: Mike Snitzer <snitzer@kernel.org>
> > Date: Wed, 26 Nov 2025 01:01:25 -0500
> > Subject: [PATCH] nfs/localio: fix regression due to out-of-order
> > __put_cred
> > 
> > Commit f2060bdc21d7 ("nfs/localio: add refcounting for each iocb IO
> > associated with NFS pgio header") inadvertantly reintroduced the same
> > potential for __put_cred() triggering BUG_ON(cred == current->cred)
> > that commit 992203a1fba5 ("nfs/localio: restore creds before
> > releasing
> > pageio data") fixed.
> > 
> > Fix this by saving and restoring the cred around each
> > {read,write}_iter
> > call within the respective for loop of nfs_local_call_{read,write}
> > using scoped_with_creds().
> > 
> > NOTE: this fix started by first reverting the following commits:
> > 
> >  94afb627dfc2 ("nfs: use credential guards in nfs_local_call_read()")
> >  bff3c841f7bd ("nfs: use credential guards in
> > nfs_local_call_write()")
> >  1d18101a644e ("Merge tag 'kernel-6.19-rc1.cred' of
> > git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs")
> > 
> > followed by narrowly fixing the cred lifetime issue by using
> > scoped_with_creds(). In doing so, this commit's changes appear more
> > extensive than they really are (as evidenced by comparing to v6.18's
> > fs/nfs/localio.c).
> > 
> > Reported-by: Zorro Lang <zlang@redhat.com>
> > Fixes: f2060bdc21d7 ("nfs/localio: add refcounting for each iocb IO
> > associated with NFS pgio header")
> > Cc: linux-stable@vger.kernel.org # a custom 6.18-stable backport is
> > required
> > Signed-off-by: Mike Snitzer <snitzer@kernel.org>
> > Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
> > 
> > diff --git a/fs/nfs/localio.c b/fs/nfs/localio.c
> > index 49ed90c6b9f2..f33bfa7b58e6 100644
> > --- a/fs/nfs/localio.c
> > +++ b/fs/nfs/localio.c
> > @@ -615,8 +615,11 @@ static void nfs_local_read_aio_complete(struct
> > kiocb *kiocb, long ret)
> >  	nfs_local_pgio_aio_complete(iocb); /* Calls
> > nfs_local_read_aio_complete_work */
> >  }
> >  
> > -static void do_nfs_local_call_read(struct nfs_local_kiocb *iocb,
> > struct file *filp)
> > +static void nfs_local_call_read(struct work_struct *work)
> >  {
> > +	struct nfs_local_kiocb *iocb =
> > +		container_of(work, struct nfs_local_kiocb, work);
> > +	struct file *filp = iocb->kiocb.ki_filp;
> >  	bool force_done = false;
> >  	ssize_t status;
> >  	int n_iters;
> > @@ -633,7 +636,9 @@ static void do_nfs_local_call_read(struct
> > nfs_local_kiocb *iocb, struct file *fi
> >  		} else
> >  			iocb->kiocb.ki_flags &= ~IOCB_DIRECT;
> >  
> > -		status = filp->f_op->read_iter(&iocb->kiocb, &iocb-
> > >iters[i]);
> > +		scoped_with_creds(filp->f_cred)
> > +			status = filp->f_op->read_iter(&iocb->kiocb,
> > &iocb->iters[i]);
> > +
> >  		if (status != -EIOCBQUEUED) {
> >  			if (unlikely(status >= 0 && status < iocb-
> > >iters[i].count))
> >  				force_done = true; /* Partial read
> > */
> > @@ -645,16 +650,6 @@ static void do_nfs_local_call_read(struct
> > nfs_local_kiocb *iocb, struct file *fi
> >  	}
> >  }
> >  
> > -static void nfs_local_call_read(struct work_struct *work)
> > -{
> > -	struct nfs_local_kiocb *iocb =
> > -		container_of(work, struct nfs_local_kiocb, work);
> > -	struct file *filp = iocb->kiocb.ki_filp;
> > -
> > -	scoped_with_creds(filp->f_cred)
> > -		do_nfs_local_call_read(iocb, filp);
> > -}
> > -
> >  static int
> >  nfs_local_do_read(struct nfs_local_kiocb *iocb,
> >  		  const struct rpc_call_ops *call_ops)
> > @@ -822,13 +817,18 @@ static void nfs_local_write_aio_complete(struct
> > kiocb *kiocb, long ret)
> >  	nfs_local_pgio_aio_complete(iocb); /* Calls
> > nfs_local_write_aio_complete_work */
> >  }
> >  
> > -static ssize_t do_nfs_local_call_write(struct nfs_local_kiocb *iocb,
> > -				       struct file *filp)
> > +static void nfs_local_call_write(struct work_struct *work)
> >  {
> > +	struct nfs_local_kiocb *iocb =
> > +		container_of(work, struct nfs_local_kiocb, work);
> > +	struct file *filp = iocb->kiocb.ki_filp;
> > +	unsigned long old_flags = current->flags;
> >  	bool force_done = false;
> >  	ssize_t status;
> >  	int n_iters;
> >  
> > +	current->flags |= PF_LOCAL_THROTTLE | PF_MEMALLOC_NOIO;
> > +
> >  	file_start_write(filp);
> >  	n_iters = atomic_read(&iocb->n_iters);
> >  	for (int i = 0; i < n_iters ; i++) {
> > @@ -842,7 +842,9 @@ static ssize_t do_nfs_local_call_write(struct
> > nfs_local_kiocb *iocb,
> >  		} else
> >  			iocb->kiocb.ki_flags &= ~IOCB_DIRECT;
> >  
> > -		status = filp->f_op->write_iter(&iocb->kiocb, &iocb-
> > >iters[i]);
> > +		scoped_with_creds(filp->f_cred)
> > +			status = filp->f_op->write_iter(&iocb-
> > >kiocb, &iocb->iters[i]);
> > +
> >  		if (status != -EIOCBQUEUED) {
> >  			if (unlikely(status >= 0 && status < iocb-
> > >iters[i].count))
> >  				force_done = true; /* Partial write
> > */
> > @@ -854,22 +856,6 @@ static ssize_t do_nfs_local_call_write(struct
> > nfs_local_kiocb *iocb,
> >  	}
> >  	file_end_write(filp);
> >  
> > -	return status;
> > -}
> > -
> > -static void nfs_local_call_write(struct work_struct *work)
> > -{
> > -	struct nfs_local_kiocb *iocb =
> > -		container_of(work, struct nfs_local_kiocb, work);
> > -	struct file *filp = iocb->kiocb.ki_filp;
> > -	unsigned long old_flags = current->flags;
> > -	ssize_t status;
> > -
> > -	current->flags |= PF_LOCAL_THROTTLE | PF_MEMALLOC_NOIO;
> > -
> > -	scoped_with_creds(filp->f_cred)
> > -		status = do_nfs_local_call_write(iocb, filp);
> > -
> >  	current->flags = old_flags;
> >  }
> >  
> 
> OK, so what is the easiest way to merge this?
> 
> Should I just remove the "old" patch from my tree, and submit that
> patch directly to stable@vger.kernel.org as a fix for 6.18?

Yes, that will need to happen no matter what.

> That would allow Christian to pick up this (after perhaps removing the stable and
> Fixes tags above), and submit it as part of his merge, thus fixing the
> 6.19 kernel.
> 
> Thoughts? Preferences?

Christian already sent his merge, at the top you'll see Stephen
referenced commits that are in Linus' tree.  Those are the commits I
referenced in the above updated patch's header as having reverted.

Maybe you prepare a 2nd post-merge NFS client pull that is based on
tip of Linus' tree with only my patch applied? (after adjusting tags
like you suggested).

Or Linus picks up my patch directly but first adjusts its tags?

Christian provided his Reviewed-by earlier today, if Linus were to
pick it up you'd do well to first provide your Reviewed-by: (which
would replace the Signed-off-by I mistakenly left attributed to you in
the updated patch).

However you all decide to skin this cat: sorry for the trouble!

Thanks,
Mike

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [6.19 PATCH] nfs/localio: fix regression due to out-of-order __put_cred [was: Re: linux-next: manual merge of the nfs tree with Linus' tree]
  2025-12-06  0:36     ` Mike Snitzer
@ 2025-12-06  1:32       ` Linus Torvalds
  2025-12-06  1:55         ` Linus Torvalds
  0 siblings, 1 reply; 19+ messages in thread
From: Linus Torvalds @ 2025-12-06  1:32 UTC (permalink / raw)
  To: Mike Snitzer
  Cc: Trond Myklebust, Stephen Rothwell, Christian Brauner,
	Linux Kernel Mailing List, Linux Next Mailing List, linux-nfs,
	linux-stable

On Fri, 5 Dec 2025 at 16:36, Mike Snitzer <snitzer@kernel.org> wrote:
>
> Or Linus picks up my patch directly but first adjusts its tags?

Let me do that once I finish my "merge various architecture updates".
I'm almost done with that side - just one more SoC pull to go, I htink
- and can go back to looking at filesystem changes.

             Linus

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [6.19 PATCH] nfs/localio: fix regression due to out-of-order __put_cred [was: Re: linux-next: manual merge of the nfs tree with Linus' tree]
  2025-12-06  1:32       ` Linus Torvalds
@ 2025-12-06  1:55         ` Linus Torvalds
  2025-12-06  2:23           ` Mike Snitzer
  0 siblings, 1 reply; 19+ messages in thread
From: Linus Torvalds @ 2025-12-06  1:55 UTC (permalink / raw)
  To: Mike Snitzer
  Cc: Trond Myklebust, Stephen Rothwell, Christian Brauner,
	Linux Kernel Mailing List, Linux Next Mailing List, linux-nfs

On Fri, 5 Dec 2025 at 17:32, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> Let me do that once I finish my "merge various architecture updates".
> I'm almost done with that side - just one more SoC pull to go, I think
> - and can go back to looking at filesystem changes.

Ok, done and pushed out. Can you please verify that the current git
tree looks like you expected?

           Linus

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [6.19 PATCH] nfs/localio: fix regression due to out-of-order __put_cred [was: Re: linux-next: manual merge of the nfs tree with Linus' tree]
  2025-12-06  1:55         ` Linus Torvalds
@ 2025-12-06  2:23           ` Mike Snitzer
  0 siblings, 0 replies; 19+ messages in thread
From: Mike Snitzer @ 2025-12-06  2:23 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Trond Myklebust, Stephen Rothwell, Christian Brauner,
	Linux Kernel Mailing List, Linux Next Mailing List, linux-nfs

On Fri, Dec 05, 2025 at 05:55:50PM -0800, Linus Torvalds wrote:
> On Fri, 5 Dec 2025 at 17:32, Linus Torvalds
> <torvalds@linux-foundation.org> wrote:
> >
> > Let me do that once I finish my "merge various architecture updates".
> > I'm almost done with that side - just one more SoC pull to go, I think
> > - and can go back to looking at filesystem changes.
> 
> Ok, done and pushed out. Can you please verify that the current git
> tree looks like you expected?

Looks good.  Thanks

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2025-12-06  2:23 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-05  0:19 linux-next: manual merge of the nfs tree with Linus' tree Stephen Rothwell
2025-12-05  0:34 ` Trond Myklebust
2025-12-05  1:11   ` Mike Snitzer
2025-12-05  1:08 ` [6.19 PATCH] nfs/localio: fix regression due to out-of-order __put_cred [was: Re: linux-next: manual merge of the nfs tree with Linus' tree] Mike Snitzer
2025-12-05 10:08   ` Christian Brauner
2025-12-06  0:01   ` Trond Myklebust
2025-12-06  0:32     ` Trond Myklebust
2025-12-06  0:36     ` Mike Snitzer
2025-12-06  1:32       ` Linus Torvalds
2025-12-06  1:55         ` Linus Torvalds
2025-12-06  2:23           ` Mike Snitzer
  -- strict thread matches above, loose matches on Subject: below --
2020-12-15  0:24 linux-next: manual merge of the nfs tree with Linus' tree Stephen Rothwell
2020-12-15  0:30 ` Trond Myklebust
2017-05-03  0:07 Stephen Rothwell
2016-05-19  0:40 Stephen Rothwell
2016-05-19  1:18 ` Weston Andros Adamson
2012-05-22  2:10 Stephen Rothwell
2009-04-02  0:41 Stephen Rothwell
2009-04-02  8:56 ` David Howells

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).