• Zygo Blaxell's avatar
    btrfs: don't set lock_owner when locking extent buffer for reading · 97e86631
    Zygo Blaxell authored
    In 196d59ab "btrfs: switch extent buffer tree lock to rw_semaphore"
    the functions for tree read locking were rewritten, and in the process
    the read lock functions started setting eb->lock_owner = current->pid.
    Previously lock_owner was only set in tree write lock functions.
    
    Read locks are shared, so they don't have exclusive ownership of the
    underlying object, so setting lock_owner to any single value for a
    read lock makes no sense.  It's mostly harmless because write locks
    and read locks are mutually exclusive, and none of the existing code
    in btrfs (btrfs_init_new_buffer and print_eb_refs_lock) cares what
    nonsense is written in lock_owner when no writer is holding the lock.
    
    KCSAN does care, and will complain about the data race incessantly.
    Remove the assignments in the read lock functions because they're
    useless noise.
    
    Fixes: 196d59ab ("btrfs: switch extent buffer tree lock to rw_semaphore")
    CC: stable@vger.kernel.org # 5.15+
    Reviewed-by: default avatarNikolay Borisov <nborisov@suse.com>
    Reviewed-by: default avatarFilipe Manana <fdmanana@suse.com>
    Signed-off-by: default avatarZygo Blaxell <ce3g8jdj@umail.furryterror.org>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    97e86631
locking.c 6.56 KB