• P
    CIFS: Fix use after free of file info structures · 01332b03
    Pavel Shilovsky 提交于
    commit 1a67c415965752879e2e9fad407bc44fc7f25f23 upstream.
    
    Currently the code assumes that if a file info entry belongs
    to lists of open file handles of an inode and a tcon then
    it has non-zero reference. The recent changes broke that
    assumption when putting the last reference of the file info.
    There may be a situation when a file is being deleted but
    nothing prevents another thread to reference it again
    and start using it. This happens because we do not hold
    the inode list lock while checking the number of references
    of the file info structure. Fix this by doing the proper
    locking when doing the check.
    
    Fixes: 487317c99477d ("cifs: add spinlock for the openFileList to cifsInodeInfo")
    Fixes: cb248819d209d ("cifs: use cifsInodeInfo->open_file_lock while iterating to avoid a panic")
    Cc: Stable <stable@vger.kernel.org>
    Reviewed-by: NRonnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: NPavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: NSteve French <stfrench@microsoft.com>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    01332b03
file.c 108.7 KB