diff options
author | Jeff Layton <jlayton@redhat.com> | 2012-05-16 07:13:17 -0400 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2012-05-16 21:13:31 -0400 |
commit | 5e500ed125f3b153aa3f228657723189e9f4c82e (patch) | |
tree | c448b1720e6da62f3f6378c29f7545e2523aa367 /fs | |
parent | 1c89254926c0643b99541d422c909762479aeef8 (diff) |
cifs: remove legacy MultiuserMount option
We've now warned about this for two releases. Remove it for 3.5.
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/cifs/README | 5 | ||||
-rw-r--r-- | fs/cifs/cifs_debug.c | 50 | ||||
-rw-r--r-- | fs/cifs/cifsfs.c | 1 | ||||
-rw-r--r-- | fs/cifs/cifsglob.h | 7 | ||||
-rw-r--r-- | fs/cifs/misc.c | 47 |
5 files changed, 1 insertions, 109 deletions
diff --git a/fs/cifs/README b/fs/cifs/README index b7d782bab797..22ab7b5b8da7 100644 --- a/fs/cifs/README +++ b/fs/cifs/README | |||
@@ -608,11 +608,6 @@ Stats Lists summary resource usage information as well as per | |||
608 | in the kernel configuration. | 608 | in the kernel configuration. |
609 | 609 | ||
610 | Configuration pseudo-files: | 610 | Configuration pseudo-files: |
611 | MultiuserMount If set to one, more than one CIFS session to | ||
612 | the same server ip address can be established | ||
613 | if more than one uid accesses the same mount | ||
614 | point and if the uids user/password mapping | ||
615 | information is available. (default is 0) | ||
616 | PacketSigningEnabled If set to one, cifs packet signing is enabled | 611 | PacketSigningEnabled If set to one, cifs packet signing is enabled |
617 | and will be used if the server requires | 612 | and will be used if the server requires |
618 | it. If set to two, cifs packet signing is | 613 | it. If set to two, cifs packet signing is |
diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c index 270464629416..8aae8e28038c 100644 --- a/fs/cifs/cifs_debug.c +++ b/fs/cifs/cifs_debug.c | |||
@@ -420,7 +420,6 @@ static struct proc_dir_entry *proc_fs_cifs; | |||
420 | static const struct file_operations cifsFYI_proc_fops; | 420 | static const struct file_operations cifsFYI_proc_fops; |
421 | static const struct file_operations cifs_lookup_cache_proc_fops; | 421 | static const struct file_operations cifs_lookup_cache_proc_fops; |
422 | static const struct file_operations traceSMB_proc_fops; | 422 | static const struct file_operations traceSMB_proc_fops; |
423 | static const struct file_operations cifs_multiuser_mount_proc_fops; | ||
424 | static const struct file_operations cifs_security_flags_proc_fops; | 423 | static const struct file_operations cifs_security_flags_proc_fops; |
425 | static const struct file_operations cifs_linux_ext_proc_fops; | 424 | static const struct file_operations cifs_linux_ext_proc_fops; |
426 | 425 | ||
@@ -440,8 +439,6 @@ cifs_proc_init(void) | |||
440 | proc_create("traceSMB", 0, proc_fs_cifs, &traceSMB_proc_fops); | 439 | proc_create("traceSMB", 0, proc_fs_cifs, &traceSMB_proc_fops); |
441 | proc_create("LinuxExtensionsEnabled", 0, proc_fs_cifs, | 440 | proc_create("LinuxExtensionsEnabled", 0, proc_fs_cifs, |
442 | &cifs_linux_ext_proc_fops); | 441 | &cifs_linux_ext_proc_fops); |
443 | proc_create("MultiuserMount", 0, proc_fs_cifs, | ||
444 | &cifs_multiuser_mount_proc_fops); | ||
445 | proc_create("SecurityFlags", 0, proc_fs_cifs, | 442 | proc_create("SecurityFlags", 0, proc_fs_cifs, |
446 | &cifs_security_flags_proc_fops); | 443 | &cifs_security_flags_proc_fops); |
447 | proc_create("LookupCacheEnabled", 0, proc_fs_cifs, | 444 | proc_create("LookupCacheEnabled", 0, proc_fs_cifs, |
@@ -460,7 +457,6 @@ cifs_proc_clean(void) | |||
460 | #ifdef CONFIG_CIFS_STATS | 457 | #ifdef CONFIG_CIFS_STATS |
461 | remove_proc_entry("Stats", proc_fs_cifs); | 458 | remove_proc_entry("Stats", proc_fs_cifs); |
462 | #endif | 459 | #endif |
463 | remove_proc_entry("MultiuserMount", proc_fs_cifs); | ||
464 | remove_proc_entry("SecurityFlags", proc_fs_cifs); | 460 | remove_proc_entry("SecurityFlags", proc_fs_cifs); |
465 | remove_proc_entry("LinuxExtensionsEnabled", proc_fs_cifs); | 461 | remove_proc_entry("LinuxExtensionsEnabled", proc_fs_cifs); |
466 | remove_proc_entry("LookupCacheEnabled", proc_fs_cifs); | 462 | remove_proc_entry("LookupCacheEnabled", proc_fs_cifs); |
@@ -617,52 +613,6 @@ static const struct file_operations traceSMB_proc_fops = { | |||
617 | .write = traceSMB_proc_write, | 613 | .write = traceSMB_proc_write, |
618 | }; | 614 | }; |
619 | 615 | ||
620 | static int cifs_multiuser_mount_proc_show(struct seq_file *m, void *v) | ||
621 | { | ||
622 | seq_printf(m, "%d\n", multiuser_mount); | ||
623 | return 0; | ||
624 | } | ||
625 | |||
626 | static int cifs_multiuser_mount_proc_open(struct inode *inode, struct file *fh) | ||
627 | { | ||
628 | return single_open(fh, cifs_multiuser_mount_proc_show, NULL); | ||
629 | } | ||
630 | |||
631 | static ssize_t cifs_multiuser_mount_proc_write(struct file *file, | ||
632 | const char __user *buffer, size_t count, loff_t *ppos) | ||
633 | { | ||
634 | char c; | ||
635 | int rc; | ||
636 | static bool warned; | ||
637 | |||
638 | rc = get_user(c, buffer); | ||
639 | if (rc) | ||
640 | return rc; | ||
641 | if (c == '0' || c == 'n' || c == 'N') | ||
642 | multiuser_mount = 0; | ||
643 | else if (c == '1' || c == 'y' || c == 'Y') { | ||
644 | multiuser_mount = 1; | ||
645 | if (!warned) { | ||
646 | warned = true; | ||
647 | printk(KERN_WARNING "CIFS VFS: The legacy multiuser " | ||
648 | "mount code is scheduled to be deprecated in " | ||
649 | "3.5. Please switch to using the multiuser " | ||
650 | "mount option."); | ||
651 | } | ||
652 | } | ||
653 | |||
654 | return count; | ||
655 | } | ||
656 | |||
657 | static const struct file_operations cifs_multiuser_mount_proc_fops = { | ||
658 | .owner = THIS_MODULE, | ||
659 | .open = cifs_multiuser_mount_proc_open, | ||
660 | .read = seq_read, | ||
661 | .llseek = seq_lseek, | ||
662 | .release = single_release, | ||
663 | .write = cifs_multiuser_mount_proc_write, | ||
664 | }; | ||
665 | |||
666 | static int cifs_security_flags_proc_show(struct seq_file *m, void *v) | 616 | static int cifs_security_flags_proc_show(struct seq_file *m, void *v) |
667 | { | 617 | { |
668 | seq_printf(m, "0x%x\n", global_secflags); | 618 | seq_printf(m, "0x%x\n", global_secflags); |
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index 541ef81f6ae8..c45f170c28d0 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c | |||
@@ -56,7 +56,6 @@ int traceSMB = 0; | |||
56 | bool enable_oplocks = true; | 56 | bool enable_oplocks = true; |
57 | unsigned int linuxExtEnabled = 1; | 57 | unsigned int linuxExtEnabled = 1; |
58 | unsigned int lookupCacheEnabled = 1; | 58 | unsigned int lookupCacheEnabled = 1; |
59 | unsigned int multiuser_mount = 0; | ||
60 | unsigned int global_secflags = CIFSSEC_DEF; | 59 | unsigned int global_secflags = CIFSSEC_DEF; |
61 | /* unsigned int ntlmv2_support = 0; */ | 60 | /* unsigned int ntlmv2_support = 0; */ |
62 | unsigned int sign_CIFS_PDUs = 1; | 61 | unsigned int sign_CIFS_PDUs = 1; |
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index 4ff6313f0a91..a867d9923d7d 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h | |||
@@ -1042,12 +1042,7 @@ GLOBAL_EXTERN atomic_t smBufAllocCount; | |||
1042 | GLOBAL_EXTERN atomic_t midCount; | 1042 | GLOBAL_EXTERN atomic_t midCount; |
1043 | 1043 | ||
1044 | /* Misc globals */ | 1044 | /* Misc globals */ |
1045 | GLOBAL_EXTERN unsigned int multiuser_mount; /* if enabled allows new sessions | 1045 | GLOBAL_EXTERN bool enable_oplocks; /* enable or disable oplocks */ |
1046 | to be established on existing mount if we | ||
1047 | have the uid/password or Kerberos credential | ||
1048 | or equivalent for current user */ | ||
1049 | /* enable or disable oplocks */ | ||
1050 | GLOBAL_EXTERN bool enable_oplocks; | ||
1051 | GLOBAL_EXTERN unsigned int lookupCacheEnabled; | 1046 | GLOBAL_EXTERN unsigned int lookupCacheEnabled; |
1052 | GLOBAL_EXTERN unsigned int global_secflags; /* if on, session setup sent | 1047 | GLOBAL_EXTERN unsigned int global_secflags; /* if on, session setup sent |
1053 | with more secure ntlmssp2 challenge/resp */ | 1048 | with more secure ntlmssp2 challenge/resp */ |
diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c index c29d1aa2c54f..d2bb1e75ee96 100644 --- a/fs/cifs/misc.c +++ b/fs/cifs/misc.c | |||
@@ -306,8 +306,6 @@ header_assemble(struct smb_hdr *buffer, char smb_command /* command */ , | |||
306 | const struct cifs_tcon *treeCon, int word_count | 306 | const struct cifs_tcon *treeCon, int word_count |
307 | /* length of fixed section (word count) in two byte units */) | 307 | /* length of fixed section (word count) in two byte units */) |
308 | { | 308 | { |
309 | struct list_head *temp_item; | ||
310 | struct cifs_ses *ses; | ||
311 | char *temp = (char *) buffer; | 309 | char *temp = (char *) buffer; |
312 | 310 | ||
313 | memset(temp, 0, 256); /* bigger than MAX_CIFS_HDR_SIZE */ | 311 | memset(temp, 0, 256); /* bigger than MAX_CIFS_HDR_SIZE */ |
@@ -337,51 +335,6 @@ header_assemble(struct smb_hdr *buffer, char smb_command /* command */ , | |||
337 | /* Uid is not converted */ | 335 | /* Uid is not converted */ |
338 | buffer->Uid = treeCon->ses->Suid; | 336 | buffer->Uid = treeCon->ses->Suid; |
339 | buffer->Mid = GetNextMid(treeCon->ses->server); | 337 | buffer->Mid = GetNextMid(treeCon->ses->server); |
340 | if (multiuser_mount != 0) { | ||
341 | /* For the multiuser case, there are few obvious technically */ | ||
342 | /* possible mechanisms to match the local linux user (uid) */ | ||
343 | /* to a valid remote smb user (smb_uid): */ | ||
344 | /* 1) Query Winbind (or other local pam/nss daemon */ | ||
345 | /* for userid/password/logon_domain or credential */ | ||
346 | /* 2) Query Winbind for uid to sid to username mapping */ | ||
347 | /* and see if we have a matching password for existing*/ | ||
348 | /* session for that user perhas getting password by */ | ||
349 | /* adding a new pam_cifs module that stores passwords */ | ||
350 | /* so that the cifs vfs can get at that for all logged*/ | ||
351 | /* on users */ | ||
352 | /* 3) (Which is the mechanism we have chosen) */ | ||
353 | /* Search through sessions to the same server for a */ | ||
354 | /* a match on the uid that was passed in on mount */ | ||
355 | /* with the current processes uid (or euid?) and use */ | ||
356 | /* that smb uid. If no existing smb session for */ | ||
357 | /* that uid found, use the default smb session ie */ | ||
358 | /* the smb session for the volume mounted which is */ | ||
359 | /* the same as would be used if the multiuser mount */ | ||
360 | /* flag were disabled. */ | ||
361 | |||
362 | /* BB Add support for establishing new tCon and SMB Session */ | ||
363 | /* with userid/password pairs found on the smb session */ | ||
364 | /* for other target tcp/ip addresses BB */ | ||
365 | if (current_fsuid() != treeCon->ses->linux_uid) { | ||
366 | cFYI(1, "Multiuser mode and UID " | ||
367 | "did not match tcon uid"); | ||
368 | spin_lock(&cifs_tcp_ses_lock); | ||
369 | list_for_each(temp_item, &treeCon->ses->server->smb_ses_list) { | ||
370 | ses = list_entry(temp_item, struct cifs_ses, smb_ses_list); | ||
371 | if (ses->linux_uid == current_fsuid()) { | ||
372 | if (ses->server == treeCon->ses->server) { | ||
373 | cFYI(1, "found matching uid substitute right smb_uid"); | ||
374 | buffer->Uid = ses->Suid; | ||
375 | break; | ||
376 | } else { | ||
377 | /* BB eventually call cifs_setup_session here */ | ||
378 | cFYI(1, "local UID found but no smb sess with this server exists"); | ||
379 | } | ||
380 | } | ||
381 | } | ||
382 | spin_unlock(&cifs_tcp_ses_lock); | ||
383 | } | ||
384 | } | ||
385 | } | 338 | } |
386 | if (treeCon->Flags & SMB_SHARE_IS_IN_DFS) | 339 | if (treeCon->Flags & SMB_SHARE_IS_IN_DFS) |
387 | buffer->Flags2 |= SMBFLG2_DFS; | 340 | buffer->Flags2 |= SMBFLG2_DFS; |