Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6: (27 commits) [CIFS] Missing flags2 for DFS [CIFS] Workaround incomplete byte length returned by some [CIFS] cifs Kconfig: don't select CONNECTOR [CIFS] Level 1 QPathInfo needed for proper OS2 support [CIFS] fix typo in previous patch [CIFS] Fix old DOS time conversion to handle timezone [CIFS] Do not need to adjust for Jan/Feb for leap day [CIFS] Fix leaps year calculation for years after 2100 [CIFS] readdir (ffirst) enablement of accurate timestamps from legacy servers [CIFS] Fix compiler warning with previous patch [CIFS] Fix typo [CIFS] Allow for 15 minute TZs (e.g. Nepal) and be more explicit about [CIFS] Fix readdir of large directories for backlevel servers [CIFS] Allow LANMAN21 support even in both POSIX non-POSIX path [CIFS] Make use of newer QFSInfo dependent on capability bit instead of [CIFS] Do not send newer QFSInfo to legacy servers which can not support it [CIFS] Fix typo in name of new cifs_show_stats [CIFS] Rename server time zone field [CIFS] Handle legacy servers which return undefined time zone [CIFS] CIFS support for /proc/<pid>/mountstats part 1 ... Manual conflict resolution in fs/cifs/connect.c
This commit is contained in:
@@ -109,7 +109,7 @@ static int ipv6_connect(struct sockaddr_in6 *psin_server,
|
||||
* wake up waiters on reconnection? - (not needed currently)
|
||||
*/
|
||||
|
||||
int
|
||||
static int
|
||||
cifs_reconnect(struct TCP_Server_Info *server)
|
||||
{
|
||||
int rc = 0;
|
||||
@@ -771,13 +771,18 @@ cifs_parse_mount_options(char *options, const char *devname,struct smb_vol *vol)
|
||||
separator[0] = ',';
|
||||
separator[1] = 0;
|
||||
|
||||
memset(vol->source_rfc1001_name,0x20,15);
|
||||
for(i=0;i < strnlen(utsname()->nodename,15);i++) {
|
||||
/* does not have to be a perfect mapping since the field is
|
||||
informational, only used for servers that do not support
|
||||
port 445 and it can be overridden at mount time */
|
||||
vol->source_rfc1001_name[i] =
|
||||
toupper(utsname()->nodename[i]);
|
||||
if (Local_System_Name[0] != 0)
|
||||
memcpy(vol->source_rfc1001_name, Local_System_Name,15);
|
||||
else {
|
||||
char *nodename = utsname()->nodename;
|
||||
int n = strnlen(nodename,15);
|
||||
memset(vol->source_rfc1001_name,0x20,15);
|
||||
for(i=0 ; i < n ; i++) {
|
||||
/* does not have to be perfect mapping since field is
|
||||
informational, only used for servers that do not support
|
||||
port 445 and it can be overridden at mount time */
|
||||
vol->source_rfc1001_name[i] = toupper(nodename[i]);
|
||||
}
|
||||
}
|
||||
vol->source_rfc1001_name[15] = 0;
|
||||
/* null target name indicates to use *SMBSERVR default called name
|
||||
@@ -3215,7 +3220,9 @@ CIFSTCon(unsigned int xid, struct cifsSesInfo *ses,
|
||||
}
|
||||
/* else do not bother copying these informational fields */
|
||||
}
|
||||
if(smb_buffer_response->WordCount == 3)
|
||||
if((smb_buffer_response->WordCount == 3) ||
|
||||
(smb_buffer_response->WordCount == 7))
|
||||
/* field is in same location */
|
||||
tcon->Flags = le16_to_cpu(pSMBr->OptionalSupport);
|
||||
else
|
||||
tcon->Flags = 0;
|
||||
@@ -3312,19 +3319,21 @@ int cifs_setup_session(unsigned int xid, struct cifsSesInfo *pSesInfo,
|
||||
first_time = 1;
|
||||
}
|
||||
if (!rc) {
|
||||
pSesInfo->flags = 0;
|
||||
pSesInfo->capabilities = pSesInfo->server->capabilities;
|
||||
if(linuxExtEnabled == 0)
|
||||
pSesInfo->capabilities &= (~CAP_UNIX);
|
||||
/* pSesInfo->sequence_number = 0;*/
|
||||
cFYI(1,("Security Mode: 0x%x Capabilities: 0x%x Time Zone: %d",
|
||||
cFYI(1,("Security Mode: 0x%x Capabilities: 0x%x TimeAdjust: %d",
|
||||
pSesInfo->server->secMode,
|
||||
pSesInfo->server->capabilities,
|
||||
pSesInfo->server->timeZone));
|
||||
pSesInfo->server->timeAdj));
|
||||
if(experimEnabled < 2)
|
||||
rc = CIFS_SessSetup(xid, pSesInfo,
|
||||
first_time, nls_info);
|
||||
else if (extended_security
|
||||
&& (pSesInfo->capabilities & CAP_EXTENDED_SECURITY)
|
||||
&& (pSesInfo->capabilities
|
||||
& CAP_EXTENDED_SECURITY)
|
||||
&& (pSesInfo->server->secType == NTLMSSP)) {
|
||||
rc = -EOPNOTSUPP;
|
||||
} else if (extended_security
|
||||
@@ -3338,7 +3347,7 @@ int cifs_setup_session(unsigned int xid, struct cifsSesInfo *pSesInfo,
|
||||
if (!rc) {
|
||||
if(ntlmv2_flag) {
|
||||
char * v2_response;
|
||||
cFYI(1,("Can use more secure NTLM version 2 password hash"));
|
||||
cFYI(1,("more secure NTLM ver2 hash"));
|
||||
if(CalcNTLMv2_partial_mac_key(pSesInfo,
|
||||
nls_info)) {
|
||||
rc = -ENOMEM;
|
||||
|
Reference in New Issue
Block a user