• Bharath SM's avatar
    cifs: prevent updating file size from server if we have a read/write lease · e4b61f3b
    Bharath SM authored
    In cases of large directories, the readdir operation may span multiple
    round trips to retrieve contents. This introduces a potential race
    condition in case of concurrent write and readdir operations. If the
    readdir operation initiates before a write has been processed by the
    server, it may update the file size attribute to an older value.
    Address this issue by avoiding file size updates from readdir when we
    have read/write lease.
    
    Scenario:
    1) process1: open dir xyz
    2) process1: readdir instance 1 on xyz
    3) process2: create file.txt for write
    4) process2: write x bytes to file.txt
    5) process2: close file.txt
    6) process2: open file.txt for read
    7) process1: readdir 2 - overwrites file.txt inode size to 0
    8) process2: read contents of file.txt - bug, short read with 0 bytes
    
    Cc: stable@vger.kernel.org
    Reviewed-by: default avatarShyam Prasad N <sprasad@microsoft.com>
    Signed-off-by: default avatarBharath SM <bharathsm@microsoft.com>
    Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
    e4b61f3b
file.c 131 KB