I read the diff backward. I agree with the *actual* change, which is why I was concerned about the opposite ;-)
Best regards, Alex Ionescu On Wed, Sep 16, 2015 at 5:42 AM, Thomas Faber <[email protected]> wrote: > You mean KernelMode->UserMode in the KeWaitForSingleObject call? > The only purpose of this wait is to fulfill a user request (namely a > read operation). If the thread performing the read is terminated, > there's no reason to stick around in msfs until data is available in the > mailslot. The wait should instead be aborted and the thread allowed > to terminate, which is exactly what this change will achieve. > > > On 2015-09-16 02:27, Alex Ionescu wrote: > > I'm not convinced on the user->kernel changes Thomas. > > > > Best regards, > > Alex Ionescu > > > > On Tue, Sep 15, 2015 at 5:40 AM, <[email protected]> wrote: > >> --- trunk/reactos/drivers/filesystems/msfs/rw.c [iso-8859-1] (original) > >> +++ trunk/reactos/drivers/filesystems/msfs/rw.c [iso-8859-1] Tue Sep 15 > >> 09:40:30 2015 > >> @@ -52,16 +53,21 @@ > >> > >> Length = IoStack->Parameters.Read.Length; > >> if (Irp->MdlAddress) > >> - Buffer = MmGetSystemAddressForMdl (Irp->MdlAddress); > >> + Buffer = MmGetSystemAddressForMdlSafe(Irp->MdlAddress, > >> NormalPagePriority); > >> else > >> Buffer = Irp->UserBuffer; > >> > >> + if (Fcb->TimeOut.QuadPart == -1LL) > >> + Timeout = NULL; > >> + else > >> + Timeout = &Fcb->TimeOut; > >> + > >> Status = KeWaitForSingleObject(&Fcb->MessageEvent, > >> UserRequest, > >> - KernelMode, > >> + UserMode, > >> FALSE, > >> - &Fcb->TimeOut); > >> - if (NT_SUCCESS(Status)) > >> + Timeout); > >> + if (Status != STATUS_USER_APC) > >> { > >> if (Fcb->MessageCount > 0) > >> { > > > _______________________________________________ > Ros-dev mailing list > [email protected] > http://www.reactos.org/mailman/listinfo/ros-dev >
_______________________________________________ Ros-dev mailing list [email protected] http://www.reactos.org/mailman/listinfo/ros-dev
