Skip to content

Commit 29be910

Browse files
Marc Dionnebrauner
authored andcommitted
afs: Don't cross .backup mountpoint from backup volume
Don't cross a mountpoint that explicitly specifies a backup volume (target is <vol>.backup) when starting from a backup volume. It it not uncommon to mount a volume's backup directly in the volume itself. This can cause tools that are not paying attention to get into a loop mounting the volume onto itself as they attempt to traverse the tree, leading to a variety of problems. This doesn't prevent the general case of loops in a sequence of mountpoints, but addresses a common special case in the same way as other afs clients. Reported-by: Jan Henrik Sylvester <jan.henrik.sylvester@uni-hamburg.de> Link: http://lists.infradead.org/pipermail/linux-afs/2024-May/008454.html Reported-by: Markus Suvanto <markus.suvanto@gmail.com> Link: http://lists.infradead.org/pipermail/linux-afs/2024-February/008074.html Signed-off-by: Marc Dionne <marc.dionne@auristor.com> Signed-off-by: David Howells <dhowells@redhat.com> Link: https://lore.kernel.org/r/768760.1716567475@warthog.procyon.org.uk Reviewed-by: Jeffrey Altman <jaltman@auristor.com> cc: linux-afs@lists.infradead.org Signed-off-by: Christian Brauner <brauner@kernel.org>
1 parent 712182b commit 29be910

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

fs/afs/mntpt.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,11 @@ static int afs_mntpt_set_params(struct fs_context *fc, struct dentry *mntpt)
140140
put_page(page);
141141
if (ret < 0)
142142
return ret;
143+
144+
/* Don't cross a backup volume mountpoint from a backup volume */
145+
if (src_as->volume && src_as->volume->type == AFSVL_BACKVOL &&
146+
ctx->type == AFSVL_BACKVOL)
147+
return -ENODEV;
143148
}
144149

145150
return 0;

0 commit comments

Comments
 (0)