fs.mount.propagation.fix.v6.2-rc1

-----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQRAhzRXHqcMeLMyaSiRxhvAZXjcogUCY6MOGAAKCRCRxhvAZXjc
 om5xAP9r+48s+tC+5UhPxS6AZxZ/nCaaL/WzzL2JpK16rmgtVwD/VK/xnOOunJn2
 duOFBoBfIC4uLhYYqKsdWhuhldkUvQo=
 =1Zmr
 -----END PGP SIGNATURE-----

Merge tag 'fs.mount.propagation.fix.v6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/idmapping

Pull mount propagation fix from Christian Brauner:
 "The propagate_mnt() function handles mount propagation when creating
  mounts and propagates the source mount tree @source_mnt to all
  applicable nodes of the destination propagation mount tree headed by
  @dest_mnt.

  Unfortunately it contains a bug where it fails to terminate at peers
  of @source_mnt when looking up copies of the source mount that become
  masters for copies of the source mount tree mounted on top of slaves
  in the destination propagation tree causing a NULL dereference.

  This fixes that bug (with a long commit message for a seven character
  fix but hopefully it'll help us fix issues faster in the future rather
  than having to go through the pain of having to relearn everything
  once more)"

* tag 'fs.mount.propagation.fix.v6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/idmapping:
  pnode: terminate at peers of source
This commit is contained in:
Linus Torvalds 2022-12-21 09:54:00 -08:00
commit 04065c1207

View File

@ -244,7 +244,7 @@ static int propagate_one(struct mount *m)
}
do {
struct mount *parent = last_source->mnt_parent;
if (last_source == first_source)
if (peers(last_source, first_source))
break;
done = parent->mnt_master == p;
if (done && peers(n, parent))