1. 25 10月, 2011 1 次提交
  2. 21 10月, 2011 1 次提交
  3. 20 10月, 2011 2 次提交
    • J
      cifs: add cifs_async_readv · e28bc5b1
      Jeff Layton 提交于
      ...which will allow cifs to do an asynchronous read call to the server.
      The caller will allocate and set up cifs_readdata for each READ_AND_X
      call that should be issued on the wire. The pages passed in are added
      to the pagecache, but not placed on the LRU list yet (as we need the
      page->lru to keep the pages on the list in the readdata).
      
      When cifsd identifies the mid, it will see that there is a special
      receive handler for the call, and use that to receive the rest of the
      frame. cifs_readv_receive will then marshal up a kvec array with
      kmapped pages from the pagecache, which eliminates one copy of the
      data. Once the data is received, the pages are added to the LRU list,
      set uptodate, and unlocked.
      Reviewed-and-Tested-by: NPavel Shilovsky <piastry@etersoft.ru>
      Signed-off-by: NJeff Layton <jlayton@redhat.com>
      e28bc5b1
    • J
      cifs: add a callback function to receive the rest of the frame · 44d22d84
      Jeff Layton 提交于
      In order to handle larger SMBs for readpages and other calls, we want
      to be able to read into a preallocated set of buffers. Rather than
      changing all of the existing code to preallocate buffers however, we
      instead add a receive callback function to the MID.
      
      cifsd will call this function once the mid_q_entry has been identified
      in order to receive the rest of the SMB. If the mid can't be identified
      or the receive pointer is unset, then the standard 3rd phase receive
      function will be called.
      Reviewed-and-Tested-by: NPavel Shilovsky <piastry@etersoft.ru>
      Signed-off-by: NJeff Layton <jlayton@redhat.com>
      44d22d84
  4. 17 10月, 2011 1 次提交
    • S
      cifs: Call id to SID mapping functions to change owner/group (try #4 repost) · a5ff3769
      Shirish Pargaonkar 提交于
      Now build security descriptor to change either owner or group at the
      server.  Initially security descriptor was built to change only
      (D)ACL, that functionality has been extended.
      
      When either an Owner or a Group of a file object at the server is changed,
      rest of security descriptor remains same (DACL etc.).
      
      To set security descriptor, it is necessary to open that file
      with permission bits of either WRITE_DAC if DACL is being modified or
      WRITE_OWNER (Take Ownership) if Owner or Group is being changed.
      
      It is the server that decides whether a set security descriptor with
      either owner or group change succeeds or not.
      Signed-off-by: NShirish Pargaonkar <shirishpargaonkar@gmail.com>
      Signed-off-by: NSteve French <smfrench@gmail.com>
      a5ff3769
  5. 14 10月, 2011 1 次提交
  6. 13 10月, 2011 2 次提交
  7. 20 9月, 2011 1 次提交
    • J
      cifs: fix possible memory corruption in CIFSFindNext · 9438fabb
      Jeff Layton 提交于
      The name_len variable in CIFSFindNext is a signed int that gets set to
      the resume_name_len in the cifs_search_info. The resume_name_len however
      is unsigned and for some infolevels is populated directly from a 32 bit
      value sent by the server.
      
      If the server sends a very large value for this, then that value could
      look negative when converted to a signed int. That would make that
      value pass the PATH_MAX check later in CIFSFindNext. The name_len would
      then be used as a length value for a memcpy. It would then be treated
      as unsigned again, and the memcpy scribbles over a ton of memory.
      
      Fix this by making the name_len an unsigned value in CIFSFindNext.
      
      Cc: <stable@kernel.org>
      Reported-by: NDarren Lavender <dcl@hppine99.gbr.hp.com>
      Signed-off-by: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NSteve French <sfrench@us.ibm.com>
      9438fabb
  8. 01 8月, 2011 3 次提交
  9. 27 5月, 2011 4 次提交
  10. 26 5月, 2011 1 次提交
  11. 23 5月, 2011 2 次提交
  12. 19 5月, 2011 6 次提交
    • J
      cifs: keep BCC in little-endian format · 820a803f
      Jeff Layton 提交于
      This is the same patch as originally posted, just with some merge
      conflicts fixed up...
      
      Currently, the ByteCount is usually converted to host-endian on receive.
      This is confusing however, as we need to keep two sets of routines for
      accessing it, and keep track of when to use each routine. Munging
      received packets like this also limits when the signature can be
      calulated.
      
      Simplify the code by keeping the received ByteCount in little-endian
      format. This allows us to eliminate a set of routines for accessing it
      and we can now drop the *_le suffixes from the accessor functions since
      that's now implied.
      
      While we're at it, switch all of the places that read the ByteCount
      directly to use the get_bcc inline which should also clean up some
      unaligned accesses.
      Signed-off-by: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NSteve French <sfrench@us.ibm.com>
      820a803f
    • S
      consistently use smb_buf_length as be32 for cifs (try 3) · be8e3b00
      Steve French 提交于
             There is one big endian field in the cifs protocol, the RFC1001
             length, which cifs code (unlike in the smb2 code) had been handling as
             u32 until the last possible moment, when it was converted to be32 (its
             native form) before sending on the wire.   To remove the last sparse
             endian warning, and to make this consistent with the smb2
             implementation  (which always treats the fields in their
             native size and endianness), convert all uses of smb_buf_length to
             be32.
      
             This version incorporates Christoph's comment about
             using be32_add_cpu, and fixes a typo in the second
             version of the patch.
      Signed-off-by: NSteve French <sfrench@us.ibm.com>
      Signed-off-by: NPavel Shilovsky <piastry@etersoft.ru>
      Signed-off-by: NSteve French <sfrench@us.ibm.com>
      be8e3b00
    • J
      cifs: fix comment in validate_t2 · fd5707e1
      Jeff Layton 提交于
      The comment about checking the bcc is in the wrong place. Also make it
      match kernel coding style.
      Reported-and-acked-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NSteve French <sfrench@us.ibm.com>
      fd5707e1
    • S
      cifs: cleanup: Rename and remove config flags · 25720873
      Shirish Pargaonkar 提交于
      Remove config flag CIFS_EXPERIMENTAL.
      Do export operations under new config flag CIFS_NFSD_EXPORT
      Signed-off-by: NShirish Pargaonkar <shirishpargaonkar@gmail.com>
      Reviewed-by: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NSteve French <sfrench@us.ibm.com>
      25720873
    • S
      Don't compile in unused reparse point symlink code · c52a9554
      Steve French 提交于
      Recent Windows versions now create symlinks more frequently
      and they do use this "reparse point" symlink mechanism.  We can of course
      do symlinks nicely to Samba and other servers which support the
      CIFS Unix Extensions and we can also do SFU symlinks and "client only"
      "MF" symlinks optionally, but for recent Windows we currently can not
      handle the common "reparse point" symlinks fully, removing the caller
      for this. We will need to extend and reenable this "reparse point" worker
      code in cifs and fix cifs_symlink to call this.  In the interim this code
      has been moved to its own config option so it is not compiled in by default
      until cifs_symlink fixed up (and tested) to use this.
      
      CC: Jeff Layton <jlayton@redhat.com>
      Signed-off-by: NSteve French <sfrench@us.ibm.com>
      c52a9554
    • S
      Remove unused CIFSSMBNotify worker function · 0eff0e26
      Steve French 提交于
      The CIFSSMBNotify worker is unused, pending changes to allow it to be called
      via inotify, so move it into its own experimental config option so it does
      not get built in, until the necessary VFS support is fixed.  It used to
      be used in dnotify, but according to Jeff, inotify needs minor changes
      before we can reenable this.
      
      CC: Jeff Layton <jlayton@redhat.com>
      Signed-off-by: NSteve French <sfrench@us.ibm.com>
      0eff0e26
  13. 12 4月, 2011 2 次提交
    • S
      [CIFS] cifs: clarify the meaning of tcpStatus == CifsGood · fd88ce93
      Steve French 提交于
      When the TCP_Server_Info is first allocated and connected, tcpStatus ==
      CifsGood means that the NEGOTIATE_PROTOCOL request has completed and the
      socket is ready for other calls. cifs_reconnect however sets tcpStatus
      to CifsGood as soon as the socket is reconnected and the optional
      RFC1001 session setup is done. We have no clear way to tell the
      difference between these two states, and we need to know this in order
      to know whether we can send an echo or not.
      
      Resolve this by adding a new statusEnum value -- CifsNeedNegotiate. When
      the socket has been connected but has not yet had a NEGOTIATE_PROTOCOL
      request done, set it to this value. Once the NEGOTIATE is done,
      cifs_negotiate_protocol will set tcpStatus to CifsGood.
      
      This also fixes and cleans the logic in cifs_reconnect and
      cifs_reconnect_tcon. The old code checked for specific states when what
      it really wants to know is whether the state has actually changed from
      CifsNeedReconnect.
      Reported-and-Tested-by: NJG <jg@cms.ac>
      Signed-off-by: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NSteve French <sfrench@us.ibm.com>
      fd88ce93
    • S
      various endian fixes to cifs · 5443d130
      Steve French 提交于
      make modules C=2 M=fs/cifs CF=-D__CHECK_ENDIAN__
      
      Found for example:
      
       CHECK   fs/cifs/cifssmb.c
      fs/cifs/cifssmb.c:728:22: warning: incorrect type in assignment (different base types)
      fs/cifs/cifssmb.c:728:22:    expected unsigned short [unsigned] [usertype] Tid
      fs/cifs/cifssmb.c:728:22:    got restricted __le16 [usertype] <noident>
      fs/cifs/cifssmb.c:1883:45: warning: incorrect type in assignment (different base types)
      fs/cifs/cifssmb.c:1883:45:    expected long long [signed] [usertype] fl_start
      fs/cifs/cifssmb.c:1883:45:    got restricted __le64 [usertype] start
      fs/cifs/cifssmb.c:1884:54: warning: restricted __le64 degrades to integer
      fs/cifs/cifssmb.c:1885:58: warning: restricted __le64 degrades to integer
      fs/cifs/cifssmb.c:1886:43: warning: incorrect type in assignment (different base types)
      fs/cifs/cifssmb.c:1886:43:    expected unsigned int [unsigned] fl_pid
      fs/cifs/cifssmb.c:1886:43:    got restricted __le32 [usertype] pid
      
      In checking new smb2 code for missing endian conversions, I noticed
      some endian errors had crept in over the last few releases into the
      cifs code (symlink, ntlmssp, posix lock, and also a less problematic warning
      in fscache).  A followon patch will address a few smb2 endian
      problems.
      Reviewed-by: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NSteve French <sfrench@us.ibm.com>
      5443d130
  14. 31 3月, 2011 1 次提交
  15. 08 2月, 2011 1 次提交
  16. 31 1月, 2011 1 次提交
    • J
      cifs: clean up some compiler warnings · 31c2659d
      Jeff Layton 提交于
      New compiler warnings that I noticed when building a patchset based
      on recent Fedora kernel:
      
      fs/cifs/cifssmb.c: In function 'CIFSSMBSetFileSize':
      fs/cifs/cifssmb.c:4813:8: warning: variable 'data_offset' set but not used
      [-Wunused-but-set-variable]
      
      fs/cifs/file.c: In function 'cifs_open':
      fs/cifs/file.c:349:24: warning: variable 'pCifsInode' set but not used
      [-Wunused-but-set-variable]
      fs/cifs/file.c: In function 'cifs_partialpagewrite':
      fs/cifs/file.c:1149:23: warning: variable 'cifs_sb' set but not used
      [-Wunused-but-set-variable]
      fs/cifs/file.c: In function 'cifs_iovec_write':
      fs/cifs/file.c:1740:9: warning: passing argument 6 of 'CIFSSMBWrite2' from
      incompatible pointer type [enabled by default]
      fs/cifs/cifsproto.h:337:12: note: expected 'unsigned int *' but argument is
      of type 'size_t *'
      
      fs/cifs/readdir.c: In function 'cifs_readdir':
      fs/cifs/readdir.c:767:23: warning: variable 'cifs_sb' set but not used
      [-Wunused-but-set-variable]
      
      fs/cifs/cifs_dfs_ref.c: In function 'cifs_dfs_d_automount':
      fs/cifs/cifs_dfs_ref.c:342:2: warning: 'rc' may be used uninitialized in
      this function [-Wuninitialized]
      fs/cifs/cifs_dfs_ref.c:278:6: note: 'rc' was declared here
      Signed-off-by: NJeff Layton <jlayton@redhat.com>
      Reviewed-by: NPavel Shilovsky <piastry@etersoft.ru>
      Signed-off-by: NSteve French <sfrench@us.ibm.com>
      31c2659d
  17. 21 1月, 2011 6 次提交
  18. 20 1月, 2011 1 次提交
    • P
      CIFS: Fix oplock break handling (try #2) · 12fed00d
      Pavel Shilovsky 提交于
      When we get oplock break notification we should set the appropriate
      value of OplockLevel field in oplock break acknowledge according to
      the oplock level held by the client in this time. As we only can have
      level II oplock or no oplock in the case of oplock break, we should be
      aware only about clientCanCacheRead field in cifsInodeInfo structure.
      
      Also fix bug connected with wrong interpretation of OplockLevel field
      during oplock break notification processing.
      Signed-off-by: NPavel Shilovsky <piastryyy@gmail.com>
      Cc: <stable@kernel.org>
      Signed-off-by: NSteve French <sfrench@us.ibm.com>
      12fed00d
  19. 10 1月, 2011 1 次提交
  20. 07 12月, 2010 1 次提交
  21. 29 10月, 2010 1 次提交
    • S
      NTLM auth and sign - Use appropriate server challenge · d3ba50b1
      Shirish Pargaonkar 提交于
      Need to have cryptkey or server challenge in smb connection
      (struct TCP_Server_Info) for ntlm and ntlmv2 auth types for which
      cryptkey (Encryption Key) is supplied just once in Negotiate Protocol
      response during an smb connection setup for all the smb sessions over
      that smb connection.
      
      For ntlmssp, cryptkey or server challenge is provided for every
      smb session in type 2 packet of ntlmssp negotiation, the cryptkey
      provided during Negotiation Protocol response before smb connection
      does not count.
      
      Rename cryptKey to cryptkey and related changes.
      Signed-off-by: NShirish Pargaonkar <shirishpargaonkar@gmail.com>
      Signed-off-by: NSteve French <sfrench@us.ibm.com>
      d3ba50b1