aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/cifs/cifsfs.c8
-rw-r--r--fs/cifs/cifspdu.h2
-rw-r--r--fs/cifs/cifsproto.h2
-rw-r--r--fs/cifs/cifssmb.c13
-rw-r--r--fs/cifs/ioctl.c1
5 files changed, 15 insertions, 11 deletions
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index 5082fce3c566..ae48ef042977 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -559,6 +559,10 @@ struct file_operations cifs_file_ops = {
559 .flush = cifs_flush, 559 .flush = cifs_flush,
560 .mmap = cifs_file_mmap, 560 .mmap = cifs_file_mmap,
561 .sendfile = generic_file_sendfile, 561 .sendfile = generic_file_sendfile,
562#ifdef CONFIG_CIFS_POSIX
563 .ioctl = cifs_ioctl,
564#endif /* CONFIG_CIFS_POSIX */
565
562#ifdef CONFIG_CIFS_EXPERIMENTAL 566#ifdef CONFIG_CIFS_EXPERIMENTAL
563 .readv = generic_file_readv, 567 .readv = generic_file_readv,
564 .writev = generic_file_writev, 568 .writev = generic_file_writev,
@@ -579,6 +583,10 @@ struct file_operations cifs_file_direct_ops = {
579 .fsync = cifs_fsync, 583 .fsync = cifs_fsync,
580 .flush = cifs_flush, 584 .flush = cifs_flush,
581 .sendfile = generic_file_sendfile, /* BB removeme BB */ 585 .sendfile = generic_file_sendfile, /* BB removeme BB */
586#ifdef CONFIG_CIFS_POSIX
587 .ioctl = cifs_ioctl,
588#endif /* CONFIG_CIFS_POSIX */
589
582#ifdef CONFIG_CIFS_EXPERIMENTAL 590#ifdef CONFIG_CIFS_EXPERIMENTAL
583 .dir_notify = cifs_dir_notify, 591 .dir_notify = cifs_dir_notify,
584#endif /* CONFIG_CIFS_EXPERIMENTAL */ 592#endif /* CONFIG_CIFS_EXPERIMENTAL */
diff --git a/fs/cifs/cifspdu.h b/fs/cifs/cifspdu.h
index 085109d2b55e..5b352890f092 100644
--- a/fs/cifs/cifspdu.h
+++ b/fs/cifs/cifspdu.h
@@ -1258,10 +1258,8 @@ struct smb_t2_qfi_req {
1258 struct smb_hdr hdr; 1258 struct smb_hdr hdr;
1259 struct trans2_req t2; 1259 struct trans2_req t2;
1260 __u8 Pad; 1260 __u8 Pad;
1261 __u16 Pad1;
1262 __u16 Fid; 1261 __u16 Fid;
1263 __le16 InformationLevel; 1262 __le16 InformationLevel;
1264 __u16 Pad2;
1265}; 1263};
1266 1264
1267struct smb_t2_qfi_rsp { 1265struct smb_t2_qfi_rsp {
diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h
index 82ae59d7cf9d..1b0070dfc51c 100644
--- a/fs/cifs/cifsproto.h
+++ b/fs/cifs/cifsproto.h
@@ -266,6 +266,4 @@ extern int CIFSSMBSetPosixACL(const int xid, struct cifsTconInfo *tcon,
266 const struct nls_table *nls_codepage); 266 const struct nls_table *nls_codepage);
267extern int CIFSGetExtAttr(const int xid, struct cifsTconInfo *tcon, 267extern int CIFSGetExtAttr(const int xid, struct cifsTconInfo *tcon,
268 const int netfid, __u64 * pExtAttrBits, __u64 *pMask); 268 const int netfid, __u64 * pExtAttrBits, __u64 *pMask);
269extern int cifs_ioctl (struct inode * inode, struct file * filep,
270 unsigned int command, unsigned long arg);
271#endif /* _CIFSPROTO_H */ 269#endif /* _CIFSPROTO_H */
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
index 36d3c128a58b..237e3bf94bfe 100644
--- a/fs/cifs/cifssmb.c
+++ b/fs/cifs/cifssmb.c
@@ -2093,9 +2093,9 @@ GetExtAttrRetry:
2093 if (rc) 2093 if (rc)
2094 return rc; 2094 return rc;
2095 2095
2096 params = 2 /* level */ +2 /* fid */ + 2 /* rsrvd */; 2096 params = 2 /* level */ +2 /* fid */;
2097 pSMB->t2.TotalDataCount = 0; 2097 pSMB->t2.TotalDataCount = 0;
2098 pSMB->t2.MaxParameterCount = cpu_to_le16(2); 2098 pSMB->t2.MaxParameterCount = cpu_to_le16(4);
2099 /* BB find exact max data count below from sess structure BB */ 2099 /* BB find exact max data count below from sess structure BB */
2100 pSMB->t2.MaxDataCount = cpu_to_le16(4000); 2100 pSMB->t2.MaxDataCount = cpu_to_le16(4000);
2101 pSMB->t2.MaxSetupCount = 0; 2101 pSMB->t2.MaxSetupCount = 0;
@@ -2103,19 +2103,18 @@ GetExtAttrRetry:
2103 pSMB->t2.Flags = 0; 2103 pSMB->t2.Flags = 0;
2104 pSMB->t2.Timeout = 0; 2104 pSMB->t2.Timeout = 0;
2105 pSMB->t2.Reserved2 = 0; 2105 pSMB->t2.Reserved2 = 0;
2106 pSMB->t2.ParameterOffset = cpu_to_le16(offsetof( 2106 pSMB->t2.ParameterOffset = cpu_to_le16(offsetof(struct smb_t2_qfi_req,
2107 struct smb_com_transaction2_qpi_req ,InformationLevel) - 4); 2107 Fid) - 4);
2108 pSMB->t2.DataCount = 0; 2108 pSMB->t2.DataCount = 0;
2109 pSMB->t2.DataOffset = 0; 2109 pSMB->t2.DataOffset = 0;
2110 pSMB->t2.SetupCount = 1; 2110 pSMB->t2.SetupCount = 1;
2111 pSMB->t2.Reserved3 = 0; 2111 pSMB->t2.Reserved3 = 0;
2112 pSMB->t2.SubCommand = cpu_to_le16(TRANS2_QUERY_FILE_INFORMATION); 2112 pSMB->t2.SubCommand = cpu_to_le16(TRANS2_QUERY_FILE_INFORMATION);
2113 byte_count = params + 3 /* pad */ ; 2113 byte_count = params + 1 /* pad */ ;
2114 pSMB->t2.TotalParameterCount = cpu_to_le16(params); 2114 pSMB->t2.TotalParameterCount = cpu_to_le16(params);
2115 pSMB->t2.ParameterCount = pSMB->t2.TotalParameterCount; 2115 pSMB->t2.ParameterCount = pSMB->t2.TotalParameterCount;
2116 pSMB->InformationLevel = cpu_to_le16(SMB_QUERY_ATTR_FLAGS); 2116 pSMB->InformationLevel = cpu_to_le16(SMB_QUERY_ATTR_FLAGS);
2117 pSMB->Pad1 = 0; 2117 pSMB->Pad = 0;
2118 pSMB->Pad2 = 0;
2119 pSMB->Fid = netfid; 2118 pSMB->Fid = netfid;
2120 pSMB->hdr.smb_buf_length += byte_count; 2119 pSMB->hdr.smb_buf_length += byte_count;
2121 pSMB->t2.ByteCount = cpu_to_le16(byte_count); 2120 pSMB->t2.ByteCount = cpu_to_le16(byte_count);
diff --git a/fs/cifs/ioctl.c b/fs/cifs/ioctl.c
index 7b84b2bb8c4a..a4f1c34a8dc7 100644
--- a/fs/cifs/ioctl.c
+++ b/fs/cifs/ioctl.c
@@ -27,6 +27,7 @@
27#include "cifsglob.h" 27#include "cifsglob.h"
28#include "cifsproto.h" 28#include "cifsproto.h"
29#include "cifs_debug.h" 29#include "cifs_debug.h"
30#include "cifsfs.h"
30 31
31int cifs_ioctl (struct inode * inode, struct file * filep, 32int cifs_ioctl (struct inode * inode, struct file * filep,
32 unsigned int command, unsigned long arg) 33 unsigned int command, unsigned long arg)