`last` points to fiemap::fm_extends[n], and if fiemap gets freed, we can
not reference any of its fieldis. so we could remember the check result before
freeing it.
Signed-off-by: Kefu Chai <kchai@redhat.com>
(cherry picked from commit
c3748fa7737b6c43de2dae5d957fcff01322515c)
Conflicts:
src/os/FileStore.cc
put the parameter is_last in the right place
i++;
extent++;
}
+ const bool is_last = last->fe_flags & FIEMAP_EXTENT_LAST;
free(fiemap);
- if (!(last->fe_flags & FIEMAP_EXTENT_LAST)) {
+ if (!is_last) {
uint64_t xoffset = last->fe_logical + last->fe_length - offset;
offset = last->fe_logical + last->fe_length;
len -= xoffset;