Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
ad7a2926
K
Kernel
项目概览
openeuler
/
Kernel
12 个月 前同步成功
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ad7a2926
编写于
2月 07, 2008
作者:
S
Steve French
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[CIFS] reduce checkpatch warnings
Signed-off-by:
N
Steve French
<
sfrench@us.ibm.com
>
上级
f315ccb3
变更
23
隐藏空白更改
内联
并排
Showing
23 changed file
with
167 addition
and
279 deletion
+167
-279
fs/cifs/README
fs/cifs/README
+1
-1
fs/cifs/cifs_debug.c
fs/cifs/cifs_debug.c
+1
-2
fs/cifs/cifs_debug.h
fs/cifs/cifs_debug.h
+3
-3
fs/cifs/cifs_unicode.c
fs/cifs/cifs_unicode.c
+2
-2
fs/cifs/cifs_unicode.h
fs/cifs/cifs_unicode.h
+6
-3
fs/cifs/cifsacl.c
fs/cifs/cifsacl.c
+3
-4
fs/cifs/cifsfs.c
fs/cifs/cifsfs.c
+1
-2
fs/cifs/cifsproto.h
fs/cifs/cifsproto.h
+8
-8
fs/cifs/cifssmb.c
fs/cifs/cifssmb.c
+61
-151
fs/cifs/dir.c
fs/cifs/dir.c
+4
-16
fs/cifs/dns_resolve.h
fs/cifs/dns_resolve.h
+1
-1
fs/cifs/fcntl.c
fs/cifs/fcntl.c
+2
-4
fs/cifs/file.c
fs/cifs/file.c
+9
-11
fs/cifs/inode.c
fs/cifs/inode.c
+3
-4
fs/cifs/ioctl.c
fs/cifs/ioctl.c
+1
-1
fs/cifs/md4.c
fs/cifs/md4.c
+2
-2
fs/cifs/md5.c
fs/cifs/md5.c
+4
-5
fs/cifs/misc.c
fs/cifs/misc.c
+8
-6
fs/cifs/netmisc.c
fs/cifs/netmisc.c
+9
-6
fs/cifs/readdir.c
fs/cifs/readdir.c
+21
-27
fs/cifs/smbdes.c
fs/cifs/smbdes.c
+10
-12
fs/cifs/transport.c
fs/cifs/transport.c
+3
-3
fs/cifs/xattr.c
fs/cifs/xattr.c
+4
-5
未找到文件。
fs/cifs/README
浏览文件 @
ad7a2926
...
...
@@ -461,7 +461,7 @@ A partial list of the supported mount options follows:
cifsacl Report mode bits (e.g. on stat) based on the Windows ACL for
the file. (EXPERIMENTAL)
servern Specify the server 's netbios name (RFC1001 name) to use
when attempting to setup a session to the server.
This is
when attempting to setup a session to the server.
This is needed for mounting to some older servers (such
as OS/2 or Windows 98 and Windows ME) since they do not
support a default server name. A server name can be up
...
...
fs/cifs/cifs_debug.c
浏览文件 @
ad7a2926
...
...
@@ -98,8 +98,7 @@ void cifs_dump_mids(struct TCP_Server_Info *server)
if
(
mid_entry
->
resp_buf
)
{
cifs_dump_detail
(
mid_entry
->
resp_buf
);
cifs_dump_mem
(
"existing buf: "
,
mid_entry
->
resp_buf
,
62
/* fixme */
);
mid_entry
->
resp_buf
,
62
);
}
}
}
...
...
fs/cifs/cifs_debug.h
浏览文件 @
ad7a2926
...
...
@@ -64,10 +64,10 @@ extern int cifsERROR;
* ---------
*/
#else
/* _CIFS_DEBUG */
#define cERROR(button,prspec)
#define cEVENT(format,arg...)
#define cERROR(button,
prspec)
#define cEVENT(format,
arg...)
#define cFYI(button, prspec)
#define cifserror(format,arg...)
#define cifserror(format,
arg...)
#endif
/* _CIFS_DEBUG */
#endif
/* _H_CIFS_DEBUG */
fs/cifs/cifs_unicode.c
浏览文件 @
ad7a2926
...
...
@@ -32,7 +32,7 @@
*
*/
int
cifs_strfromUCS_le
(
char
*
to
,
const
__le16
*
from
,
cifs_strfromUCS_le
(
char
*
to
,
const
__le16
*
from
,
int
len
,
const
struct
nls_table
*
codepage
)
{
int
i
;
...
...
@@ -61,7 +61,7 @@ cifs_strfromUCS_le(char *to, const __le16 * from,
*
*/
int
cifs_strtoUCS
(
__le16
*
to
,
const
char
*
from
,
int
len
,
cifs_strtoUCS
(
__le16
*
to
,
const
char
*
from
,
int
len
,
const
struct
nls_table
*
codepage
)
{
int
charlen
;
...
...
fs/cifs/cifs_unicode.h
浏览文件 @
ad7a2926
...
...
@@ -254,7 +254,8 @@ UniStrstr(const wchar_t *ucs1, const wchar_t *ucs2)
const
wchar_t
*
anchor2
=
ucs2
;
while
(
*
ucs1
)
{
if
(
*
ucs1
==
*
ucs2
)
{
/* Partial match found */
if
(
*
ucs1
==
*
ucs2
)
{
/* Partial match found */
ucs1
++
;
ucs2
++
;
}
else
{
...
...
@@ -279,7 +280,8 @@ UniToupper(register wchar_t uc)
{
register
const
struct
UniCaseRange
*
rp
;
if
(
uc
<
sizeof
(
CifsUniUpperTable
))
{
/* Latin characters */
if
(
uc
<
sizeof
(
CifsUniUpperTable
))
{
/* Latin characters */
return
uc
+
CifsUniUpperTable
[
uc
];
/* Use base tables */
}
else
{
rp
=
CifsUniUpperRange
;
/* Use range tables */
...
...
@@ -320,7 +322,8 @@ UniTolower(wchar_t uc)
{
register
struct
UniCaseRange
*
rp
;
if
(
uc
<
sizeof
(
UniLowerTable
))
{
/* Latin characters */
if
(
uc
<
sizeof
(
UniLowerTable
))
{
/* Latin characters */
return
uc
+
UniLowerTable
[
uc
];
/* Use base tables */
}
else
{
rp
=
UniLowerRange
;
/* Use range tables */
...
...
fs/cifs/cifsacl.c
浏览文件 @
ad7a2926
...
...
@@ -46,8 +46,7 @@ static struct cifs_wksid wksidarr[NUM_WK_SIDS] = {
static
const
struct
cifs_sid
sid_everyone
=
{
1
,
1
,
{
0
,
0
,
0
,
0
,
0
,
1
},
{
0
}
};
/* group users */
static
const
struct
cifs_sid
sid_user
=
{
1
,
2
,
{
0
,
0
,
0
,
0
,
0
,
5
},
{}
};
static
const
struct
cifs_sid
sid_user
=
{
1
,
2
,
{
0
,
0
,
0
,
0
,
0
,
5
},
{}
};
int
match_sid
(
struct
cifs_sid
*
ctsid
)
...
...
@@ -195,9 +194,9 @@ static void access_flags_to_mode(__le32 ace_flags, int type, umode_t *pmode,
/* For deny ACEs we change the mask so that subsequent allow access
control entries do not turn on the bits we are denying */
if
(
type
==
ACCESS_DENIED
)
{
if
(
flags
&
GENERIC_ALL
)
{
if
(
flags
&
GENERIC_ALL
)
*
pbits_to_set
&=
~
S_IRWXUGO
;
}
if
((
flags
&
GENERIC_WRITE
)
||
((
flags
&
FILE_WRITE_RIGHTS
)
==
FILE_WRITE_RIGHTS
))
*
pbits_to_set
&=
~
S_IWUGO
;
...
...
fs/cifs/cifsfs.c
浏览文件 @
ad7a2926
...
...
@@ -203,9 +203,8 @@ cifs_put_super(struct super_block *sb)
return
;
}
rc
=
cifs_umount
(
sb
,
cifs_sb
);
if
(
rc
)
{
if
(
rc
)
cERROR
(
1
,
(
"cifs_umount failed with return code %d"
,
rc
));
}
#ifdef CONFIG_CIFS_DFS_UPCALL
if
(
cifs_sb
->
mountdata
)
{
kfree
(
cifs_sb
->
mountdata
);
...
...
fs/cifs/cifsproto.h
浏览文件 @
ad7a2926
...
...
@@ -53,11 +53,11 @@ extern int SendReceiveNoRsp(const unsigned int xid, struct cifsSesInfo *ses,
extern
int
SendReceive2
(
const
unsigned
int
/* xid */
,
struct
cifsSesInfo
*
,
struct
kvec
*
,
int
/* nvec to send */
,
int
*
/* type of buf returned */
,
const
int
flags
);
extern
int
SendReceiveBlockingLock
(
const
unsigned
int
/* xid */
,
struct
cifsTconInfo
*
,
struct
smb_hdr
*
/* input */
,
struct
smb_hdr
*
/* out */
,
int
*
/* bytes returned */
);
extern
int
SendReceiveBlockingLock
(
const
unsigned
int
xid
,
struct
cifsTconInfo
*
ptcon
,
struct
smb_hdr
*
in_buf
,
struct
smb_hdr
*
out_buf
,
int
*
bytes_returned
);
extern
int
checkSMB
(
struct
smb_hdr
*
smb
,
__u16
mid
,
unsigned
int
length
);
extern
int
is_valid_oplock_break
(
struct
smb_hdr
*
smb
,
struct
TCP_Server_Info
*
);
extern
int
is_size_safe_to_change
(
struct
cifsInodeInfo
*
,
__u64
eof
);
...
...
@@ -84,7 +84,7 @@ extern __u16 GetNextMid(struct TCP_Server_Info *server);
extern
struct
oplock_q_entry
*
AllocOplockQEntry
(
struct
inode
*
,
u16
,
struct
cifsTconInfo
*
);
extern
void
DeleteOplockQEntry
(
struct
oplock_q_entry
*
);
extern
struct
timespec
cifs_NTtimeToUnix
(
u64
/* utc nanoseconds since 1601 */
);
extern
struct
timespec
cifs_NTtimeToUnix
(
u64
utc_nanoseconds_since_1601
);
extern
u64
cifs_UnixTimeToNT
(
struct
timespec
);
extern
__le64
cnvrtDosCifsTm
(
__u16
date
,
__u16
time
);
extern
struct
timespec
cnvrtDosUnixTm
(
__u16
date
,
__u16
time
);
...
...
@@ -175,11 +175,11 @@ extern int CIFSSMBQFSPosixInfo(const int xid, struct cifsTconInfo *tcon,
struct
kstatfs
*
FSData
);
extern
int
CIFSSMBSetTimes
(
const
int
xid
,
struct
cifsTconInfo
*
tcon
,
const
char
*
fileName
,
const
FILE_BASIC_INFO
*
data
,
const
char
*
fileName
,
const
FILE_BASIC_INFO
*
data
,
const
struct
nls_table
*
nls_codepage
,
int
remap_special_chars
);
extern
int
CIFSSMBSetFileTimes
(
const
int
xid
,
struct
cifsTconInfo
*
tcon
,
const
FILE_BASIC_INFO
*
data
,
__u16
fid
);
const
FILE_BASIC_INFO
*
data
,
__u16
fid
);
#if 0
extern int CIFSSMBSetAttrLegacy(int xid, struct cifsTconInfo *tcon,
char *fileName, __u16 dos_attributes,
...
...
fs/cifs/cifssmb.c
浏览文件 @
ad7a2926
/*
* fs/cifs/cifssmb.c
*
* Copyright (C) International Business Machines Corp., 2002,200
7
* Copyright (C) International Business Machines Corp., 2002,200
8
* Author(s): Steve French (sfrench@us.ibm.com)
*
* Contains the routines for constructing the SMB PDUs themselves
...
...
@@ -102,10 +102,12 @@ static void mark_open_files_invalid(struct cifsTconInfo *pTcon)
to this tcon */
}
/* If the return code is zero, this function must fill in request_buf pointer */
/* Allocate and return pointer to an SMB request buffer, and set basic
SMB information in the SMB header. If the return code is zero, this
function must have filled in request_buf pointer */
static
int
small_smb_init
(
int
smb_command
,
int
wct
,
struct
cifsTconInfo
*
tcon
,
void
**
request_buf
/* returned */
)
void
**
request_buf
)
{
int
rc
=
0
;
...
...
@@ -363,7 +365,7 @@ smb_init(int smb_command, int wct, struct cifsTconInfo *tcon,
*
response_buf
=
*
request_buf
;
header_assemble
((
struct
smb_hdr
*
)
*
request_buf
,
smb_command
,
tcon
,
wct
/*wct */
);
wct
);
if
(
tcon
!=
NULL
)
cifs_stats_inc
(
&
tcon
->
num_smbs_sent
);
...
...
@@ -523,7 +525,7 @@ CIFSSMBNegotiate(unsigned int xid, struct cifsSesInfo *ses)
if
(
remain
>=
(
MIN_TZ_ADJ
/
2
))
result
+=
MIN_TZ_ADJ
;
if
(
val
<
0
)
result
=
-
result
;
result
=
-
result
;
server
->
timeAdj
=
result
;
}
else
{
server
->
timeAdj
=
(
int
)
tmp
;
...
...
@@ -868,9 +870,8 @@ CIFSPOSIXDelFile(const int xid, struct cifsTconInfo *tcon, const char *fileName,
pSMB
->
ByteCount
=
cpu_to_le16
(
byte_count
);
rc
=
SendReceive
(
xid
,
tcon
->
ses
,
(
struct
smb_hdr
*
)
pSMB
,
(
struct
smb_hdr
*
)
pSMBr
,
&
bytes_returned
,
0
);
if
(
rc
)
{
if
(
rc
)
cFYI
(
1
,
(
"Posix delete returned %d"
,
rc
));
}
cifs_buf_release
(
pSMB
);
cifs_stats_inc
(
&
tcon
->
num_deletes
);
...
...
@@ -916,9 +917,8 @@ CIFSSMBDelFile(const int xid, struct cifsTconInfo *tcon, const char *fileName,
rc
=
SendReceive
(
xid
,
tcon
->
ses
,
(
struct
smb_hdr
*
)
pSMB
,
(
struct
smb_hdr
*
)
pSMBr
,
&
bytes_returned
,
0
);
cifs_stats_inc
(
&
tcon
->
num_deletes
);
if
(
rc
)
{
if
(
rc
)
cFYI
(
1
,
(
"Error in RMFile = %d"
,
rc
));
}
cifs_buf_release
(
pSMB
);
if
(
rc
==
-
EAGAIN
)
...
...
@@ -961,9 +961,8 @@ CIFSSMBRmDir(const int xid, struct cifsTconInfo *tcon, const char *dirName,
rc
=
SendReceive
(
xid
,
tcon
->
ses
,
(
struct
smb_hdr
*
)
pSMB
,
(
struct
smb_hdr
*
)
pSMBr
,
&
bytes_returned
,
0
);
cifs_stats_inc
(
&
tcon
->
num_rmdirs
);
if
(
rc
)
{
if
(
rc
)
cFYI
(
1
,
(
"Error in RMDir = %d"
,
rc
));
}
cifs_buf_release
(
pSMB
);
if
(
rc
==
-
EAGAIN
)
...
...
@@ -1005,9 +1004,8 @@ CIFSSMBMkDir(const int xid, struct cifsTconInfo *tcon,
rc
=
SendReceive
(
xid
,
tcon
->
ses
,
(
struct
smb_hdr
*
)
pSMB
,
(
struct
smb_hdr
*
)
pSMBr
,
&
bytes_returned
,
0
);
cifs_stats_inc
(
&
tcon
->
num_mkdirs
);
if
(
rc
)
{
if
(
rc
)
cFYI
(
1
,
(
"Error in Mkdir = %d"
,
rc
));
}
cifs_buf_release
(
pSMB
);
if
(
rc
==
-
EAGAIN
)
...
...
@@ -1017,7 +1015,7 @@ CIFSSMBMkDir(const int xid, struct cifsTconInfo *tcon,
int
CIFSPOSIXCreate
(
const
int
xid
,
struct
cifsTconInfo
*
tcon
,
__u32
posix_flags
,
__u64
mode
,
__u16
*
netfid
,
FILE_UNIX_BASIC_INFO
*
pRetData
,
__u64
mode
,
__u16
*
netfid
,
FILE_UNIX_BASIC_INFO
*
pRetData
,
__u32
*
pOplock
,
const
char
*
name
,
const
struct
nls_table
*
nls_codepage
,
int
remap
)
{
...
...
@@ -1027,8 +1025,8 @@ CIFSPOSIXCreate(const int xid, struct cifsTconInfo *tcon, __u32 posix_flags,
int
rc
=
0
;
int
bytes_returned
=
0
;
__u16
params
,
param_offset
,
offset
,
byte_count
,
count
;
OPEN_PSX_REQ
*
pdata
;
OPEN_PSX_RSP
*
psx_rsp
;
OPEN_PSX_REQ
*
pdata
;
OPEN_PSX_RSP
*
psx_rsp
;
cFYI
(
1
,
(
"In POSIX Create"
));
PsxCreat:
...
...
@@ -1169,8 +1167,8 @@ static __u16 convert_disposition(int disposition)
int
SMBLegacyOpen
(
const
int
xid
,
struct
cifsTconInfo
*
tcon
,
const
char
*
fileName
,
const
int
openDisposition
,
const
int
access_flags
,
const
int
create_options
,
__u16
*
netfid
,
int
*
pOplock
,
FILE_ALL_INFO
*
pfile_info
,
const
int
access_flags
,
const
int
create_options
,
__u16
*
netfid
,
int
*
pOplock
,
FILE_ALL_INFO
*
pfile_info
,
const
struct
nls_table
*
nls_codepage
,
int
remap
)
{
int
rc
=
-
EACCES
;
...
...
@@ -1221,8 +1219,8 @@ SMBLegacyOpen(const int xid, struct cifsTconInfo *tcon,
if
(
create_options
&
CREATE_OPTION_SPECIAL
)
pSMB
->
FileAttributes
=
cpu_to_le16
(
ATTR_SYSTEM
);
else
pSMB
->
FileAttributes
=
cpu_to_le16
(
0
/*ATTR_NORMAL*/
);
/* BB FIXME */
else
/* BB FIXME BB */
pSMB
->
FileAttributes
=
cpu_to_le16
(
0
/*ATTR_NORMAL*/
);
/* if ((omode & S_IWUGO) == 0)
pSMB->FileAttributes |= cpu_to_le32(ATTR_READONLY);*/
...
...
@@ -1284,8 +1282,8 @@ SMBLegacyOpen(const int xid, struct cifsTconInfo *tcon,
int
CIFSSMBOpen
(
const
int
xid
,
struct
cifsTconInfo
*
tcon
,
const
char
*
fileName
,
const
int
openDisposition
,
const
int
access_flags
,
const
int
create_options
,
__u16
*
netfid
,
int
*
pOplock
,
FILE_ALL_INFO
*
pfile_info
,
const
int
access_flags
,
const
int
create_options
,
__u16
*
netfid
,
int
*
pOplock
,
FILE_ALL_INFO
*
pfile_info
,
const
struct
nls_table
*
nls_codepage
,
int
remap
)
{
int
rc
=
-
EACCES
;
...
...
@@ -1556,9 +1554,9 @@ CIFSSMBWrite(const int xid, struct cifsTconInfo *tcon,
}
/* else setting file size with write of zero bytes */
if
(
wct
==
14
)
byte_count
=
bytes_sent
+
1
;
/* pad */
else
/* wct == 12 */
{
else
/* wct == 12 */
byte_count
=
bytes_sent
+
5
;
/* bigger pad, smaller smb hdr */
}
pSMB
->
DataLengthLow
=
cpu_to_le16
(
bytes_sent
&
0xFFFF
);
pSMB
->
DataLengthHigh
=
cpu_to_le16
(
bytes_sent
>>
16
);
pSMB
->
hdr
.
smb_buf_length
+=
byte_count
;
...
...
@@ -1663,7 +1661,7 @@ CIFSSMBWrite2(const int xid, struct cifsTconInfo *tcon,
rc
=
-
EIO
;
*
nbytes
=
0
;
}
else
{
WRITE_RSP
*
pSMBr
=
(
WRITE_RSP
*
)
iov
[
0
].
iov_base
;
WRITE_RSP
*
pSMBr
=
(
WRITE_RSP
*
)
iov
[
0
].
iov_base
;
*
nbytes
=
le16_to_cpu
(
pSMBr
->
CountHigh
);
*
nbytes
=
(
*
nbytes
)
<<
16
;
*
nbytes
+=
le16_to_cpu
(
pSMBr
->
Count
);
...
...
@@ -1744,9 +1742,8 @@ CIFSSMBLock(const int xid, struct cifsTconInfo *tcon,
/* SMB buffer freed by function above */
}
cifs_stats_inc
(
&
tcon
->
num_locks
);
if
(
rc
)
{
if
(
rc
)
cFYI
(
1
,
(
"Send error in Lock = %d"
,
rc
));
}
/* Note: On -EAGAIN error only caller can retry on handle based calls
since file handle passed in no longer valid */
...
...
@@ -1791,7 +1788,7 @@ CIFSSMBPosixLock(const int xid, struct cifsTconInfo *tcon,
count
=
sizeof
(
struct
cifs_posix_lock
);
pSMB
->
MaxParameterCount
=
cpu_to_le16
(
2
);
pSMB
->
MaxDataCount
=
cpu_to_le16
(
1000
);
/* BB find max SMB
PDU
from sess */
pSMB
->
MaxDataCount
=
cpu_to_le16
(
1000
);
/* BB find max SMB from sess */
pSMB
->
SetupCount
=
1
;
pSMB
->
Reserved3
=
0
;
if
(
get_flag
)
...
...
@@ -1972,9 +1969,8 @@ CIFSSMBRename(const int xid, struct cifsTconInfo *tcon,
rc
=
SendReceive
(
xid
,
tcon
->
ses
,
(
struct
smb_hdr
*
)
pSMB
,
(
struct
smb_hdr
*
)
pSMBr
,
&
bytes_returned
,
0
);
cifs_stats_inc
(
&
tcon
->
num_renames
);
if
(
rc
)
{
if
(
rc
)
cFYI
(
1
,
(
"Send error in rename = %d"
,
rc
));
}
cifs_buf_release
(
pSMB
);
...
...
@@ -2016,7 +2012,7 @@ int CIFSSMBRenameOpenFile(const int xid, struct cifsTconInfo *pTcon,
data_offset
=
(
char
*
)
(
&
pSMB
->
hdr
.
Protocol
)
+
offset
;
rename_info
=
(
struct
set_file_rename
*
)
data_offset
;
pSMB
->
MaxParameterCount
=
cpu_to_le16
(
2
);
pSMB
->
MaxDataCount
=
cpu_to_le16
(
1000
);
/* BB find max SMB
PDU
from sess */
pSMB
->
MaxDataCount
=
cpu_to_le16
(
1000
);
/* BB find max SMB from sess */
pSMB
->
SetupCount
=
1
;
pSMB
->
Reserved3
=
0
;
pSMB
->
SubCommand
=
cpu_to_le16
(
TRANS2_SET_FILE_INFORMATION
);
...
...
@@ -2052,9 +2048,8 @@ int CIFSSMBRenameOpenFile(const int xid, struct cifsTconInfo *pTcon,
rc
=
SendReceive
(
xid
,
pTcon
->
ses
,
(
struct
smb_hdr
*
)
pSMB
,
(
struct
smb_hdr
*
)
pSMBr
,
&
bytes_returned
,
0
);
cifs_stats_inc
(
&
pTcon
->
num_t2renames
);
if
(
rc
)
{
if
(
rc
)
cFYI
(
1
,
(
"Send error in Rename (by file handle) = %d"
,
rc
));
}
cifs_buf_release
(
pSMB
);
...
...
@@ -2211,9 +2206,8 @@ CIFSUnixCreateSymLink(const int xid, struct cifsTconInfo *tcon,
rc
=
SendReceive
(
xid
,
tcon
->
ses
,
(
struct
smb_hdr
*
)
pSMB
,
(
struct
smb_hdr
*
)
pSMBr
,
&
bytes_returned
,
0
);
cifs_stats_inc
(
&
tcon
->
num_symlinks
);
if
(
rc
)
{
if
(
rc
)
cFYI
(
1
,
(
"Send error in SetPathInfo create symlink = %d"
,
rc
));
}
if
(
pSMB
)
cifs_buf_release
(
pSMB
);
...
...
@@ -2299,9 +2293,8 @@ CIFSUnixCreateHardLink(const int xid, struct cifsTconInfo *tcon,
rc
=
SendReceive
(
xid
,
tcon
->
ses
,
(
struct
smb_hdr
*
)
pSMB
,
(
struct
smb_hdr
*
)
pSMBr
,
&
bytes_returned
,
0
);
cifs_stats_inc
(
&
tcon
->
num_hardlinks
);
if
(
rc
)
{
if
(
rc
)
cFYI
(
1
,
(
"Send error in SetPathInfo (hard link) = %d"
,
rc
));
}
cifs_buf_release
(
pSMB
);
if
(
rc
==
-
EAGAIN
)
...
...
@@ -2370,9 +2363,9 @@ CIFSCreateHardLink(const int xid, struct cifsTconInfo *tcon,
rc
=
SendReceive
(
xid
,
tcon
->
ses
,
(
struct
smb_hdr
*
)
pSMB
,
(
struct
smb_hdr
*
)
pSMBr
,
&
bytes_returned
,
0
);
cifs_stats_inc
(
&
tcon
->
num_hardlinks
);
if
(
rc
)
{
if
(
rc
)
cFYI
(
1
,
(
"Send error in hard link (NT rename) = %d"
,
rc
));
}
cifs_buf_release
(
pSMB
);
if
(
rc
==
-
EAGAIN
)
goto
winCreateHardLinkRetry
;
...
...
@@ -2968,9 +2961,8 @@ CIFSSMBSetPosixACL(const int xid, struct cifsTconInfo *tcon,
pSMB
->
ByteCount
=
cpu_to_le16
(
byte_count
);
rc
=
SendReceive
(
xid
,
tcon
->
ses
,
(
struct
smb_hdr
*
)
pSMB
,
(
struct
smb_hdr
*
)
pSMBr
,
&
bytes_returned
,
0
);
if
(
rc
)
{
if
(
rc
)
cFYI
(
1
,
(
"Set POSIX ACL returned %d"
,
rc
));
}
setACLerrorExit:
cifs_buf_release
(
pSMB
);
...
...
@@ -2982,7 +2974,7 @@ CIFSSMBSetPosixACL(const int xid, struct cifsTconInfo *tcon,
/* BB fix tabs in this function FIXME BB */
int
CIFSGetExtAttr
(
const
int
xid
,
struct
cifsTconInfo
*
tcon
,
const
int
netfid
,
__u64
*
pExtAttrBits
,
__u64
*
pMask
)
const
int
netfid
,
__u64
*
pExtAttrBits
,
__u64
*
pMask
)
{
int
rc
=
0
;
struct
smb_t2_qfi_req
*
pSMB
=
NULL
;
...
...
@@ -3000,7 +2992,7 @@ CIFSGetExtAttr(const int xid, struct cifsTconInfo *tcon,
if
(
rc
)
return
rc
;
params
=
2
/* level */
+
2
/* fid */
;
params
=
2
/* level */
+
2
/* fid */
;
pSMB
->
t2
.
TotalDataCount
=
0
;
pSMB
->
t2
.
MaxParameterCount
=
cpu_to_le16
(
4
);
/* BB find exact max data count below from sess structure BB */
...
...
@@ -3071,7 +3063,7 @@ CIFSSMBGetCIFSACL(const int xid, struct cifsTconInfo *tcon, __u16 fid,
{
int
rc
=
0
;
int
buf_type
=
0
;
QUERY_SEC_DESC_REQ
*
pSMB
;
QUERY_SEC_DESC_REQ
*
pSMB
;
struct
kvec
iov
[
1
];
cFYI
(
1
,
(
"GetCifsACL"
));
...
...
@@ -3101,7 +3093,7 @@ CIFSSMBGetCIFSACL(const int xid, struct cifsTconInfo *tcon, __u16 fid,
if
(
rc
)
{
cFYI
(
1
,
(
"Send error in QuerySecDesc = %d"
,
rc
));
}
else
{
/* decode response */
__le32
*
parm
;
__le32
*
parm
;
__u32
parm_len
;
__u32
acl_len
;
struct
smb_com_ntransact_rsp
*
pSMBr
;
...
...
@@ -3230,8 +3222,8 @@ int SMBQueryInformation(const int xid, struct cifsTconInfo *tcon,
FILE_ALL_INFO
*
pFinfo
,
const
struct
nls_table
*
nls_codepage
,
int
remap
)
{
QUERY_INFORMATION_REQ
*
pSMB
;
QUERY_INFORMATION_RSP
*
pSMBr
;
QUERY_INFORMATION_REQ
*
pSMB
;
QUERY_INFORMATION_RSP
*
pSMBr
;
int
rc
=
0
;
int
bytes_returned
;
int
name_len
;
...
...
@@ -3263,9 +3255,11 @@ int SMBQueryInformation(const int xid, struct cifsTconInfo *tcon,
(
struct
smb_hdr
*
)
pSMBr
,
&
bytes_returned
,
0
);
if
(
rc
)
{
cFYI
(
1
,
(
"Send error in QueryInfo = %d"
,
rc
));
}
else
if
(
pFinfo
)
{
/* decode response */
}
else
if
(
pFinfo
)
{
struct
timespec
ts
;
__u32
time
=
le32_to_cpu
(
pSMBr
->
last_write_time
);
/* decode response */
/* BB FIXME - add time zone adjustment BB */
memset
(
pFinfo
,
0
,
sizeof
(
FILE_ALL_INFO
));
ts
.
tv_nsec
=
0
;
...
...
@@ -3296,7 +3290,7 @@ int SMBQueryInformation(const int xid, struct cifsTconInfo *tcon,
int
CIFSSMBQPathInfo
(
const
int
xid
,
struct
cifsTconInfo
*
tcon
,
const
unsigned
char
*
searchName
,
FILE_ALL_INFO
*
pFindData
,
FILE_ALL_INFO
*
pFindData
,
int
legacy
/* old style infolevel */
,
const
struct
nls_table
*
nls_codepage
,
int
remap
)
{
...
...
@@ -3371,10 +3365,12 @@ CIFSSMBQPathInfo(const int xid, struct cifsTconInfo *tcon,
else
if
(
pFindData
)
{
int
size
;
__u16
data_offset
=
le16_to_cpu
(
pSMBr
->
t2
.
DataOffset
);
if
(
legacy
)
/* we do not read the last field, EAsize,
fortunately since it varies by subdialect
and on Set vs. Get, is two bytes or 4
bytes depending but we don't care here */
/* On legacy responses we do not read the last field,
EAsize, fortunately since it varies by subdialect and
also note it differs on Set vs. Get, ie two bytes or 4
bytes depending but we don't care here */
if
(
legacy
)
size
=
sizeof
(
FILE_INFO_STANDARD
);
else
size
=
sizeof
(
FILE_ALL_INFO
);
...
...
@@ -3476,85 +3472,6 @@ CIFSSMBUnixQPathInfo(const int xid, struct cifsTconInfo *tcon,
return
rc
;
}
#if 0 /* function unused at present */
int CIFSFindSingle(const int xid, struct cifsTconInfo *tcon,
const char *searchName, FILE_ALL_INFO * findData,
const struct nls_table *nls_codepage)
{
/* level 257 SMB_ */
TRANSACTION2_FFIRST_REQ *pSMB = NULL;
TRANSACTION2_FFIRST_RSP *pSMBr = NULL;
int rc = 0;
int bytes_returned;
int name_len;
__u16 params, byte_count;
cFYI(1, ("In FindUnique"));
findUniqueRetry:
rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
(void **) &pSMBr);
if (rc)
return rc;
if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
name_len =
cifsConvertToUCS((__le16 *) pSMB->FileName, searchName,
PATH_MAX, nls_codepage);
name_len++; /* trailing null */
name_len *= 2;
} else { /* BB improve the check for buffer overruns BB */
name_len = strnlen(searchName, PATH_MAX);
name_len++; /* trailing null */
strncpy(pSMB->FileName, searchName, name_len);
}
params = 12 + name_len /* includes null */ ;
pSMB->TotalDataCount = 0; /* no EAs */
pSMB->MaxParameterCount = cpu_to_le16(2);
pSMB->MaxDataCount = cpu_to_le16(4000); /* BB find exact max SMB PDU from sess structure BB */
pSMB->MaxSetupCount = 0;
pSMB->Reserved = 0;
pSMB->Flags = 0;
pSMB->Timeout = 0;
pSMB->Reserved2 = 0;
pSMB->ParameterOffset = cpu_to_le16(
offsetof(struct smb_com_transaction2_ffirst_req, InformationLevel)-4);
pSMB->DataCount = 0;
pSMB->DataOffset = 0;
pSMB->SetupCount = 1; /* one byte, no need to le convert */
pSMB->Reserved3 = 0;
pSMB->SubCommand = cpu_to_le16(TRANS2_FIND_FIRST);
byte_count = params + 1 /* pad */ ;
pSMB->TotalParameterCount = cpu_to_le16(params);
pSMB->ParameterCount = pSMB->TotalParameterCount;
pSMB->SearchAttributes =
cpu_to_le16(ATTR_READONLY | ATTR_HIDDEN | ATTR_SYSTEM |
ATTR_DIRECTORY);
pSMB->SearchCount = cpu_to_le16(16); /* BB increase */
pSMB->SearchFlags = cpu_to_le16(1);
pSMB->InformationLevel = cpu_to_le16(SMB_FIND_FILE_DIRECTORY_INFO);
pSMB->SearchStorageType = 0; /* BB what should we set this to? BB */
pSMB->hdr.smb_buf_length += byte_count;
pSMB->ByteCount = cpu_to_le16(byte_count);
rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
(struct smb_hdr *) pSMBr, &bytes_returned, 0);
if (rc) {
cFYI(1, ("Send error in FindFileDirInfo = %d", rc));
} else { /* decode response */
cifs_stats_inc(&tcon->num_ffirst);
/* BB fill in */
}
cifs_buf_release(pSMB);
if (rc == -EAGAIN)
goto findUniqueRetry;
return rc;
}
#endif /* end unused (temporarily) function */
/* xid, tcon, searchName and codepage are input parms, rest are returned */
int
CIFSFindFirst
(
const
int
xid
,
struct
cifsTconInfo
*
tcon
,
...
...
@@ -3566,7 +3483,7 @@ CIFSFindFirst(const int xid, struct cifsTconInfo *tcon,
/* level 257 SMB_ */
TRANSACTION2_FFIRST_REQ
*
pSMB
=
NULL
;
TRANSACTION2_FFIRST_RSP
*
pSMBr
=
NULL
;
T2_FFIRST_RSP_PARMS
*
parms
;
T2_FFIRST_RSP_PARMS
*
parms
;
int
rc
=
0
;
int
bytes_returned
=
0
;
int
name_len
;
...
...
@@ -3697,7 +3614,7 @@ int CIFSFindNext(const int xid, struct cifsTconInfo *tcon,
{
TRANSACTION2_FNEXT_REQ
*
pSMB
=
NULL
;
TRANSACTION2_FNEXT_RSP
*
pSMBr
=
NULL
;
T2_FNEXT_RSP_PARMS
*
parms
;
T2_FNEXT_RSP_PARMS
*
parms
;
char
*
response_data
;
int
rc
=
0
;
int
bytes_returned
,
name_len
;
...
...
@@ -3836,9 +3753,9 @@ CIFSFindClose(const int xid, struct cifsTconInfo *tcon,
pSMB
->
FileID
=
searchHandle
;
pSMB
->
ByteCount
=
0
;
rc
=
SendReceiveNoRsp
(
xid
,
tcon
->
ses
,
(
struct
smb_hdr
*
)
pSMB
,
0
);
if
(
rc
)
{
if
(
rc
)
cERROR
(
1
,
(
"Send error in FindClose = %d"
,
rc
));
}
cifs_stats_inc
(
&
tcon
->
num_fclose
);
/* Since session is dead, search handle closed on server already */
...
...
@@ -3851,7 +3768,7 @@ CIFSFindClose(const int xid, struct cifsTconInfo *tcon,
int
CIFSGetSrvInodeNumber
(
const
int
xid
,
struct
cifsTconInfo
*
tcon
,
const
unsigned
char
*
searchName
,
__u64
*
inode_number
,
__u64
*
inode_number
,
const
struct
nls_table
*
nls_codepage
,
int
remap
)
{
int
rc
=
0
;
...
...
@@ -4560,9 +4477,8 @@ CIFSSMBSetFSUnixInfo(const int xid, struct cifsTconInfo *tcon, __u64 cap)
cERROR
(
1
,
(
"Send error in SETFSUnixInfo = %d"
,
rc
));
}
else
{
/* decode response */
rc
=
validate_t2
((
struct
smb_t2_rsp
*
)
pSMBr
);
if
(
rc
)
{
if
(
rc
)
rc
=
-
EIO
;
/* bad smb */
}
}
cifs_buf_release
(
pSMB
);
...
...
@@ -4744,9 +4660,8 @@ CIFSSMBSetEOF(const int xid, struct cifsTconInfo *tcon, const char *fileName,
pSMB
->
ByteCount
=
cpu_to_le16
(
byte_count
);
rc
=
SendReceive
(
xid
,
tcon
->
ses
,
(
struct
smb_hdr
*
)
pSMB
,
(
struct
smb_hdr
*
)
pSMBr
,
&
bytes_returned
,
0
);
if
(
rc
)
{
if
(
rc
)
cFYI
(
1
,
(
"SetPathInfo (file size) returned %d"
,
rc
));
}
cifs_buf_release
(
pSMB
);
...
...
@@ -4897,9 +4812,8 @@ CIFSSMBSetFileTimes(const int xid, struct cifsTconInfo *tcon,
pSMB
->
ByteCount
=
cpu_to_le16
(
byte_count
);
memcpy
(
data_offset
,
data
,
sizeof
(
FILE_BASIC_INFO
));
rc
=
SendReceiveNoRsp
(
xid
,
tcon
->
ses
,
(
struct
smb_hdr
*
)
pSMB
,
0
);
if
(
rc
)
{
if
(
rc
)
cFYI
(
1
,
(
"Send error in Set Time (SetFileInfo) = %d"
,
rc
));
}
/* Note: On -EAGAIN error only caller can retry on handle based calls
since file handle passed in no longer valid */
...
...
@@ -4975,9 +4889,8 @@ CIFSSMBSetTimes(const int xid, struct cifsTconInfo *tcon, const char *fileName,
pSMB
->
ByteCount
=
cpu_to_le16
(
byte_count
);
rc
=
SendReceive
(
xid
,
tcon
->
ses
,
(
struct
smb_hdr
*
)
pSMB
,
(
struct
smb_hdr
*
)
pSMBr
,
&
bytes_returned
,
0
);
if
(
rc
)
{
if
(
rc
)
cFYI
(
1
,
(
"SetPathInfo (times) returned %d"
,
rc
));
}
cifs_buf_release
(
pSMB
);
...
...
@@ -5027,9 +4940,8 @@ CIFSSMBSetAttrLegacy(int xid, struct cifsTconInfo *tcon, char *fileName,
pSMB->ByteCount = cpu_to_le16(name_len + 1);
rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
(struct smb_hdr *) pSMBr, &bytes_returned, 0);
if (rc)
{
if (rc)
cFYI(1, ("Error in LegacySetAttr = %d", rc));
}
cifs_buf_release(pSMB);
...
...
@@ -5138,9 +5050,8 @@ CIFSSMBUnixSetPerms(const int xid, struct cifsTconInfo *tcon,
pSMB
->
ByteCount
=
cpu_to_le16
(
byte_count
);
rc
=
SendReceive
(
xid
,
tcon
->
ses
,
(
struct
smb_hdr
*
)
pSMB
,
(
struct
smb_hdr
*
)
pSMBr
,
&
bytes_returned
,
0
);
if
(
rc
)
{
if
(
rc
)
cFYI
(
1
,
(
"SetPathInfo (perms) returned %d"
,
rc
));
}
if
(
pSMB
)
cifs_buf_release
(
pSMB
);
...
...
@@ -5615,9 +5526,8 @@ CIFSSMBSetEA(const int xid, struct cifsTconInfo *tcon, const char *fileName,
pSMB
->
ByteCount
=
cpu_to_le16
(
byte_count
);
rc
=
SendReceive
(
xid
,
tcon
->
ses
,
(
struct
smb_hdr
*
)
pSMB
,
(
struct
smb_hdr
*
)
pSMBr
,
&
bytes_returned
,
0
);
if
(
rc
)
{
if
(
rc
)
cFYI
(
1
,
(
"SetPathInfo (EA) returned %d"
,
rc
));
}
cifs_buf_release
(
pSMB
);
...
...
fs/cifs/dir.c
浏览文件 @
ad7a2926
...
...
@@ -3,7 +3,7 @@
*
* vfs operations that deal with dentries
*
* Copyright (C) International Business Machines Corp., 2002,200
7
* Copyright (C) International Business Machines Corp., 2002,200
8
* Author(s): Steve French (sfrench@us.ibm.com)
*
* This library is free software; you can redistribute it and/or modify
...
...
@@ -111,16 +111,6 @@ build_path_from_dentry(struct dentry *direntry)
return
full_path
;
}
/* char * build_wildcard_path_from_dentry(struct dentry *direntry)
{
if(full_path == NULL)
return full_path;
full_path[namelen] = '\\';
full_path[namelen+1] = '*';
full_path[namelen+2] = 0;
BB remove above eight lines BB */
/* Inode operations in similar order to how they appear in Linux file fs.h */
int
...
...
@@ -171,9 +161,8 @@ cifs_create(struct inode *inode, struct dentry *direntry, int mode,
disposition
=
FILE_OVERWRITE_IF
;
else
if
((
oflags
&
O_CREAT
)
==
O_CREAT
)
disposition
=
FILE_OPEN_IF
;
else
{
else
cFYI
(
1
,
(
"Create flag not set in create function"
));
}
}
/* BB add processing to set equivalent of mode - e.g. via CreateX with
...
...
@@ -367,7 +356,7 @@ int cifs_mknod(struct inode *inode, struct dentry *direntry, int mode,
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_UNX_EMUL
)
{
int
oplock
=
0
;
u16
fileHandle
;
FILE_ALL_INFO
*
buf
;
FILE_ALL_INFO
*
buf
;
cFYI
(
1
,
(
"sfu compat create special file"
));
...
...
@@ -534,9 +523,8 @@ cifs_d_revalidate(struct dentry *direntry, struct nameidata *nd)
int
isValid
=
1
;
if
(
direntry
->
d_inode
)
{
if
(
cifs_revalidate
(
direntry
))
{
if
(
cifs_revalidate
(
direntry
))
return
0
;
}
}
else
{
cFYI
(
1
,
(
"neg dentry 0x%p name = %s"
,
direntry
,
direntry
->
d_name
.
name
));
...
...
fs/cifs/dns_resolve.h
浏览文件 @
ad7a2926
/*
* fs/cifs/dns_resolve.h -- DNS Resolver upcall management for CIFS DFS
* Handles host name to IP address resolution
*
*
* Copyright (c) International Business Machines Corp., 2008
* Author(s): Steve French (sfrench@us.ibm.com)
*
...
...
fs/cifs/fcntl.c
浏览文件 @
ad7a2926
...
...
@@ -35,9 +35,8 @@ static __u32 convert_to_cifs_notify_flags(unsigned long fcntl_notify_flags)
/* No way on Linux VFS to ask to monitor xattr
changes (and no stream support either */
if
(
fcntl_notify_flags
&
DN_ACCESS
)
{
if
(
fcntl_notify_flags
&
DN_ACCESS
)
cifs_ntfy_flags
|=
FILE_NOTIFY_CHANGE_LAST_ACCESS
;
}
if
(
fcntl_notify_flags
&
DN_MODIFY
)
{
/* What does this mean on directories? */
cifs_ntfy_flags
|=
FILE_NOTIFY_CHANGE_LAST_WRITE
|
...
...
@@ -47,9 +46,8 @@ static __u32 convert_to_cifs_notify_flags(unsigned long fcntl_notify_flags)
cifs_ntfy_flags
|=
FILE_NOTIFY_CHANGE_CREATION
|
FILE_NOTIFY_CHANGE_LAST_WRITE
;
}
if
(
fcntl_notify_flags
&
DN_DELETE
)
{
if
(
fcntl_notify_flags
&
DN_DELETE
)
cifs_ntfy_flags
|=
FILE_NOTIFY_CHANGE_LAST_WRITE
;
}
if
(
fcntl_notify_flags
&
DN_RENAME
)
{
/* BB review this - checking various server behaviors */
cifs_ntfy_flags
|=
FILE_NOTIFY_CHANGE_DIR_NAME
|
...
...
fs/cifs/file.c
浏览文件 @
ad7a2926
...
...
@@ -353,9 +353,9 @@ static int cifs_reopen_file(struct file *file, int can_flush)
int
disposition
=
FILE_OPEN
;
__u16
netfid
;
if
(
file
->
private_data
)
{
if
(
file
->
private_data
)
pCifsFile
=
(
struct
cifsFileInfo
*
)
file
->
private_data
;
}
else
else
return
-
EBADF
;
xid
=
GetXid
();
...
...
@@ -1423,9 +1423,8 @@ static int cifs_writepage(struct page *page, struct writeback_control *wbc)
xid
=
GetXid
();
/* BB add check for wbc flags */
page_cache_get
(
page
);
if
(
!
PageUptodate
(
page
))
{
if
(
!
PageUptodate
(
page
))
cFYI
(
1
,
(
"ppw - page not up to date"
));
}
/*
* Set the "writeback" flag, and clear "dirty" in the radix tree.
...
...
@@ -1460,9 +1459,9 @@ static int cifs_commit_write(struct file *file, struct page *page,
cFYI
(
1
,
(
"commit write for page %p up to position %lld for %d"
,
page
,
position
,
to
));
spin_lock
(
&
inode
->
i_lock
);
if
(
position
>
inode
->
i_size
)
{
if
(
position
>
inode
->
i_size
)
i_size_write
(
inode
,
position
);
}
spin_unlock
(
&
inode
->
i_lock
);
if
(
!
PageUptodate
(
page
))
{
position
=
((
loff_t
)
page
->
index
<<
PAGE_CACHE_SHIFT
)
+
offset
;
...
...
@@ -1596,9 +1595,9 @@ ssize_t cifs_user_read(struct file *file, char __user *read_data,
}
open_file
=
(
struct
cifsFileInfo
*
)
file
->
private_data
;
if
((
file
->
f_flags
&
O_ACCMODE
)
==
O_WRONLY
)
{
if
((
file
->
f_flags
&
O_ACCMODE
)
==
O_WRONLY
)
cFYI
(
1
,
(
"attempting read on write only file instance"
));
}
for
(
total_read
=
0
,
current_offset
=
read_data
;
read_size
>
total_read
;
total_read
+=
bytes_read
,
current_offset
+=
bytes_read
)
{
...
...
@@ -1625,9 +1624,8 @@ ssize_t cifs_user_read(struct file *file, char __user *read_data,
smb_read_data
+
4
/* RFC1001 length field */
+
le16_to_cpu
(
pSMBr
->
DataOffset
),
bytes_read
))
{
bytes_read
))
rc
=
-
EFAULT
;
}
if
(
buf_type
==
CIFS_SMALL_BUFFER
)
cifs_small_buf_release
(
smb_read_data
);
...
...
@@ -2026,7 +2024,7 @@ int is_size_safe_to_change(struct cifsInodeInfo *cifsInode, __u64 end_of_file)
struct
cifs_sb_info
*
cifs_sb
;
cifs_sb
=
CIFS_SB
(
cifsInode
->
vfs_inode
.
i_sb
);
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_DIRECT_IO
)
{
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_DIRECT_IO
)
{
/* since no page cache to corrupt on directio
we can change size safely */
return
1
;
...
...
fs/cifs/inode.c
浏览文件 @
ad7a2926
...
...
@@ -490,9 +490,9 @@ int cifs_get_inode_info(struct inode **pinode,
if
(
decode_sfu_inode
(
inode
,
le64_to_cpu
(
pfindData
->
EndOfFile
),
search_path
,
cifs_sb
,
xid
))
{
cifs_sb
,
xid
))
cFYI
(
1
,
(
"Unrecognized sfu inode type"
));
}
cFYI
(
1
,
(
"sfu mode 0%o"
,
inode
->
i_mode
));
}
else
{
inode
->
i_mode
|=
S_IFREG
;
...
...
@@ -1198,9 +1198,8 @@ int cifs_rename(struct inode *source_inode, struct dentry *source_direntry,
}
/* if we can not get memory just leave rc as EEXIST */
}
if
(
rc
)
{
if
(
rc
)
cFYI
(
1
,
(
"rename rc %d"
,
rc
));
}
if
((
rc
==
-
EIO
)
||
(
rc
==
-
EEXIST
))
{
int
oplock
=
FALSE
;
...
...
fs/cifs/ioctl.c
浏览文件 @
ad7a2926
...
...
@@ -30,7 +30,7 @@
#define CIFS_IOC_CHECKUMOUNT _IO(0xCF, 2)
int
cifs_ioctl
(
struct
inode
*
inode
,
struct
file
*
filep
,
int
cifs_ioctl
(
struct
inode
*
inode
,
struct
file
*
filep
,
unsigned
int
command
,
unsigned
long
arg
)
{
int
rc
=
-
ENOTTY
;
/* strange error - but the precedent */
...
...
fs/cifs/md4.c
浏览文件 @
ad7a2926
...
...
@@ -56,7 +56,7 @@ lshift(__u32 x, int s)
/* this applies md4 to 64 byte chunks */
static
void
mdfour64
(
__u32
*
M
,
__u32
*
A
,
__u32
*
B
,
__u32
*
C
,
__u32
*
D
)
mdfour64
(
__u32
*
M
,
__u32
*
A
,
__u32
*
B
,
__u32
*
C
,
__u32
*
D
)
{
int
j
;
__u32
AA
,
BB
,
CC
,
DD
;
...
...
@@ -137,7 +137,7 @@ mdfour64(__u32 * M, __u32 * A, __u32 *B, __u32 * C, __u32 *D)
}
static
void
copy64
(
__u32
*
M
,
unsigned
char
*
in
)
copy64
(
__u32
*
M
,
unsigned
char
*
in
)
{
int
i
;
...
...
fs/cifs/md5.c
浏览文件 @
ad7a2926
...
...
@@ -161,7 +161,7 @@ MD5Final(unsigned char digest[16], struct MD5Context *ctx)
/* This is the central step in the MD5 algorithm. */
#define MD5STEP(f, w, x, y, z, data, s) \
(
w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x
)
(
w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x
)
/*
* The core of the MD5 algorithm, this alters an existing MD5 hash to
...
...
@@ -302,9 +302,8 @@ hmac_md5_init_limK_to_64(const unsigned char *key, int key_len,
int
i
;
/* if key is longer than 64 bytes truncate it */
if
(
key_len
>
64
)
{
if
(
key_len
>
64
)
key_len
=
64
;
}
/* start out by storing key in pads */
memset
(
ctx
->
k_ipad
,
0
,
sizeof
(
ctx
->
k_ipad
));
...
...
@@ -359,9 +358,9 @@ hmac_md5(unsigned char key[16], unsigned char *data, int data_len,
{
struct HMACMD5Context ctx;
hmac_md5_init_limK_to_64(key, 16, &ctx);
if (data_len != 0)
{
if (data_len != 0)
hmac_md5_update(data, data_len, &ctx);
}
hmac_md5_final(digest, &ctx);
}
#endif
fs/cifs/misc.c
浏览文件 @
ad7a2926
/*
* fs/cifs/misc.c
*
* Copyright (C) International Business Machines Corp., 2002,200
7
* Copyright (C) International Business Machines Corp., 2002,200
8
* Author(s): Steve French (sfrench@us.ibm.com)
*
* This library is free software; you can redistribute it and/or modify
...
...
@@ -320,9 +320,9 @@ header_assemble(struct smb_hdr *buffer, char smb_command /* command */ ,
if
(
treeCon
->
ses
)
{
if
(
treeCon
->
ses
->
capabilities
&
CAP_UNICODE
)
buffer
->
Flags2
|=
SMBFLG2_UNICODE
;
if
(
treeCon
->
ses
->
capabilities
&
CAP_STATUS32
)
{
if
(
treeCon
->
ses
->
capabilities
&
CAP_STATUS32
)
buffer
->
Flags2
|=
SMBFLG2_ERR_STATUS
;
}
/* Uid is not converted */
buffer
->
Uid
=
treeCon
->
ses
->
Suid
;
buffer
->
Mid
=
GetNextMid
(
treeCon
->
ses
->
server
);
...
...
@@ -610,7 +610,8 @@ dump_smb(struct smb_hdr *smb_buf, int smb_buf_length)
buffer
=
(
unsigned
char
*
)
smb_buf
;
for
(
i
=
0
,
j
=
0
;
i
<
smb_buf_length
;
i
++
,
j
++
)
{
if
(
i
%
8
==
0
)
{
/* have reached the beginning of line */
if
(
i
%
8
==
0
)
{
/* have reached the beginning of line */
printk
(
KERN_DEBUG
"| "
);
j
=
0
;
}
...
...
@@ -621,7 +622,8 @@ dump_smb(struct smb_hdr *smb_buf, int smb_buf_length)
else
debug_line
[
1
+
(
2
*
j
)]
=
'_'
;
if
(
i
%
8
==
7
)
{
/* reached end of line, time to print ascii */
if
(
i
%
8
==
7
)
{
/* reached end of line, time to print ascii */
debug_line
[
16
]
=
0
;
printk
(
" | %s
\n
"
,
debug_line
);
}
...
...
@@ -631,7 +633,7 @@ dump_smb(struct smb_hdr *smb_buf, int smb_buf_length)
debug_line
[
2
*
j
]
=
' '
;
debug_line
[
1
+
(
2
*
j
)]
=
' '
;
}
printk
(
" | %s
\n
"
,
debug_line
);
printk
(
" | %s
\n
"
,
debug_line
);
return
;
}
...
...
fs/cifs/netmisc.c
浏览文件 @
ad7a2926
/*
* fs/cifs/netmisc.c
*
* Copyright (c) International Business Machines Corp., 2002
* Copyright (c) International Business Machines Corp., 2002
,2008
* Author(s): Steve French (sfrench@us.ibm.com)
*
* Error mapping routines from Samba libsmb/errormap.c
...
...
@@ -253,7 +253,8 @@ static const struct {
ERRDOS
,
87
,
NT_STATUS_INVALID_PARAMETER_MIX
},
{
ERRHRD
,
ERRgeneral
,
NT_STATUS_INVALID_QUOTA_LOWER
},
{
ERRHRD
,
ERRgeneral
,
NT_STATUS_DISK_CORRUPT_ERROR
},
{
ERRDOS
,
ERRbadfile
,
NT_STATUS_OBJECT_NAME_INVALID
},
{
/* mapping changed since shell does lookup on * and expects file not found */
/* mapping changed since shell does lookup on * expects FileNotFound */
ERRDOS
,
ERRbadfile
,
NT_STATUS_OBJECT_NAME_INVALID
},
{
ERRDOS
,
ERRbadfile
,
NT_STATUS_OBJECT_NAME_NOT_FOUND
},
{
ERRDOS
,
ERRalreadyexists
,
NT_STATUS_OBJECT_NAME_COLLISION
},
{
ERRHRD
,
ERRgeneral
,
NT_STATUS_HANDLE_NOT_WAITABLE
},
{
...
...
@@ -820,7 +821,8 @@ map_smb_to_linux_error(struct smb_hdr *smb, int logErr)
/* old style errors */
/* DOS class smb error codes - map DOS */
if
(
smberrclass
==
ERRDOS
)
{
/* 1 byte field no need to byte reverse */
if
(
smberrclass
==
ERRDOS
)
{
/* 1 byte field no need to byte reverse */
for
(
i
=
0
;
i
<
sizeof
(
mapping_table_ERRDOS
)
/
...
...
@@ -834,7 +836,8 @@ map_smb_to_linux_error(struct smb_hdr *smb, int logErr)
}
/* else try next error mapping one to see if match */
}
}
else
if
(
smberrclass
==
ERRSRV
)
{
/* server class of error codes */
}
else
if
(
smberrclass
==
ERRSRV
)
{
/* server class of error codes */
for
(
i
=
0
;
i
<
sizeof
(
mapping_table_ERRSRV
)
/
...
...
@@ -922,8 +925,8 @@ struct timespec cnvrtDosUnixTm(__u16 date, __u16 time)
{
struct
timespec
ts
;
int
sec
,
min
,
days
,
month
,
year
;
SMB_TIME
*
st
=
(
SMB_TIME
*
)
&
time
;
SMB_DATE
*
sd
=
(
SMB_DATE
*
)
&
date
;
SMB_TIME
*
st
=
(
SMB_TIME
*
)
&
time
;
SMB_DATE
*
sd
=
(
SMB_DATE
*
)
&
date
;
cFYI
(
1
,
(
"date %d time %d"
,
date
,
time
));
...
...
fs/cifs/readdir.c
浏览文件 @
ad7a2926
...
...
@@ -3,7 +3,7 @@
*
* Directory search handling
*
* Copyright (C) International Business Machines Corp., 2004, 200
7
* Copyright (C) International Business Machines Corp., 2004, 200
8
* Author(s): Steve French (sfrench@us.ibm.com)
*
* This library is free software; you can redistribute it and/or modify
...
...
@@ -42,15 +42,12 @@ static void dump_cifs_file_struct(struct file *file, char *label)
cFYI
(
1
,
(
"empty cifs private file data"
));
return
;
}
if
(
cf
->
invalidHandle
)
{
if
(
cf
->
invalidHandle
)
cFYI
(
1
,
(
"invalid handle"
));
}
if
(
cf
->
srch_inf
.
endOfSearch
)
{
if
(
cf
->
srch_inf
.
endOfSearch
)
cFYI
(
1
,
(
"end of search"
));
}
if
(
cf
->
srch_inf
.
emptyDir
)
{
if
(
cf
->
srch_inf
.
emptyDir
)
cFYI
(
1
,
(
"empty dir"
));
}
}
}
#endif
/* DEBUG2 */
...
...
@@ -150,7 +147,7 @@ static void fill_in_inode(struct inode *tmp_inode, int new_buf_type,
cifs_NTtimeToUnix
(
le64_to_cpu
(
pfindData
->
ChangeTime
));
}
else
{
/* legacy, OS2 and DOS style */
/* struct timespec ts;*/
FIND_FILE_STANDARD_INFO
*
pfindData
=
FIND_FILE_STANDARD_INFO
*
pfindData
=
(
FIND_FILE_STANDARD_INFO
*
)
buf
;
tmp_inode
->
i_mtime
=
cnvrtDosUnixTm
(
...
...
@@ -198,9 +195,8 @@ static void fill_in_inode(struct inode *tmp_inode, int new_buf_type,
if
(
attr
&
ATTR_DIRECTORY
)
{
*
pobject_type
=
DT_DIR
;
/* override default perms since we do not lock dirs */
if
(
atomic_read
(
&
cifsInfo
->
inUse
)
==
0
)
{
if
(
atomic_read
(
&
cifsInfo
->
inUse
)
==
0
)
tmp_inode
->
i_mode
=
cifs_sb
->
mnt_dir_mode
;
}
tmp_inode
->
i_mode
|=
S_IFDIR
;
}
else
if
((
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_UNX_EMUL
)
&&
(
attr
&
ATTR_SYSTEM
))
{
...
...
@@ -231,9 +227,8 @@ static void fill_in_inode(struct inode *tmp_inode, int new_buf_type,
}
/* could add code here - to validate if device or weird share type? */
/* can not fill in nlink here as in qpathinfo version and Unx search */
if
(
atomic_read
(
&
cifsInfo
->
inUse
)
==
0
)
{
if
(
atomic_read
(
&
cifsInfo
->
inUse
)
==
0
)
atomic_set
(
&
cifsInfo
->
inUse
,
1
);
}
spin_lock
(
&
tmp_inode
->
i_lock
);
if
(
is_size_safe_to_change
(
cifsInfo
,
end_of_file
))
{
...
...
@@ -461,9 +456,8 @@ static int initiate_cifs_search(const int xid, struct file *file)
full_path
=
build_path_from_dentry
(
file
->
f_path
.
dentry
);
if
(
full_path
==
NULL
)
{
if
(
full_path
==
NULL
)
return
-
ENOMEM
;
}
cFYI
(
1
,
(
"Full path: %s start at: %lld"
,
full_path
,
file
->
f_pos
));
...
...
@@ -471,9 +465,9 @@ static int initiate_cifs_search(const int xid, struct file *file)
/* test for Unix extensions */
/* but now check for them on the share/mount not on the SMB session */
/* if (pTcon->ses->capabilities & CAP_UNIX) { */
if
(
pTcon
->
unix_ext
)
{
if
(
pTcon
->
unix_ext
)
cifsFile
->
srch_inf
.
info_level
=
SMB_FIND_FILE_UNIX
;
}
else
if
((
pTcon
->
ses
->
capabilities
&
else
if
((
pTcon
->
ses
->
capabilities
&
(
CAP_NT_SMBS
|
CAP_NT_FIND
))
==
0
)
{
cifsFile
->
srch_inf
.
info_level
=
SMB_FIND_FILE_INFO_STANDARD
;
}
else
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_SERVER_INUM
)
{
...
...
@@ -514,10 +508,10 @@ static int cifs_unicode_bytelen(char *str)
static
char
*
nxt_dir_entry
(
char
*
old_entry
,
char
*
end_of_smb
,
int
level
)
{
char
*
new_entry
;
FILE_DIRECTORY_INFO
*
pDirInfo
=
(
FILE_DIRECTORY_INFO
*
)
old_entry
;
FILE_DIRECTORY_INFO
*
pDirInfo
=
(
FILE_DIRECTORY_INFO
*
)
old_entry
;
if
(
level
==
SMB_FIND_FILE_INFO_STANDARD
)
{
FIND_FILE_STANDARD_INFO
*
pfData
;
FIND_FILE_STANDARD_INFO
*
pfData
;
pfData
=
(
FIND_FILE_STANDARD_INFO
*
)
pDirInfo
;
new_entry
=
old_entry
+
sizeof
(
FIND_FILE_STANDARD_INFO
)
+
...
...
@@ -553,7 +547,7 @@ static int cifs_entry_is_dot(char *current_entry, struct cifsFileInfo *cfile)
int
len
=
0
;
if
(
cfile
->
srch_inf
.
info_level
==
SMB_FIND_FILE_UNIX
)
{
FILE_UNIX_INFO
*
pFindData
=
(
FILE_UNIX_INFO
*
)
current_entry
;
FILE_UNIX_INFO
*
pFindData
=
(
FILE_UNIX_INFO
*
)
current_entry
;
filename
=
&
pFindData
->
FileName
[
0
];
if
(
cfile
->
srch_inf
.
unicode
)
{
len
=
cifs_unicode_bytelen
(
filename
);
...
...
@@ -562,30 +556,30 @@ static int cifs_entry_is_dot(char *current_entry, struct cifsFileInfo *cfile)
len
=
strnlen
(
filename
,
5
);
}
}
else
if
(
cfile
->
srch_inf
.
info_level
==
SMB_FIND_FILE_DIRECTORY_INFO
)
{
FILE_DIRECTORY_INFO
*
pFindData
=
FILE_DIRECTORY_INFO
*
pFindData
=
(
FILE_DIRECTORY_INFO
*
)
current_entry
;
filename
=
&
pFindData
->
FileName
[
0
];
len
=
le32_to_cpu
(
pFindData
->
FileNameLength
);
}
else
if
(
cfile
->
srch_inf
.
info_level
==
SMB_FIND_FILE_FULL_DIRECTORY_INFO
)
{
FILE_FULL_DIRECTORY_INFO
*
pFindData
=
FILE_FULL_DIRECTORY_INFO
*
pFindData
=
(
FILE_FULL_DIRECTORY_INFO
*
)
current_entry
;
filename
=
&
pFindData
->
FileName
[
0
];
len
=
le32_to_cpu
(
pFindData
->
FileNameLength
);
}
else
if
(
cfile
->
srch_inf
.
info_level
==
SMB_FIND_FILE_ID_FULL_DIR_INFO
)
{
SEARCH_ID_FULL_DIR_INFO
*
pFindData
=
SEARCH_ID_FULL_DIR_INFO
*
pFindData
=
(
SEARCH_ID_FULL_DIR_INFO
*
)
current_entry
;
filename
=
&
pFindData
->
FileName
[
0
];
len
=
le32_to_cpu
(
pFindData
->
FileNameLength
);
}
else
if
(
cfile
->
srch_inf
.
info_level
==
SMB_FIND_FILE_BOTH_DIRECTORY_INFO
)
{
FILE_BOTH_DIRECTORY_INFO
*
pFindData
=
FILE_BOTH_DIRECTORY_INFO
*
pFindData
=
(
FILE_BOTH_DIRECTORY_INFO
*
)
current_entry
;
filename
=
&
pFindData
->
FileName
[
0
];
len
=
le32_to_cpu
(
pFindData
->
FileNameLength
);
}
else
if
(
cfile
->
srch_inf
.
info_level
==
SMB_FIND_FILE_INFO_STANDARD
)
{
FIND_FILE_STANDARD_INFO
*
pFindData
=
FIND_FILE_STANDARD_INFO
*
pFindData
=
(
FIND_FILE_STANDARD_INFO
*
)
current_entry
;
filename
=
&
pFindData
->
FileName
[
0
];
len
=
pFindData
->
FileNameLength
;
...
...
@@ -718,7 +712,7 @@ static int find_cifs_entry(const int xid, struct cifsTconInfo *pTcon,
pos_in_buf
=
index_to_find
-
first_entry_in_buffer
;
cFYI
(
1
,
(
"found entry - pos_in_buf %d"
,
pos_in_buf
));
for
(
i
=
0
;
(
i
<
(
pos_in_buf
))
&&
(
current_entry
!=
NULL
);
i
++
)
{
for
(
i
=
0
;
(
i
<
(
pos_in_buf
))
&&
(
current_entry
!=
NULL
);
i
++
)
{
/* go entry by entry figuring out which is first */
current_entry
=
nxt_dir_entry
(
current_entry
,
end_of_smb
,
cifsFile
->
srch_inf
.
info_level
);
...
...
@@ -793,7 +787,7 @@ static int cifs_get_name_from_search_buf(struct qstr *pqst,
filename
=
&
pFindData
->
FileName
[
0
];
len
=
le32_to_cpu
(
pFindData
->
FileNameLength
);
}
else
if
(
level
==
SMB_FIND_FILE_INFO_STANDARD
)
{
FIND_FILE_STANDARD_INFO
*
pFindData
=
FIND_FILE_STANDARD_INFO
*
pFindData
=
(
FIND_FILE_STANDARD_INFO
*
)
current_entry
;
filename
=
&
pFindData
->
FileName
[
0
];
/* one byte length, no name conversion */
...
...
@@ -928,7 +922,7 @@ static int cifs_save_resume_key(const char *current_entry,
level
=
cifsFile
->
srch_inf
.
info_level
;
if
(
level
==
SMB_FIND_FILE_UNIX
)
{
FILE_UNIX_INFO
*
pFindData
=
(
FILE_UNIX_INFO
*
)
current_entry
;
FILE_UNIX_INFO
*
pFindData
=
(
FILE_UNIX_INFO
*
)
current_entry
;
filename
=
&
pFindData
->
FileName
[
0
];
if
(
cifsFile
->
srch_inf
.
unicode
)
{
...
...
fs/cifs/smbdes.c
浏览文件 @
ad7a2926
...
...
@@ -114,42 +114,42 @@ static uchar sbox[8][4][16] = {
{{
14
,
4
,
13
,
1
,
2
,
15
,
11
,
8
,
3
,
10
,
6
,
12
,
5
,
9
,
0
,
7
},
{
0
,
15
,
7
,
4
,
14
,
2
,
13
,
1
,
10
,
6
,
12
,
11
,
9
,
5
,
3
,
8
},
{
4
,
1
,
14
,
8
,
13
,
6
,
2
,
11
,
15
,
12
,
9
,
7
,
3
,
10
,
5
,
0
},
{
15
,
12
,
8
,
2
,
4
,
9
,
1
,
7
,
5
,
11
,
3
,
14
,
10
,
0
,
6
,
13
}},
{
15
,
12
,
8
,
2
,
4
,
9
,
1
,
7
,
5
,
11
,
3
,
14
,
10
,
0
,
6
,
13
}
},
{{
15
,
1
,
8
,
14
,
6
,
11
,
3
,
4
,
9
,
7
,
2
,
13
,
12
,
0
,
5
,
10
},
{
3
,
13
,
4
,
7
,
15
,
2
,
8
,
14
,
12
,
0
,
1
,
10
,
6
,
9
,
11
,
5
},
{
0
,
14
,
7
,
11
,
10
,
4
,
13
,
1
,
5
,
8
,
12
,
6
,
9
,
3
,
2
,
15
},
{
13
,
8
,
10
,
1
,
3
,
15
,
4
,
2
,
11
,
6
,
7
,
12
,
0
,
5
,
14
,
9
}},
{
13
,
8
,
10
,
1
,
3
,
15
,
4
,
2
,
11
,
6
,
7
,
12
,
0
,
5
,
14
,
9
}
},
{{
10
,
0
,
9
,
14
,
6
,
3
,
15
,
5
,
1
,
13
,
12
,
7
,
11
,
4
,
2
,
8
},
{
13
,
7
,
0
,
9
,
3
,
4
,
6
,
10
,
2
,
8
,
5
,
14
,
12
,
11
,
15
,
1
},
{
13
,
6
,
4
,
9
,
8
,
15
,
3
,
0
,
11
,
1
,
2
,
12
,
5
,
10
,
14
,
7
},
{
1
,
10
,
13
,
0
,
6
,
9
,
8
,
7
,
4
,
15
,
14
,
3
,
11
,
5
,
2
,
12
}},
{
1
,
10
,
13
,
0
,
6
,
9
,
8
,
7
,
4
,
15
,
14
,
3
,
11
,
5
,
2
,
12
}
},
{{
7
,
13
,
14
,
3
,
0
,
6
,
9
,
10
,
1
,
2
,
8
,
5
,
11
,
12
,
4
,
15
},
{
13
,
8
,
11
,
5
,
6
,
15
,
0
,
3
,
4
,
7
,
2
,
12
,
1
,
10
,
14
,
9
},
{
10
,
6
,
9
,
0
,
12
,
11
,
7
,
13
,
15
,
1
,
3
,
14
,
5
,
2
,
8
,
4
},
{
3
,
15
,
0
,
6
,
10
,
1
,
13
,
8
,
9
,
4
,
5
,
11
,
12
,
7
,
2
,
14
}},
{
3
,
15
,
0
,
6
,
10
,
1
,
13
,
8
,
9
,
4
,
5
,
11
,
12
,
7
,
2
,
14
}
},
{{
2
,
12
,
4
,
1
,
7
,
10
,
11
,
6
,
8
,
5
,
3
,
15
,
13
,
0
,
14
,
9
},
{
14
,
11
,
2
,
12
,
4
,
7
,
13
,
1
,
5
,
0
,
15
,
10
,
3
,
9
,
8
,
6
},
{
4
,
2
,
1
,
11
,
10
,
13
,
7
,
8
,
15
,
9
,
12
,
5
,
6
,
3
,
0
,
14
},
{
11
,
8
,
12
,
7
,
1
,
14
,
2
,
13
,
6
,
15
,
0
,
9
,
10
,
4
,
5
,
3
}},
{
11
,
8
,
12
,
7
,
1
,
14
,
2
,
13
,
6
,
15
,
0
,
9
,
10
,
4
,
5
,
3
}
},
{{
12
,
1
,
10
,
15
,
9
,
2
,
6
,
8
,
0
,
13
,
3
,
4
,
14
,
7
,
5
,
11
},
{
10
,
15
,
4
,
2
,
7
,
12
,
9
,
5
,
6
,
1
,
13
,
14
,
0
,
11
,
3
,
8
},
{
9
,
14
,
15
,
5
,
2
,
8
,
12
,
3
,
7
,
0
,
4
,
10
,
1
,
13
,
11
,
6
},
{
4
,
3
,
2
,
12
,
9
,
5
,
15
,
10
,
11
,
14
,
1
,
7
,
6
,
0
,
8
,
13
}},
{
4
,
3
,
2
,
12
,
9
,
5
,
15
,
10
,
11
,
14
,
1
,
7
,
6
,
0
,
8
,
13
}
},
{{
4
,
11
,
2
,
14
,
15
,
0
,
8
,
13
,
3
,
12
,
9
,
7
,
5
,
10
,
6
,
1
},
{
13
,
0
,
11
,
7
,
4
,
9
,
1
,
10
,
14
,
3
,
5
,
12
,
2
,
15
,
8
,
6
},
{
1
,
4
,
11
,
13
,
12
,
3
,
7
,
14
,
10
,
15
,
6
,
8
,
0
,
5
,
9
,
2
},
{
6
,
11
,
13
,
8
,
1
,
4
,
10
,
7
,
9
,
5
,
0
,
15
,
14
,
2
,
3
,
12
}},
{
6
,
11
,
13
,
8
,
1
,
4
,
10
,
7
,
9
,
5
,
0
,
15
,
14
,
2
,
3
,
12
}
},
{{
13
,
2
,
8
,
4
,
6
,
15
,
11
,
1
,
10
,
9
,
3
,
14
,
5
,
0
,
12
,
7
},
{
1
,
15
,
13
,
8
,
10
,
3
,
7
,
4
,
12
,
5
,
6
,
11
,
0
,
14
,
9
,
2
},
{
7
,
11
,
4
,
1
,
9
,
12
,
14
,
2
,
0
,
6
,
10
,
13
,
15
,
3
,
5
,
8
},
{
2
,
1
,
14
,
7
,
4
,
10
,
8
,
13
,
15
,
12
,
9
,
0
,
3
,
5
,
6
,
11
}}
{
2
,
1
,
14
,
7
,
4
,
10
,
8
,
13
,
15
,
12
,
9
,
0
,
3
,
5
,
6
,
11
}
}
};
static
void
...
...
@@ -313,9 +313,8 @@ str_to_key(unsigned char *str, unsigned char *key)
key
[
5
]
=
((
str
[
4
]
&
0x1F
)
<<
2
)
|
(
str
[
5
]
>>
6
);
key
[
6
]
=
((
str
[
5
]
&
0x3F
)
<<
1
)
|
(
str
[
6
]
>>
7
);
key
[
7
]
=
str
[
6
]
&
0x7F
;
for
(
i
=
0
;
i
<
8
;
i
++
)
{
for
(
i
=
0
;
i
<
8
;
i
++
)
key
[
i
]
=
(
key
[
i
]
<<
1
);
}
}
static
void
...
...
@@ -344,9 +343,8 @@ smbhash(unsigned char *out, unsigned char *in, unsigned char *key, int forw)
dohash
(
outb
,
inb
,
keyb
,
forw
);
for
(
i
=
0
;
i
<
8
;
i
++
)
{
for
(
i
=
0
;
i
<
8
;
i
++
)
out
[
i
]
=
0
;
}
for
(
i
=
0
;
i
<
64
;
i
++
)
{
if
(
outb
[
i
])
...
...
fs/cifs/transport.c
浏览文件 @
ad7a2926
/*
* fs/cifs/transport.c
*
* Copyright (C) International Business Machines Corp., 2002,200
7
* Copyright (C) International Business Machines Corp., 2002,200
8
* Author(s): Steve French (sfrench@us.ibm.com)
* Jeremy Allison (jra@samba.org) 2006.
*
...
...
@@ -358,9 +358,9 @@ static int allocate_mid(struct cifsSesInfo *ses, struct smb_hdr *in_buf,
}
else
if
(
ses
->
status
!=
CifsGood
)
{
/* check if SMB session is bad because we are setting it up */
if
((
in_buf
->
Command
!=
SMB_COM_SESSION_SETUP_ANDX
)
&&
(
in_buf
->
Command
!=
SMB_COM_NEGOTIATE
))
{
(
in_buf
->
Command
!=
SMB_COM_NEGOTIATE
))
return
-
EAGAIN
;
}
/* else ok - we are setting up session */
/* else ok - we are setting up session */
}
*
ppmidQ
=
AllocMidQEntry
(
in_buf
,
ses
);
if
(
*
ppmidQ
==
NULL
)
...
...
fs/cifs/xattr.c
浏览文件 @
ad7a2926
...
...
@@ -139,9 +139,9 @@ int cifs_setxattr(struct dentry *direntry, const char *ea_name,
}
else
if
(
strncmp
(
ea_name
,
CIFS_XATTR_USER_PREFIX
,
5
)
==
0
)
{
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_NO_XATTR
)
goto
set_ea_exit
;
if
(
strncmp
(
ea_name
,
CIFS_XATTR_DOS_ATTRIB
,
14
)
==
0
)
{
if
(
strncmp
(
ea_name
,
CIFS_XATTR_DOS_ATTRIB
,
14
)
==
0
)
cFYI
(
1
,
(
"attempt to set cifs inode metadata"
));
}
ea_name
+=
5
;
/* skip past user. prefix */
rc
=
CIFSSMBSetEA
(
xid
,
pTcon
,
full_path
,
ea_name
,
ea_value
,
(
__u16
)
value_size
,
cifs_sb
->
local_nls
,
...
...
@@ -262,7 +262,7 @@ ssize_t cifs_getxattr(struct dentry *direntry, const char *ea_name,
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_MAP_SPECIAL_CHR
);
#ifdef CONFIG_CIFS_EXPERIMENTAL
else
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_CIFS_ACL
)
{
else
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_CIFS_ACL
)
{
__u16
fid
;
int
oplock
=
FALSE
;
struct
cifs_ntsd
*
pacl
=
NULL
;
...
...
@@ -303,11 +303,10 @@ ssize_t cifs_getxattr(struct dentry *direntry, const char *ea_name,
}
else
if
(
strncmp
(
ea_name
,
CIFS_XATTR_SECURITY_PREFIX
,
XATTR_SECURITY_PREFIX_LEN
)
==
0
)
{
cFYI
(
1
,
(
"Security xattr namespace not supported yet"
));
}
else
{
}
else
cFYI
(
1
,
(
"illegal xattr request %s (only user namespace supported)"
,
ea_name
));
}
/* We could add an additional check for streams ie
if proc/fs/cifs/streamstoxattr is set then
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录