>-----Original Message-----
>From: Jonathan Cameron <[email protected]>
>Sent: 05 March 2026 10:58
>To: Shiju Jose <[email protected]>
>Cc: [email protected]; [email protected]; [email protected];
>[email protected]; [email protected]; Linuxarm
><[email protected]>
>Subject: Re: [PATCH 1/3] hw/cxl: Add fixes in maintenance and memory sparing
>
>On Fri, 27 Feb 2026 22:32:04 +0000
><[email protected]> wrote:
>
>> From: Shiju Jose <[email protected]>
>Hi Shiju,
>
>Perhaps a more specific title would help people understand quickly what type of
>fix this is?
>
>Something like:
>hw/cxl: Fix handling of component ID to not assume it is a string.
Hi Jonathan,

Thanks for the feedback. I will change the title and add fixes tag (was not sure
need fixes tag as in kernel).

Thanks,
Shiju
>
>
>>
>> Add following fixes to the commit: hw/cxl: Add support for Maintenance
>> command and Post Package Repair (PPR).
>That just wants to be a reference to the fixes tag.
>
>>
>> 1. In cxl_create_mem_sparing_event_records(), replace strncpy with
>> memcpy to solve coverity warning because full size of the array to use
>> as length in strncpy to copy the entire component id data, which is 16 bytes.
>I wouldn't necessarily focus on the coverity issue bit of this, but rather 
>that it's
>not a string so memcpy is the correct function to use.  Then flag it as as 
>being
>identified as a result of the coverity warning.
>>
>> 2. In cxl_maintenance_insert(),
>>  - replace strncpy with memcpy in to copy full data because component id is
>>    16 bytes data.
>>  - remove memset which is not required.
>>
>> Reported-by: Peter Maydell <[email protected]>
>
>The original patch is upstream, so need a Fixes tag. I can't remember how we
>mark coverity issue closures, so look for a similar patch and copy that style.
>Maybe just a Closes tag for Peter's email pointing it out.
>
>Code looks good.
>
>> Signed-off-by: Shiju Jose <[email protected]>
>> ---
>>  hw/cxl/cxl-mailbox-utils.c | 4 ++--
>>  hw/mem/cxl_type3.c         | 4 +---
>>  2 files changed, 3 insertions(+), 5 deletions(-)
>>
>> diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c
>> index c83b5f90d4..9c99422cd4 100644
>> --- a/hw/cxl/cxl-mailbox-utils.c
>> +++ b/hw/cxl/cxl-mailbox-utils.c
>> @@ -1994,8 +1994,8 @@ static void
>cxl_create_mem_sparing_event_records(CXLType3Dev *ct3d,
>>          stw_le_p(&event_rec.column, ent->column);
>>          event_rec.sub_channel = ent->sub_channel;
>>          if (ent->validity_flags & CXL_MSER_VALID_COMP_ID) {
>> -            strncpy((char *)event_rec.component_id, (char 
>> *)ent->component_id,
>> -                    sizeof(event_rec.component_id));
>> +            memcpy(event_rec.component_id, ent->component_id,
>> +                   sizeof(event_rec.component_id));
>>          }
>>      } else if (sparing_pi) {
>>          event_rec.flags = CXL_MSER_FLAGS_QUERY_RESOURCES; diff --git
>> a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index
>4739239da3..3cb1096e16
>> 100644
>> --- a/hw/mem/cxl_type3.c
>> +++ b/hw/mem/cxl_type3.c
>> @@ -1767,7 +1767,6 @@ static void cxl_maintenance_insert(CXLType3Dev
>*ct3d, uint64_t dpa,
>>          }
>>      }
>>      m = g_new0(CXLMaintenance, 1);
>> -    memset(m, 0, sizeof(*m));
>>      m->dpa = dpa;
>>      m->validity_flags = 0;
>>
>> @@ -1804,8 +1803,7 @@ static void cxl_maintenance_insert(CXLType3Dev
>*ct3d, uint64_t dpa,
>>          m->validity_flags |= CXL_MSER_VALID_SUB_CHANNEL;
>>      }
>>      if (component_id) {
>> -        strncpy((char *)m->component_id, component_id,
>> -                sizeof(m->component_id) - 1);
>> +        memcpy(m->component_id, component_id,
>> + sizeof(m->component_id));
>>          m->validity_flags |= CXL_MSER_VALID_COMP_ID;
>>          if (has_comp_id_pldm && is_comp_id_pldm) {
>>              m->validity_flags |= CXL_MSER_VALID_COMP_ID_FORMAT;


Reply via email to