Skip to content
  • Jerome Marchand's avatar
    Staging: zram: Replace mutex lock by a R/W semaphore · c5bde238
    Jerome Marchand authored
    
    
    Currently, nothing protects zram table from concurrent access.
    For instance, ZRAM_UNCOMPRESSED bit can be cleared by zram_free_page()
    called from a concurrent write between the time ZRAM_UNCOMPRESSED has
    been set and the time it is tested to unmap KM_USER0 in
    zram_bvec_write(). This ultimately leads to kernel panic.
    
    Also, a read request can occurs when the page has been freed by a
    running write request and before it has been updated, leading to
    zero filled block being incorrectly read and "Read before write"
    error message.
    
    This patch replace the current mutex by a rw_semaphore. It extends
    the protection to zram table (currently, only compression buffers are
    protected) and read requests (currently, only write requests are
    protected).
    
    Signed-off-by: default avatarJerome Marchand <jmarchan@redhat.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    c5bde238