diff options
author | Benjamin Marzinski <bmarzins@redhat.com> | 2025-04-15 00:17:16 -0400 |
---|---|---|
committer | Mikulas Patocka <mpatocka@redhat.com> | 2025-04-28 13:11:33 +0200 |
commit | 5a2a6c428190f945c5cbf5791f72dbea83e97f66 (patch) | |
tree | cf8b02431e01f2f137c14c3fc557e72ff8589730 /tools/perf/util/c++/clang.cpp | |
parent | 0a533c3e4246c29d502a7e0fba0e86d80a906b04 (diff) | |
download | linux-5a2a6c428190f945c5cbf5791f72dbea83e97f66.tar.gz linux-5a2a6c428190f945c5cbf5791f72dbea83e97f66.tar.bz2 linux-5a2a6c428190f945c5cbf5791f72dbea83e97f66.zip |
dm: always update the array size in realloc_argv on success
realloc_argv() was only updating the array size if it was called with
old_argv already allocated. The first time it was called to create an
argv array, it would allocate the array but return the array size as
zero. dm_split_args() would think that it couldn't store any arguments
in the array and would call realloc_argv() again, causing it to
reallocate the initial slots (this time using GPF_KERNEL) and finally
return a size. Aside from being wasteful, this could cause deadlocks on
targets that need to process messages without starting new IO. Instead,
realloc_argv should always update the allocated array size on success.
Fixes: a0651926553c ("dm table: don't copy from a NULL pointer in realloc_argv()")
Cc: stable@vger.kernel.org
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Diffstat (limited to 'tools/perf/util/c++/clang.cpp')
0 files changed, 0 insertions, 0 deletions