Patch "afs: Fix mountpoint parsing" has been added to the 5.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    afs: Fix mountpoint parsing

to the 5.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     afs-fix-mountpoint-parsing.patch
and it can be found in the queue-5.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit fdda4bfe34c1d2284972d3c1e6c2a4d3bfb89c4c
Author: David Howells <dhowells@xxxxxxxxxx>
Date:   Mon Dec 9 15:04:45 2019 +0000

    afs: Fix mountpoint parsing
    
    [ Upstream commit 158d58335393af3956a9c06f0816ee75ed1f1447 ]
    
    Each AFS mountpoint has strings that define the target to be mounted.  This
    is required to end in a dot that is supposed to be stripped off.  The
    string can include suffixes of ".readonly" or ".backup" - which are
    supposed to come before the terminal dot.  To add to the confusion, the "fs
    lsmount" afs utility does not show the terminal dot when displaying the
    string.
    
    The kernel mount source string parser, however, assumes that the terminal
    dot marks the suffix and that the suffix is always "" and is thus ignored.
    In most cases, there is no suffix and this is not a problem - but if there
    is a suffix, it is lost and this affects the ability to mount the correct
    volume.
    
    The command line mount command, on the other hand, is expected not to
    include a terminal dot - so the problem doesn't arise there.
    
    Fix this by making sure that the dot exists and then stripping it when
    passing the string to the mount configuration.
    
    Fixes: bec5eb614130 ("AFS: Implement an autocell mount capability [ver #2]")
    Reported-by: Jonathan Billings <jsbillings@xxxxxxxxxxxxxx>
    Signed-off-by: David Howells <dhowells@xxxxxxxxxx>
    Reviewed-by: Marc Dionne <marc.dionne@xxxxxxxxxxxx>
    Tested-by: Jonathan Billings <jsbillings@xxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/afs/mntpt.c b/fs/afs/mntpt.c
index f532d6d3bd28..79bc5f1338ed 100644
--- a/fs/afs/mntpt.c
+++ b/fs/afs/mntpt.c
@@ -126,7 +126,7 @@ static int afs_mntpt_set_params(struct fs_context *fc, struct dentry *mntpt)
 		if (src_as->cell)
 			ctx->cell = afs_get_cell(src_as->cell);
 
-		if (size > PAGE_SIZE - 1)
+		if (size < 2 || size > PAGE_SIZE - 1)
 			return -EINVAL;
 
 		page = read_mapping_page(d_inode(mntpt)->i_mapping, 0, NULL);
@@ -140,7 +140,9 @@ static int afs_mntpt_set_params(struct fs_context *fc, struct dentry *mntpt)
 		}
 
 		buf = kmap(page);
-		ret = vfs_parse_fs_string(fc, "source", buf, size);
+		ret = -EINVAL;
+		if (buf[size - 1] == '.')
+			ret = vfs_parse_fs_string(fc, "source", buf, size - 1);
 		kunmap(page);
 		put_page(page);
 		if (ret < 0)



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux