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
06c4f30e
Commit
06c4f30e
authored
Apr 29, 2013
by
Pavel Shilovsky
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update 3.2 sources from stable (v3.2.44)
parent
5430b07f
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
43 additions
and
49 deletions
+43
-49
asn1.c
sources/3.2/asn1.c
+5
-48
cifsfs.c
sources/3.2/cifsfs.c
+29
-0
cifsfs.h
sources/3.2/cifsfs.h
+4
-0
file.c
sources/3.2/file.c
+5
-1
No files found.
sources/3.2/asn1.c
View file @
06c4f30e
...
...
@@ -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.2/cifsfs.c
View file @
06c4f30e
...
...
@@ -90,6 +90,30 @@ extern mempool_t *cifs_sm_req_poolp;
extern
mempool_t
*
cifs_req_poolp
;
extern
mempool_t
*
cifs_mid_poolp
;
/*
* 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
)
{
...
...
@@ -564,6 +588,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.2/cifsfs.h
View file @
06c4f30e
...
...
@@ -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.2/file.c
View file @
06c4f30e
...
...
@@ -267,6 +267,8 @@ cifs_new_fileinfo(__u16 fileHandle, struct file *file,
mutex_init
(
&
pCifsFile
->
fh_mutex
);
INIT_WORK
(
&
pCifsFile
->
oplock_break
,
cifs_oplock_break
);
cifs_sb_active
(
inode
->
i_sb
);
spin_lock
(
&
cifs_file_list_lock
);
list_add
(
&
pCifsFile
->
tlist
,
&
(
tlink_tcon
(
tlink
)
->
openFileList
));
/* if readable file instance put first in list*/
...
...
@@ -295,7 +297,8 @@ void cifsFileInfo_put(struct cifsFileInfo *cifs_file)
struct
inode
*
inode
=
cifs_file
->
dentry
->
d_inode
;
struct
cifs_tcon
*
tcon
=
tlink_tcon
(
cifs_file
->
tlink
);
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
;
spin_lock
(
&
cifs_file_list_lock
);
...
...
@@ -347,6 +350,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
);
}
...
...
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