btrfs: use the right number of levels for lockdep keysets
authorDavid Sterba <dsterba@suse.com>
Tue, 27 Oct 2020 14:54:08 +0000 (15:54 +0100)
committerDavid Sterba <dsterba@suse.com>
Tue, 8 Dec 2020 14:53:50 +0000 (15:53 +0100)
BTRFS_MAX_LEVEL is 8 and the keyset table is supposed to have a key for
each level, but we'll never have more than 8 levels.  The values passed
to btrfs_set_buffer_lockdep_class are always derived from a valid extent
buffer.  Set the array sizes to the right value.

Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/disk-io.c

index 646dde5..c524be5 100644 (file)
@@ -153,8 +153,8 @@ struct async_submit_bio {
 static struct btrfs_lockdep_keyset {
        u64                     id;             /* root objectid */
        const char              *name_stem;     /* lock name stem */
-       char                    names[BTRFS_MAX_LEVEL + 1][20];
-       struct lock_class_key   keys[BTRFS_MAX_LEVEL + 1];
+       char                    names[BTRFS_MAX_LEVEL][20];
+       struct lock_class_key   keys[BTRFS_MAX_LEVEL];
 } btrfs_lockdep_keysets[] = {
        { .id = BTRFS_ROOT_TREE_OBJECTID,       .name_stem = "root"     },
        { .id = BTRFS_EXTENT_TREE_OBJECTID,     .name_stem = "extent"   },