>-----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;
