fs/cifs: don't translate SFM_SLASH (U+F026) to backslash

Message ID 20180709143314.4378-1-jkuhn@barracuda.com
State New
Headers show
  • fs/cifs: don't translate SFM_SLASH (U+F026) to backslash
Related show

Commit Message

Jon Kuhn July 9, 2018, 2:33 p.m.
When a Mac client saves an item containing a backslash to a file server
the backslash is represented in the CIFS/SMB protocol as as U+F026.
Before this change, listing a directory containing an item with a
backslash in its name will return that item with the backslash
represented with a true backslash character (U+005C) because
convert_sfm_character mapped U+F026 to U+005C when interpretting the
CIFS/SMB protocol response.  However, attempting to open or stat the
path using a true backslash will result in an error because
convert_to_sfm_char does not map U+005C back to U+F026 causing the
CIFS/SMB request to be made with the backslash represented as U+005C.

This change simply prevents the U+F026 to U+005C conversion from
happenning.  This is analogous to how the code does not do any
translation of UNI_SLASH (U+F000).

Signed-off-by: Jon Kuhn <jkuhn@barracuda.com>
 fs/cifs/cifs_unicode.c | 3 ---
 1 file changed, 3 deletions(-)


diff --git a/fs/cifs/cifs_unicode.c b/fs/cifs/cifs_unicode.c
index b380e087..a2b2355e 100644
--- a/fs/cifs/cifs_unicode.c
+++ b/fs/cifs/cifs_unicode.c
@@ -105,9 +105,6 @@  convert_sfm_char(const __u16 src_char, char *target)
 		*target = '<';
-	case SFM_SLASH:
-		*target = '\\';
-		break;
 	case SFM_SPACE:
 		*target = ' ';