@@ -179,21 +179,18 @@ impl MmioTransport {
179179            } 
180180            DRIVER_OK  if  self . device_status  == ( ACKNOWLEDGE  | DRIVER  | FEATURES_OK )  => { 
181181                self . device_status  = status; 
182-                 let  device_activated = self . locked_device ( ) . is_activated ( ) ; 
182+                 let  mut  locked_device = self . device . lock ( ) . expect ( "Poisoned lock" ) ; 
183+                 let  device_activated = locked_device. is_activated ( ) ; 
183184                if  !device_activated { 
184185                    // temporary variable needed for borrow checker 
185-                     let  activate_result = self 
186-                         . locked_device ( ) 
187-                         . activate ( self . mem . clone ( ) ,  self . interrupt . clone ( ) ) ; 
186+                     let  activate_result =
187+                         locked_device. activate ( self . mem . clone ( ) ,  self . interrupt . clone ( ) ) ; 
188188                    if  let  Err ( err)  = activate_result { 
189189                        self . device_status  |= DEVICE_NEEDS_RESET ; 
190190
191191                        // Section 2.1.2 of the specification states that we need to send a device 
192192                        // configuration change interrupt 
193-                         let  _ = self 
194-                             . locked_device ( ) 
195-                             . interrupt_trigger ( ) 
196-                             . trigger ( VirtioInterruptType :: Config ) ; 
193+                         let  _ = self . interrupt . trigger ( VirtioInterruptType :: Config ) ; 
197194
198195                        error ! ( "Failed to activate virtio device: {}" ,  err) 
199196                    } 
@@ -204,16 +201,19 @@ impl MmioTransport {
204201                self . device_status  |= FAILED ; 
205202            } 
206203            _ if  status == 0  => { 
207-                 if  self . locked_device ( ) . is_activated ( )  { 
208-                     let  mut  device_status = self . device_status ; 
209-                     let  reset_result = self . locked_device ( ) . reset ( ) ; 
210-                     match  reset_result { 
211-                         Some ( ( _interrupt_evt,  mut  _queue_evts) )  => { } 
212-                         None  => { 
213-                             device_status |= FAILED ; 
204+                 { 
205+                     let  mut  locked_device = self . device . lock ( ) . expect ( "Poisoned lock" ) ; 
206+                     if  locked_device. is_activated ( )  { 
207+                         let  mut  device_status = self . device_status ; 
208+                         let  reset_result = locked_device. reset ( ) ; 
209+                         match  reset_result { 
210+                             Some ( ( _interrupt_evt,  mut  _queue_evts) )  => { } 
211+                             None  => { 
212+                                 device_status |= FAILED ; 
213+                             } 
214214                        } 
215+                         self . device_status  = device_status; 
215216                    } 
216-                     self . device_status  = device_status; 
217217                } 
218218
219219                // If the backend device driver doesn't support reset, 
0 commit comments