lkml.org 
[lkml]   [2014]   [Oct]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.10 10/13] drbd: fix regression out of mem, failed to invoke fence-peer helper
    Date
    3.10-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Lars Ellenberg <lars.ellenberg@linbit.com>

    commit bbc1c5e8ad6dfebf9d13b8a4ccdf66c92913eac9 upstream.

    Since linux kernel 3.13, kthread_run() internally uses
    wait_for_completion_killable(). We sometimes may use kthread_run()
    while we still have a signal pending, which we used to kick our threads
    out of potentially blocking network functions, causing kthread_run() to
    mistake that as a new fatal signal and fail.

    Fix: flush_signals() before kthread_run().

    Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
    Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/block/drbd/drbd_nl.c | 6 ++++++
    1 file changed, 6 insertions(+)

    --- a/drivers/block/drbd/drbd_nl.c
    +++ b/drivers/block/drbd/drbd_nl.c
    @@ -514,6 +514,12 @@ void conn_try_outdate_peer_async(struct
    struct task_struct *opa;

    kref_get(&tconn->kref);
    + /* We may just have force_sig()'ed this thread
    + * to get it out of some blocking network function.
    + * Clear signals; otherwise kthread_run(), which internally uses
    + * wait_on_completion_killable(), will mistake our pending signal
    + * for a new fatal signal and fail. */
    + flush_signals(current);
    opa = kthread_run(_try_outdate_peer_async, tconn, "drbd_async_h");
    if (IS_ERR(opa)) {
    conn_err(tconn, "out of mem, failed to invoke fence-peer helper\n");



    \
     
     \ /
      Last update: 2014-10-08 02:01    [W:2.251 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site