[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [win-pv-devel] [PATCH 1/4] Call XenIfaceCleanup from IRP_MJ_CLEANUP
> -----Original Message----- > From: win-pv-devel [mailto:win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx] On > Behalf Of Owen Smith > Sent: 28 June 2016 11:36 > To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx > Cc: Owen Smith > Subject: [win-pv-devel] [PATCH 1/4] Call XenIfaceCleanup from > IRP_MJ_CLEANUP > > XenIfaceCleanup was not called which meant that some watches, event > channels and grant entries were not cleaned up on closing the device > handle and required explicit cleanup. Add a IRP handler to call > XenIfaceCleanup from the IRP_MJ_CLEANUP for a specific FileObject. > This ensures all watches, event channels and grant entries are > destroyed in the event of the caller crashing or not gracefullly > cleaning up objects. > > Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx> Reviewed-by: Paul Durrant <paul.durrant@xxxxxxxxxx> > --- > src/xeniface/fdo.c | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/src/xeniface/fdo.c b/src/xeniface/fdo.c > index fa14b5b..ba8d19a 100644 > --- a/src/xeniface/fdo.c > +++ b/src/xeniface/fdo.c > @@ -2300,6 +2300,25 @@ FdoDispatchSystemControl( > return status; > } > > +static DECLSPEC_NOINLINE NTSTATUS > +FdoDispatchCleanup( > + IN PXENIFACE_FDO Fdo, > + IN PIRP Irp > + ) > +{ > + PIO_STACK_LOCATION StackLocation; > + PFILE_OBJECT FileObject; > + > + StackLocation = IoGetCurrentIrpStackLocation(Irp); > + FileObject = StackLocation->FileObject; > + > + // XenIfaceCleanup requires PASSIVE_LEVEL as it can call > KeFlushQueuedDpcs > + ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL); > + XenIfaceCleanup(Fdo, FileObject); > + > + return FdoDispatchComplete(Fdo, Irp); > +} > + > NTSTATUS > FdoDispatch( > IN PXENIFACE_FDO Fdo, > @@ -2328,6 +2347,10 @@ FdoDispatch( > status = FdoDispatchSystemControl(Fdo, Irp); > break; > > + case IRP_MJ_CLEANUP: > + status = FdoDispatchCleanup(Fdo, Irp); > + break; > + > case IRP_MJ_CREATE: > case IRP_MJ_CLOSE: > case IRP_MJ_READ: > -- > 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 |