Browse Source

Kernel/AHCI: Reorder complete_current_request

Clear the m_current_request before signalling the end of request.
Liav A 4 năm trước cách đây
mục cha
commit
2ae9de77bb
1 tập tin đã thay đổi với 2 bổ sung2 xóa
  1. 2 2
      Kernel/Storage/AHCIPort.cpp

+ 2 - 2
Kernel/Storage/AHCIPort.cpp

@@ -498,8 +498,9 @@ void AHCIPort::start_request(AsyncBlockDeviceRequest& request)
 void AHCIPort::complete_current_request(AsyncDeviceRequest::RequestResult result)
 void AHCIPort::complete_current_request(AsyncDeviceRequest::RequestResult result)
 {
 {
     VERIFY(m_current_request);
     VERIFY(m_current_request);
-    m_current_request->complete(result);
+    auto current_request = m_current_request;
     m_current_request.clear();
     m_current_request.clear();
+    current_request->complete(result);
 }
 }
 
 
 bool AHCIPort::spin_until_ready() const
 bool AHCIPort::spin_until_ready() const
@@ -520,7 +521,6 @@ bool AHCIPort::spin_until_ready() const
 
 
 bool AHCIPort::access_device(AsyncBlockDeviceRequest::RequestType direction, u64 lba, u8 block_count)
 bool AHCIPort::access_device(AsyncBlockDeviceRequest::RequestType direction, u64 lba, u8 block_count)
 {
 {
-    VERIFY(m_lock.is_locked());
     VERIFY(m_connected_device);
     VERIFY(m_connected_device);
     VERIFY(is_operable());
     VERIFY(is_operable());
     VERIFY(m_lock.is_locked());
     VERIFY(m_lock.is_locked());