Skip to content
Snippets Groups Projects
  • George Joseph's avatar
    94091c7b
    stasis/control: Fix possible deadlock with swap channel · 94091c7b
    George Joseph authored
    If an error occurs during a bridge impart it's possible that
    the "bridge_after" callback might try to run before
    control_swap_channel_in_bridge has been signalled to continue.
    Since control_swap_channel_in_bridge is holding the control lock
    and the callback needs it, a deadlock will occur.
    
    * control_swap_channel_in_bridge now only holds the control
      lock while it's actually modifying the control structure and
      releases it while the bridge impart is running.
    * bridge_after_cb is now tolerant of impart failures.
    
    Change-Id: Ifd239aa93955b3eb475521f61e284fcb0da2c3b3
    94091c7b
    History
    stasis/control: Fix possible deadlock with swap channel
    George Joseph authored
    If an error occurs during a bridge impart it's possible that
    the "bridge_after" callback might try to run before
    control_swap_channel_in_bridge has been signalled to continue.
    Since control_swap_channel_in_bridge is holding the control lock
    and the callback needs it, a deadlock will occur.
    
    * control_swap_channel_in_bridge now only holds the control
      lock while it's actually modifying the control structure and
      releases it while the bridge impart is running.
    * bridge_after_cb is now tolerant of impart failures.
    
    Change-Id: Ifd239aa93955b3eb475521f61e284fcb0da2c3b3