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 <[email protected]> Link: http://lists.infradead.org/pipermail/linux-afs/2024-May/008454.html Reported-by: Markus Suvanto <[email protected]> Link: http://lists.infradead.org/pipermail/linux-afs/2024-February/008074.html Signed-off-by: Marc Dionne <[email protected]> Signed-off-by: David Howells <[email protected]> Link: https://lore.kernel.org/r/[email protected] Reviewed-by: Jeffrey Altman <[email protected]> cc: [email protected] Signed-off-by: Christian Brauner <[email protected]>
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)