On Wed, Apr 24, 2019 at 12:52:54PM +0300, Dan Carpenter wrote:
> Hello David Sterba,
>
> This is a semi-automatic email about new static checker warnings.
>
> The patch b4c7c5d50791: "btrfs: get fs_info from block group in
> write_pinned_extent_entries" from Mar 20, 2019, leads to the
> following Smatch complaint:
>
> fs/btrfs/free-space-cache.c:1052 write_pinned_extent_entries()
> warn: variable dereferenced before check 'block_group' (see line 1047)
>
> fs/btrfs/free-space-cache.c
> 1046 {
> 1047 struct btrfs_fs_info *fs_info = block_group->fs_info;
> ^^^^^^^^^^^^^^^^^^^^
> The patch adds a dereference
>
> 1048 u64 start, extent_start, extent_end, len;
> 1049 struct extent_io_tree *unpin = NULL;
> 1050 int ret;
> 1051
> 1052 if (!block_group)
> ^^^^^^^^^^^
> But the old code assumed it could be NULL.
Thanks for the report. The pointer will never be null as the caller will
pass a valid pointer, so the dereference is ok. This extra check is
redundant so I'll remove it.