Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
etercifs
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
etersoft
etercifs
Commits
9bbd26d4
Commit
9bbd26d4
authored
Apr 29, 2013
by
Pavel Shilovsky
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update 3.8 sources from stable (v3.8.10)
parent
2bd4f1d7
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
57 additions
and
52 deletions
+57
-52
asn1.c
sources/3.8/asn1.c
+5
-48
cifsfs.c
sources/3.8/cifsfs.c
+29
-0
cifsfs.h
sources/3.8/cifsfs.h
+4
-0
connect.c
sources/3.8/connect.c
+13
-3
file.c
sources/3.8/file.c
+5
-1
smb2ops.c
sources/3.8/smb2ops.c
+1
-0
No files found.
sources/3.8/asn1.c
View file @
9bbd26d4
...
...
@@ -614,53 +614,10 @@ decode_negTokenInit(unsigned char *security_blob, int length,
}
}
/* mechlistMIC */
if
(
asn1_header_decode
(
&
ctx
,
&
end
,
&
cls
,
&
con
,
&
tag
)
==
0
)
{
/* Check if we have reached the end of the blob, but with
no mechListMic (e.g. NTLMSSP instead of KRB5) */
if
(
ctx
.
error
==
ASN1_ERR_DEC_EMPTY
)
goto
decode_negtoken_exit
;
cFYI
(
1
,
"Error decoding last part negTokenInit exit3"
);
return
0
;
}
else
if
((
cls
!=
ASN1_CTX
)
||
(
con
!=
ASN1_CON
))
{
/* tag = 3 indicating mechListMIC */
cFYI
(
1
,
"Exit 4 cls = %d con = %d tag = %d end = %p (%d)"
,
cls
,
con
,
tag
,
end
,
*
end
);
return
0
;
}
/* sequence */
if
(
asn1_header_decode
(
&
ctx
,
&
end
,
&
cls
,
&
con
,
&
tag
)
==
0
)
{
cFYI
(
1
,
"Error decoding last part negTokenInit exit5"
);
return
0
;
}
else
if
((
cls
!=
ASN1_UNI
)
||
(
con
!=
ASN1_CON
)
||
(
tag
!=
ASN1_SEQ
))
{
cFYI
(
1
,
"cls = %d con = %d tag = %d end = %p (%d)"
,
cls
,
con
,
tag
,
end
,
*
end
);
}
/* sequence of */
if
(
asn1_header_decode
(
&
ctx
,
&
end
,
&
cls
,
&
con
,
&
tag
)
==
0
)
{
cFYI
(
1
,
"Error decoding last part negTokenInit exit 7"
);
return
0
;
}
else
if
((
cls
!=
ASN1_CTX
)
||
(
con
!=
ASN1_CON
))
{
cFYI
(
1
,
"Exit 8 cls = %d con = %d tag = %d end = %p (%d)"
,
cls
,
con
,
tag
,
end
,
*
end
);
return
0
;
}
/* general string */
if
(
asn1_header_decode
(
&
ctx
,
&
end
,
&
cls
,
&
con
,
&
tag
)
==
0
)
{
cFYI
(
1
,
"Error decoding last part negTokenInit exit9"
);
return
0
;
}
else
if
((
cls
!=
ASN1_UNI
)
||
(
con
!=
ASN1_PRI
)
||
(
tag
!=
ASN1_GENSTR
))
{
cFYI
(
1
,
"Exit10 cls = %d con = %d tag = %d end = %p (%d)"
,
cls
,
con
,
tag
,
end
,
*
end
);
return
0
;
}
cFYI
(
1
,
"Need to call asn1_octets_decode() function for %s"
,
ctx
.
pointer
);
/* is this UTF-8 or ASCII? */
decode_negtoken_exit:
/*
* We currently ignore anything at the end of the SPNEGO blob after
* the mechTypes have been parsed, since none of that info is
* used at the moment.
*/
return
1
;
}
sources/3.8/cifsfs.c
View file @
9bbd26d4
...
...
@@ -91,6 +91,30 @@ struct workqueue_struct *cifsiod_wq;
__u8
cifs_client_guid
[
SMB2_CLIENT_GUID_SIZE
];
#endif
/*
* Bumps refcount for cifs super block.
* Note that it should be only called if a referece to VFS super block is
* already held, e.g. in open-type syscalls context. Otherwise it can race with
* atomic_dec_and_test in deactivate_locked_super.
*/
void
cifs_sb_active
(
struct
super_block
*
sb
)
{
struct
cifs_sb_info
*
server
=
CIFS_SB
(
sb
);
if
(
atomic_inc_return
(
&
server
->
active
)
==
1
)
atomic_inc
(
&
sb
->
s_active
);
}
void
cifs_sb_deactive
(
struct
super_block
*
sb
)
{
struct
cifs_sb_info
*
server
=
CIFS_SB
(
sb
);
if
(
atomic_dec_and_test
(
&
server
->
active
))
deactivate_super
(
sb
);
}
static
int
cifs_read_super
(
struct
super_block
*
sb
)
{
...
...
@@ -561,6 +585,11 @@ cifs_get_root(struct smb_vol *vol, struct super_block *sb)
dentry
=
ERR_PTR
(
-
ENOENT
);
break
;
}
if
(
!
S_ISDIR
(
dir
->
i_mode
))
{
dput
(
dentry
);
dentry
=
ERR_PTR
(
-
ENOTDIR
);
break
;
}
/* skip separators */
while
(
*
s
==
sep
)
...
...
sources/3.8/cifsfs.h
View file @
9bbd26d4
...
...
@@ -41,6 +41,10 @@ extern struct file_system_type cifs_fs_type;
extern
const
struct
address_space_operations
cifs_addr_ops
;
extern
const
struct
address_space_operations
cifs_addr_ops_smallbuf
;
/* Functions related to super block operations */
extern
void
cifs_sb_active
(
struct
super_block
*
sb
);
extern
void
cifs_sb_deactive
(
struct
super_block
*
sb
);
/* Functions related to inodes */
extern
const
struct
inode_operations
cifs_dir_inode_ops
;
extern
struct
inode
*
cifs_root_iget
(
struct
super_block
*
);
...
...
sources/3.8/connect.c
View file @
9bbd26d4
...
...
@@ -1551,14 +1551,24 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
}
break
;
case
Opt_blank_pass
:
vol
->
password
=
NULL
;
break
;
case
Opt_pass
:
/* passwords have to be handled differently
* to allow the character used for deliminator
* to be passed within them
*/
/*
* Check if this is a case where the password
* starts with a delimiter
*/
tmp_end
=
strchr
(
data
,
'='
);
tmp_end
++
;
if
(
!
(
tmp_end
<
end
&&
tmp_end
[
1
]
==
delim
))
{
/* No it is not. Set the password to NULL */
vol
->
password
=
NULL
;
break
;
}
/* Yes it is. Drop down to Opt_pass below.*/
case
Opt_pass
:
/* Obtain the value string */
value
=
strchr
(
data
,
'='
);
value
++
;
...
...
sources/3.8/file.c
View file @
9bbd26d4
...
...
@@ -296,6 +296,8 @@ cifs_new_fileinfo(struct cifs_fid *fid, struct file *file,
INIT_WORK
(
&
cfile
->
oplock_break
,
cifs_oplock_break
);
mutex_init
(
&
cfile
->
fh_mutex
);
cifs_sb_active
(
inode
->
i_sb
);
/*
* If the server returned a read oplock and we have mandatory brlocks,
* set oplock level to None.
...
...
@@ -345,7 +347,8 @@ void cifsFileInfo_put(struct cifsFileInfo *cifs_file)
struct
cifs_tcon
*
tcon
=
tlink_tcon
(
cifs_file
->
tlink
);
struct
TCP_Server_Info
*
server
=
tcon
->
ses
->
server
;
struct
cifsInodeInfo
*
cifsi
=
CIFS_I
(
inode
);
struct
cifs_sb_info
*
cifs_sb
=
CIFS_SB
(
inode
->
i_sb
);
struct
super_block
*
sb
=
inode
->
i_sb
;
struct
cifs_sb_info
*
cifs_sb
=
CIFS_SB
(
sb
);
struct
cifsLockInfo
*
li
,
*
tmp
;
struct
cifs_fid
fid
;
struct
cifs_pending_open
open
;
...
...
@@ -410,6 +413,7 @@ void cifsFileInfo_put(struct cifsFileInfo *cifs_file)
cifs_put_tlink
(
cifs_file
->
tlink
);
dput
(
cifs_file
->
dentry
);
cifs_sb_deactive
(
sb
);
kfree
(
cifs_file
);
}
...
...
sources/3.8/smb2ops.c
View file @
9bbd26d4
...
...
@@ -746,4 +746,5 @@ struct smb_version_values smb30_values = {
.
cap_unix
=
0
,
.
cap_nt_find
=
SMB2_NT_FIND
,
.
cap_large_files
=
SMB2_LARGE_FILES
,
.
oplock_read
=
SMB2_OPLOCK_LEVEL_II
,
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment