Skip to content
  • Aurelien Aptel's avatar
    cifs: fix mode bits from dir listing when mounted with modefromsid · e3e056c3
    Aurelien Aptel authored
    
    
    When mounting with -o modefromsid, the mode bits are stored in an
    ACE. Directory enumeration (e.g. ls -l /mnt) triggers an SMB Query Dir
    which does not include ACEs in its response. The mode bits in this
    case are silently set to a default value of 755 instead.
    
    This patch marks the dentry created during the directory enumeration
    as needing re-evaluation (i.e. additional Query Info with ACEs) so
    that the mode bits can be properly extracted.
    
    Quick repro:
    
    $ mount.cifs //win19.test/data /mnt -o ...,modefromsid
    $ touch /mnt/foo && chmod 751 /mnt/foo
    $ stat /mnt/foo
      # reports 751 (OK)
    $ sleep 2
      # dentry older than 1s by default get invalidated
    $ ls -l /mnt
      # since dentry invalid, ls does a Query Dir
      # and reports foo as 755 (WRONG)
    
    Signed-off-by: default avatarAurelien Aptel <aaptel@suse.com>
    Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Reviewed-by: default avatarPavel Shilovsky <pshilov@microsoft.com>
    e3e056c3