aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs/cifs_debug.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/cifs/cifs_debug.c')
-rw-r--r--fs/cifs/cifs_debug.c56
1 files changed, 40 insertions, 16 deletions
diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
index 4e10e21c54fd..7c0015a96959 100644
--- a/fs/cifs/cifs_debug.c
+++ b/fs/cifs/cifs_debug.c
@@ -445,8 +445,8 @@ static read_proc_t traceSMB_read;
445static write_proc_t traceSMB_write; 445static write_proc_t traceSMB_write;
446static read_proc_t multiuser_mount_read; 446static read_proc_t multiuser_mount_read;
447static write_proc_t multiuser_mount_write; 447static write_proc_t multiuser_mount_write;
448static read_proc_t extended_security_read; 448static read_proc_t security_flags_read;
449static write_proc_t extended_security_write; 449static write_proc_t security_flags_write;
450/* static read_proc_t ntlmv2_enabled_read; 450/* static read_proc_t ntlmv2_enabled_read;
451static write_proc_t ntlmv2_enabled_write; 451static write_proc_t ntlmv2_enabled_write;
452static read_proc_t packet_signing_enabled_read; 452static read_proc_t packet_signing_enabled_read;
@@ -509,9 +509,9 @@ cifs_proc_init(void)
509 509
510 pde = 510 pde =
511 create_proc_read_entry("SecurityFlags", 0, proc_fs_cifs, 511 create_proc_read_entry("SecurityFlags", 0, proc_fs_cifs,
512 extended_security_read, NULL); 512 security_flags_read, NULL);
513 if (pde) 513 if (pde)
514 pde->write_proc = extended_security_write; 514 pde->write_proc = security_flags_write;
515 515
516 pde = 516 pde =
517 create_proc_read_entry("LookupCacheEnabled", 0, proc_fs_cifs, 517 create_proc_read_entry("LookupCacheEnabled", 0, proc_fs_cifs,
@@ -832,7 +832,7 @@ multiuser_mount_write(struct file *file, const char __user *buffer,
832} 832}
833 833
834static int 834static int
835extended_security_read(char *page, char **start, off_t off, 835security_flags_read(char *page, char **start, off_t off,
836 int count, int *eof, void *data) 836 int count, int *eof, void *data)
837{ 837{
838 int len; 838 int len;
@@ -853,26 +853,50 @@ extended_security_read(char *page, char **start, off_t off,
853 return len; 853 return len;
854} 854}
855static int 855static int
856extended_security_write(struct file *file, const char __user *buffer, 856security_flags_write(struct file *file, const char __user *buffer,
857 unsigned long count, void *data) 857 unsigned long count, void *data)
858{ 858{
859 unsigned int flags;
860 char flags_string[12];
859 char c; 861 char c;
860 int rc; 862
861 cERROR(1,("size %ld",count)); /* BB removeme BB */ 863 cERROR(1,("size %ld",count)); /* BB removeme BB */
862 if((count < 2) || (count > 8)) 864
865 if((count < 1) || (count > 11))
863 return -EINVAL; 866 return -EINVAL;
864 867
865 rc = get_user(c, buffer); 868 memset(flags_string, 0, 12);
866 869
867/* BB fixme need to parse more characters in order to handle CIFSSEC flags */ 870 if(copy_from_user(flags_string, buffer, count))
871 return -EFAULT;
868 872
869 if (rc) 873 if(count < 3) {
870 return rc; 874 /* single char or single char followed by null */
871 if (c == '0' || c == 'n' || c == 'N') 875 c = flags_string[0];
872 extended_security = CIFSSEC_DEF; /* default */ 876 if (c == '0' || c == 'n' || c == 'N')
873 else if (c == '1' || c == 'y' || c == 'Y') 877 extended_security = CIFSSEC_DEF; /* default */
874 extended_security = CIFSSEC_MAX; 878 else if (c == '1' || c == 'y' || c == 'Y')
879 extended_security = CIFSSEC_MAX;
880 return count;
881 }
882 /* else we have a number */
883
884 flags = simple_strtoul(flags_string, NULL, 0);
885
886 cERROR(1,("sec flags 0x%x", flags)); /* BB FIXME make cFYI */
887
888 if(flags <= 0) {
889 cERROR(1,("invalid security flags %s",flags_string));
890 return -EINVAL;
891 }
875 892
893 if((flags & CIFSSEC_MASK) != CIFSSEC_MASK) {
894 cERROR(1,("attempt to set unsupported security flags 0x%d",
895 flags & ~CIFSSEC_MASK));
896 return -EINVAL;
897 }
898 /* flags look ok - update the global security flags for cifs module */
899 extended_security = flags;
876 return count; 900 return count;
877} 901}
878 902