Actually this change may not be enough to fix the underlying issue. I
believe there are some cases when straight calling of IoVerifyVolume
could lead to deadlock. Maybe someone can lend a helping hand here and
verify if the code is actually correct? If not I will probably get to
it myself, but it may take a few days or even weeks.
Thanks,
Filip
On Sun, May 11, 2008 at 10:04 PM, <navaraf(a)svn.reactos.org> wrote:
Author: navaraf
Date: Sun May 11 15:04:47 2008
New Revision: 33449
URL:
http://svn.reactos.org/svn/reactos?rev=33449&view=rev
Log:
Fix incorrect parameters to IoSetDeviceToVerify/IoVerifyVolume. Spotted by R.T.Sivakumar
<rtshiva(a)gmail.com>om>.
Modified:
trunk/reactos/drivers/filesystems/fastfat/create.c
Modified: trunk/reactos/drivers/filesystems/fastfat/create.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfa…
==============================================================================
--- trunk/reactos/drivers/filesystems/fastfat/create.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/fastfat/create.c [iso-8859-1] Sun May 11 15:04:47
2008
@@ -382,11 +382,10 @@
DPRINT ("Media change detected!\n");
DPRINT ("Device %p\n", DeviceExt->StorageDevice);
+ /* Find the device to verify and reset the thread field to
empty value again. */
DeviceToVerify = IoGetDeviceToVerify (PsGetCurrentThread ());
-
- IoSetDeviceToVerify (PsGetCurrentThread (),
- NULL);
- Status = IoVerifyVolume (DeviceExt->StorageDevice,
+ IoSetDeviceToVerify (PsGetCurrentThread (), NULL);
+ Status = IoVerifyVolume (DeviceToVerify,
FALSE);
}
if (!NT_SUCCESS(Status))