File tree Expand file tree Collapse file tree
src/devices/src/virtio/console Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -112,14 +112,19 @@ impl Subscriber for Console {
112112 fn process ( & mut self , event : & EpollEvent , event_manager : & mut EventManager ) {
113113 let source = event. fd ( ) ;
114114
115- let control_rxq = self . queue_events [ CONTROL_RXQ_INDEX ] . as_raw_fd ( ) ;
116- let control_txq = self . queue_events [ CONTROL_TXQ_INDEX ] . as_raw_fd ( ) ;
117- let control_rxq_control = self . control . queue_evt ( ) . as_raw_fd ( ) ;
118-
119115 let activate_evt = self . activate_evt . as_raw_fd ( ) ;
120116 let sigwinch_evt = self . sigwinch_evt . as_raw_fd ( ) ;
121117
122118 if self . is_activated ( ) {
119+ // interest_list() registers sigwinch_evt and control.queue_evt() with
120+ // epoll at creation time, but queue_events is only populated later in
121+ // activate(). If a spurious event arrives before activation, indexing
122+ // into the empty queue_events would panic — so these must stay inside
123+ // the is_activated() guard.
124+ let control_rxq = self . queue_events [ CONTROL_RXQ_INDEX ] . as_raw_fd ( ) ;
125+ let control_txq = self . queue_events [ CONTROL_TXQ_INDEX ] . as_raw_fd ( ) ;
126+ let control_rxq_control = self . control . queue_evt ( ) . as_raw_fd ( ) ;
127+
123128 let mut raise_irq = false ;
124129
125130 if source == control_txq {
You can’t perform that action at this time.
0 commit comments