On Sat, Oct 17, 2020 at 03:28:39PM +0000, Boris Protopopov wrote: > When converting trailing spaces and periods in paths, do so > for every component of the path, not just the last component. > If the conversion is not done for every path component, then > subsequent operations in directories with trailing spaces or > periods (e.g. create(), mkdir()) will fail with ENOENT. This > is because on the server, the directory will have a special > symbol in its name, and the client needs to provide the same. > > Cc: <stable@xxxxxxxxxxxxxxx> # 4.9.x-5.8.x > Signed-off-by: Boris Protopopov <pboris@xxxxxxxxxx> > --- > fs/cifs/cifs_unicode.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/fs/cifs/cifs_unicode.c b/fs/cifs/cifs_unicode.c > index 498777d859eb..9bd03a231032 100644 > --- a/fs/cifs/cifs_unicode.c > +++ b/fs/cifs/cifs_unicode.c > @@ -488,7 +488,13 @@ cifsConvertToUTF16(__le16 *target, const char *source, int srclen, > else if (map_chars == SFM_MAP_UNI_RSVD) { > bool end_of_string; > > - if (i == srclen - 1) > + /** > + * Remap spaces and periods found at the end of every > + * component of the path. The special cases of '.' and > + * '..' do not need to be dealt with explicitly because > + * they are addressed in namei.c:link_path_walk(). > + **/ > + if ((i == srclen - 1) || (source[i+1] == '\\')) > end_of_string = true; > else > end_of_string = false; > -- > 2.18.4 > What is the git commit id of this in Linus's tree? thanks, greg k-h