• Steve French's avatar
    smb3: fix broken cached reads when posix locks · e4be320e
    Steve French authored
    Mandatory locking is enforced for cached reads, which violates
    default posix semantics, and also it is enforced inconsistently.
    This affected recent versions of libreoffice, and can be
    demonstrated by opening a file twice from the same client,
    locking it from handle one and trying to read from it from
    handle two (which fails, returning EACCES).
    
    There is already a mount option "forcemandatorylock"
    (which defaults to off), so with this change only when the user
    intentionally specifies "forcemandatorylock" on mount will we
    break posix semantics on read to a locked range (ie we will
    only fail in this case, if the user mounts with
    "forcemandatorylock").
    
    An earlier patch fixed the write path.
    
    Fixes: 85160e03 ("CIFS: Implement caching mechanism for mandatory brlocks")
    Cc: stable@vger.kernel.org
    Cc: Pavel Shilovsky <piastryyy@gmail.com>
    Reviewed-by: default avatarDavid Howells <dhowells@redhat.com>
    Reported-by: abartlet@samba.org
    Reported-by: default avatarKevin Ottens <kevin.ottens@enioka.com>
    Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
    e4be320e
file.c 88.1 KB