[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [win-pv-devel] [PATCH] Dont include null terminator in synthesized VendorId identifier
> -----Original Message----- > From: win-pv-devel [mailto:win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx] On > Behalf Of owen.smith@xxxxxxxxxx > Sent: 30 September 2016 17:30 > To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx > Cc: Owen Smith <owen.smith@xxxxxxxxxx> > Subject: [win-pv-devel] [PATCH] Dont include null terminator in synthesized > VendorId identifier > > From: Owen Smith <owen.smith@xxxxxxxxxx> > > The VendorId identifier on SCSI page 83 is 16 bytes long (+header) > When synthesizing the inquiry data, either by global flag, or missing > xenstore data (sm-data/scsi/0x12/0x83), the NULL terminator on the > VendorId should not be included in the field. When this happens, any > query will decode 3 identifiers (VendorId, EUI64, VendorSpecific) > instead of the intended 2 (VendorId, VendorSpecific). > This breaks the XenServer VSS provider that uses the VendorSpecific > identifier to retrieve the vdi-uuid. This is only an issue when the inquiry > data is synthesized and additional identifiers are required, which is not > a common use case. > > Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx> Acked-by: Paul Durrant <paul.durrant@xxxxxxxxxx> > --- > src/xenvbd/pdoinquiry.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/src/xenvbd/pdoinquiry.c b/src/xenvbd/pdoinquiry.c > index be7dd84..4460f3d 100644 > --- a/src/xenvbd/pdoinquiry.c > +++ b/src/xenvbd/pdoinquiry.c > @@ -42,7 +42,7 @@ > #define GUID_LENGTH 36 > > // 00 00 00 00 00 00 00 00 "XENSRC 00000000" > -#define PAGE83_MIN_SIZE (4 + 4 + 16 + 1) > +#define PAGE83_MIN_SIZE (4 + 4 + 16) > > // 00 00 00 00 + GUID_LENGTH > #define VDI_ID_LENGTH (4 + GUID_LENGTH) > @@ -331,13 +331,14 @@ __HandlePage83( > PCHAR Data = (PCHAR)Srb->DataBuffer; > ULONG Length = Srb->DataTransferLength; > > - RtlZeroMemory(Data, Length); > - if (DriverParameters.SynthesizeInquiry || > + RtlZeroMemory(Data, Length); > + if (DriverParameters.SynthesizeInquiry || > Inquiry == NULL || > Inquiry->Page83.Data == NULL || > Inquiry->Page83.Length == 0) { > // generate the id page data > PVPD_IDENTIFICATION_DESCRIPTOR Id; > + CHAR Buffer[17]; > > if (Length < PAGE83_MIN_SIZE) > return FALSE; > @@ -349,7 +350,8 @@ __HandlePage83( > Id->CodeSet = VpdCodeSetAscii; > Id->IdentifierType = VpdIdentifierTypeVendorId; > Id->IdentifierLength = 16; > - (VOID) RtlStringCchPrintfA((PCHAR)Id->Identifier, 17, "XENSRC %08u", > TargetId); > + (VOID)RtlStringCchPrintfA(Buffer, 17, "XENSRC %08u", TargetId); > + RtlCopyMemory((PCHAR)Id->Identifier, Buffer, 16); > > Verbose("Target[%u] : INQUIRY Using Fake Page83 Data\n", TargetId); > > -- > 2.8.3 > > > _______________________________________________ > win-pv-devel mailing list > win-pv-devel@xxxxxxxxxxxxxxxxxxxx > https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |