[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [win-pv-devel] [PATCH 18/20] Add IOCTL_XENIFACE_LOG to dump a log message to Dom0
> -----Original Message----- > From: win-pv-devel [mailto:win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx] On > Behalf Of Owen Smith > Sent: 24 May 2016 15:21 > To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx > Cc: Owen Smith > Subject: [win-pv-devel] [PATCH 18/20] Add IOCTL_XENIFACE_LOG to dump a > log message to Dom0 > > Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx> > --- > include/xeniface_ioctls.h | 9 +++++++++ > src/xeniface/ioctl_store.c | 29 +++++++++++++++++++++++++++++ > src/xeniface/ioctls.c | 5 +++++ > src/xeniface/ioctls.h | 8 ++++++++ > 4 files changed, 51 insertions(+) > > diff --git a/include/xeniface_ioctls.h b/include/xeniface_ioctls.h > index b2631f6..d6d1f03 100644 > --- a/include/xeniface_ioctls.h > +++ b/include/xeniface_ioctls.h > @@ -369,4 +369,13 @@ typedef struct > _XENIFACE_SUSPEND_REGISTER_OUT { > #define IOCTL_XENIFACE_SHAREDINFO_GET_TIME \ > CTL_CODE(FILE_DEVICE_UNKNOWN, 0x840, METHOD_BUFFERED, > FILE_ANY_ACCESS) > > +/*! \brief Logs a message to Dom0 > + > + Input: NUL-terminated CHAR array containing the message to log > + > + Output: None > +*/ > +#define IOCTL_XENIFACE_LOG \ > + CTL_CODE(FILE_DEVICE_UNKNOWN, 0x84F, METHOD_BUFFERED, > FILE_ANY_ACCESS) > + > #endif // _XENIFACE_IOCTLS_H_ > diff --git a/src/xeniface/ioctl_store.c b/src/xeniface/ioctl_store.c > index 5bd4649..f1c816b 100644 > --- a/src/xeniface/ioctl_store.c > +++ b/src/xeniface/ioctl_store.c > @@ -91,6 +91,35 @@ __DisplayMultiSz( > > DECLSPEC_NOINLINE > NTSTATUS > +IoctlLog( > + __in PXENIFACE_FDO Fdo, > + __in PCHAR Buffer, > + __in ULONG InLen, > + __in ULONG OutLen > + ) > +{ > + NTSTATUS status; > + > + status = STATUS_INVALID_BUFFER_SIZE; > + if (InLen == 0 || OutLen != 0) > + goto fail1; > + > + status = STATUS_INVALID_PARAMETER; > + if (!__IsValidStr(Buffer, InLen)) > + goto fail2; > + Should there be a maximum length check here? I'm assuming a non-privileged user cannot get access to this ioctl but dumping an arbitrary length buffer through an I/O port is probably not something we want user-space code to be able to do regardless. Paul > + XenIfaceDebugPrint(INFO, "USER: %s\n", Buffer); > + return STATUS_SUCCESS; > + > +fail2: > + XenIfaceDebugPrint(ERROR, "Fail2\n"); > +fail1: > + XenIfaceDebugPrint(ERROR, "Fail1 (%08x)\n", status); > + return status; > +} > + > +DECLSPEC_NOINLINE > +NTSTATUS > IoctlStoreRead( > __in PXENIFACE_FDO Fdo, > __in PCHAR Buffer, > diff --git a/src/xeniface/ioctls.c b/src/xeniface/ioctls.c > index 928c2be..7f172d7 100644 > --- a/src/xeniface/ioctls.c > +++ b/src/xeniface/ioctls.c > @@ -262,6 +262,11 @@ XenIfaceIoctl( > status = IoctlSharedInfoGetTime(Fdo, Buffer, InLen, OutLen, &Irp- > >IoStatus.Information); > break; > > + // misc > + case IOCTL_XENIFACE_LOG: > + status = IoctlLog(Fdo, Buffer, InLen, OutLen); > + break; > + > default: > status = STATUS_INVALID_DEVICE_REQUEST; > break; > diff --git a/src/xeniface/ioctls.h b/src/xeniface/ioctls.h > index c1d7c0f..d08ffb4 100644 > --- a/src/xeniface/ioctls.h > +++ b/src/xeniface/ioctls.h > @@ -418,5 +418,13 @@ IoctlSharedInfoGetTime( > __out PULONG_PTR Info > ); > > +NTSTATUS > +IoctlLog( > + __in PXENIFACE_FDO Fdo, > + __in PCHAR Buffer, > + __in ULONG InLen, > + __in ULONG OutLen > + ); > + > #endif // _IOCTLS_H_ > > -- > 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 _______________________________________________ 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 |