diff --git a/headers/private/kernel/disk_device_manager/KDiskDeviceUtils.h b/headers/private/kernel/disk_device_manager/KDiskDeviceUtils.h index 7bce6d07c7..a8b65a5523 100644 --- a/headers/private/kernel/disk_device_manager/KDiskDeviceUtils.h +++ b/headers/private/kernel/disk_device_manager/KDiskDeviceUtils.h @@ -155,18 +155,30 @@ public: _Unlock(); } - inline AutoLocker &operator=(Lockable *lockable) + inline void SetTo(Lockable *lockable, bool alreadyLocked) { _Unlock(); fLockable = lockable; - _Lock(); + fLocked = alreadyLocked; + if (!fLocked) + _Lock(); + } + + inline void SetTo(Lockable &lockable, bool alreadyLocked) + { + SetTo(&lockable, alreadyLocked); + } + + inline AutoLocker &operator=(Lockable *lockable) + { + SetTo(lockable); + return *this; } inline AutoLocker &operator=(Lockable &lockable) { - _Unlock(); - fLockable = &lockable; - _Lock(); + SetTo(&lockable); + return *this; } inline bool IsLocked() const { return fLocked; }