• Latchesar Ionkov's avatar
    [PATCH] v9fs: fix corner cases when flushing request · 034b91a3
    Latchesar Ionkov authored
    When v9fs_mux_rpc sends a 9P message, it may be put in the queue of unsent
    request.  If the user process receives a signal, v9fs_mux_rpc sets the
    request error to ERREQFLUSH and assigns NULL to request's send message.  If
    the message was still in the unsent queue, v9fs_write_work would produce an
    oops while processing it.
    
    The patch makes sure that requests that are being flushed are moved to the
    pending requests queue safely.
    
    If a request is being flushed, don't remove it from the list of pending
    requests even if it receives a reply before the flush is acknoledged.  The
    request will be removed during from the Rflush handler (v9fs_mux_flush_cb).
    Signed-off-by: default avatarLatchesar Ionkov <lucho@ionkov.net>
    Cc: Eric Van Hensbergen <ericvh@ericvh.myip.org>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    034b91a3
mux.c 21.7 KB