|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH] [WHQL] 64bit OIDs: 4-byte results are a success
When buffer is >= 8-bytes, return a 8-byte buffer,
when buffer is >= 4-bytes, return a 4-byte buffer,
else, indicate 8-bytes required and indicate failure
Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
---
src/xennet/adapter.c | 47 ++++++++++++++++++++++++-----------------------
1 file changed, 24 insertions(+), 23 deletions(-)
diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
index b094519..f85ce12 100644
--- a/src/xennet/adapter.c
+++ b/src/xennet/adapter.c
@@ -1151,17 +1151,16 @@ __CopyBuffer(
IN PVOID Buffer,
IN ULONG BufferLength,
IN PVOID Source,
- IN OUT PULONG SourceLength
+ IN ULONG SourceLength
)
{
- if (BufferLength >= *SourceLength) {
- RtlCopyMemory(Buffer, Source, *SourceLength);
+ if (BufferLength >= SourceLength) {
+ RtlCopyMemory(Buffer, Source, SourceLength);
return NDIS_STATUS_SUCCESS;
- } else {
- *SourceLength = BufferLength;
- RtlCopyMemory(Buffer, Source, *SourceLength);
- return NDIS_STATUS_BUFFER_TOO_SHORT;
}
+
+ RtlCopyMemory(Buffer, Source, BufferLength);
+ return NDIS_STATUS_BUFFER_TOO_SHORT;
}
static FORCEINLINE NDIS_STATUS
@@ -1172,14 +1171,14 @@ __SetUlong(
IN OUT PULONG SourceLength
)
{
+ *SourceLength = sizeof(ULONG);
+
if (BufferLength >= sizeof(ULONG)) {
- *(PULONG)Buffer = Source;
- *SourceLength = sizeof(ULONG);
+ *(PULONG)Buffer = (ULONG)Source;
return NDIS_STATUS_SUCCESS;
- } else {
- *SourceLength = 0;
- return NDIS_STATUS_BUFFER_TOO_SHORT;
}
+
+ return NDIS_STATUS_BUFFER_TOO_SHORT;
}
static FORCEINLINE NDIS_STATUS
@@ -1190,18 +1189,20 @@ __SetUlong64(
IN OUT PULONG SourceLength
)
{
+ *SourceLength = sizeof(ULONGLONG);
+
if (BufferLength >= sizeof(ULONGLONG)) {
*(PULONGLONG)Buffer = Source;
- *SourceLength = sizeof(ULONGLONG);
return NDIS_STATUS_SUCCESS;
- } else if (BufferLength == sizeof(ULONG)) {
+ }
+
+ if (BufferLength >= sizeof(ULONG)) {
*(PULONG)Buffer = (ULONG)Source;
*SourceLength = sizeof(ULONG);
- return NDIS_STATUS_BUFFER_TOO_SHORT;
- } else {
- *SourceLength = 0;
- return NDIS_STATUS_BUFFER_TOO_SHORT;
+ return NDIS_STATUS_SUCCESS;
}
+
+ return NDIS_STATUS_BUFFER_TOO_SHORT;
}
NDIS_STATUS
@@ -1230,7 +1231,7 @@ AdapterQueryInformation(
ndisStatus = __CopyBuffer(Buffer,
BufferLength,
&Adapter->Capabilities,
- &BytesWritten);
+ BytesWritten);
break;
case OID_PNP_QUERY_POWER:
@@ -1244,7 +1245,7 @@ AdapterQueryInformation(
ndisStatus = __CopyBuffer(Buffer,
BufferLength,
&XennetSupportedOids[0],
- &BytesWritten);
+ BytesWritten);
break;
case OID_GEN_HARDWARE_STATUS:
@@ -1288,7 +1289,7 @@ AdapterQueryInformation(
ndisStatus = __CopyBuffer(Buffer,
BufferLength,
COMPANY_NAME_STR,
- &BytesWritten);
+ BytesWritten);
break;
case OID_GEN_VENDOR_DRIVER_VERSION:
@@ -1336,7 +1337,7 @@ AdapterQueryInformation(
ndisStatus = __CopyBuffer(Buffer,
BufferLength,
&EthernetAddress,
- &BytesWritten);
+ BytesWritten);
break;
case OID_802_3_CURRENT_ADDRESS:
@@ -1347,7 +1348,7 @@ AdapterQueryInformation(
ndisStatus = __CopyBuffer(Buffer,
BufferLength,
&EthernetAddress,
- &BytesWritten);
+ BytesWritten);
break;
case OID_GEN_MAXIMUM_FRAME_SIZE:
--
1.9.4.msysgit.1
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |