• Hidehiro Kawai's avatar
    ipmi: Don't flush messages in sender() in run-to-completion mode · 82802f96
    Hidehiro Kawai authored
    When flushing queued messages in run-to-completion mode,
    smi_event_handler() is recursively called.
    
    flush_messages()
     smi_event_handler()
      handle_transaction_done()
       deliver_recv_msg()
        ipmi_smi_msg_received()
         smi_recv_tasklet()
          sender()
           flush_messages()
            smi_event_handler()
             ...
    
    The depth of the recursive call depends on the number of queued
    messages, so it can cause a stack overflow if many messages have
    been queued.
    
    To solve this problem, this patch removes flush_messages()
    from sender()@ipmi_si_intf.c.  Instead, add flush_messages() to
    caller side of sender() if needed.  Additionally, to implement this,
    add new handler flush_messages to struct ipmi_smi_handlers.
    Signed-off-by: 's avatarHidehiro Kawai <hidehiro.kawai.ez@hitachi.com>
    
    Fixed up a comment and some spacing issues.
    Signed-off-by: 's avatarCorey Minyard <cminyard@mvista.com>
    82802f96
ipmi_smi.h 9 KB