Re: [PATCH 1/2] Possible uninitialized 'last' variable in usdt_copyin_data()

Eugene Loh <[email protected]>
Newsgroups dev.linux.lists.dtrace
Message-ID <[email protected]>
On 8/15/25 11:25, Kris Van Hees wrote:

> On Tue, Aug 12, 2025 at 06:46:05PM -0400, [email protected] wrote:
>> From: Eugene Loh <[email protected]>
>>
>> Some compilers warn:
>>
>> libcommon/usdt_parser.c: In function ???usdt_copyin_data???:
>> libcommon/usdt_parser.c:191:15: warning:
>>     ???last??? may be used uninitialized in this function [-Wmaybe-uninitialized]
>>      last->next = blk;
>>      ~~~~~~~~~~~^~~~~
>>
>> Change the "if" check to make it easier for compilers to recognize
>> that "last" will be initialized (and non-NULL even!).
> I disagree...  What compiler version reported this as a warning?  The warning
> shows a limitation of the compiler to see that last can actually never be
> used uninitialized.

OL8 with "yum update" then "make".  Looks like
gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-26.0.1)
Should I be using a different recipe?

At least in my opinion, the new code with this patch is simply cleaner.

> I don't think we should make changes like these to accomodate compielrs that
> are less advanced.  We generally expect systems to be updated to the most
> recent version of packages so that would include the compiler.
>
>> Signed-off-by: Eugene Loh <[email protected]>
>> ---
>>   libcommon/usdt_parser.c | 4 ++--
>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/libcommon/usdt_parser.c b/libcommon/usdt_parser.c
>> index 864198098..d8cb9b7ba 100644
>> --- a/libcommon/usdt_parser.c
>> +++ b/libcommon/usdt_parser.c
>> @@ -163,7 +163,7 @@ usdt_destroy_data(usdt_data_t *data)
>>   usdt_data_t *
>>   usdt_copyin_data(int in, int out, int *ok)
>>   {
>> -	usdt_data_t *first = NULL, *last;
>> +	usdt_data_t *first = NULL, *last = NULL;
>>   	size_t cnt;
>>   
>>   	*ok = 1;
>> @@ -185,7 +185,7 @@ usdt_copyin_data(int in, int out, int *ok)
>>   		if ((blk = usdt_copyin_block(in, out, ok)) == NULL)
>>   			goto err;
>>   
>> -		if (first == NULL)
>> +		if (last == NULL)
>>   			first = last = blk;
>>   		else {
>>   			last->next = blk;
>> -- 
>> 2.47.3
>>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.