From patchwork Fri Jul 5 08:36:46 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 2824007 Return-Path: X-Original-To: patchwork-kvm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 70B9F9F3EB for ; Fri, 5 Jul 2013 08:36:57 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 7681120153 for ; Fri, 5 Jul 2013 08:36:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 59BEC2012E for ; Fri, 5 Jul 2013 08:36:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757119Ab3GEIgv (ORCPT ); Fri, 5 Jul 2013 04:36:51 -0400 Received: from jacques.telenet-ops.be ([195.130.132.50]:41254 "EHLO jacques.telenet-ops.be" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757047Ab3GEIgt (ORCPT ); Fri, 5 Jul 2013 04:36:49 -0400 Received: from [192.168.1.101] ([178.119.235.68]) by jacques.telenet-ops.be with bizsmtp id wYcm1l00y1VD9XW0JYcn0o; Fri, 05 Jul 2013 10:36:47 +0200 Message-ID: <51D6859E.2040500@acm.org> Date: Fri, 05 Jul 2013 10:36:46 +0200 From: Bart Van Assche User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130620 Thunderbird/17.0.7 MIME-Version: 1.0 To: "Michael S. Tsirkin" CC: kvm-devel , Asias He , Nadav Har'El , Abel Gordon Subject: [PATCH] vhost: Avoid that vhost_work_flush() locks up Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Wake up work->done waiters even if the TIF_NEED_RESCHED task flag has been set. This patch fixes a regression introduced in commit d550dda (kernel v3.4). Signed-off-by: Bart Van Assche Reference: https://bugzilla.kernel.org/show_bug.cgi?id=60505 Cc: Michael S. Tsirkin Cc: Asias He Cc: Nadav Har'El Cc: Abel Gordon Cc: # v3.4+ --- drivers/vhost/vhost.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c index 60aa5ad..cd544ae 100644 --- a/drivers/vhost/vhost.c +++ b/drivers/vhost/vhost.c @@ -227,8 +227,16 @@ static int vhost_worker(void *data) if (work) { __set_current_state(TASK_RUNNING); work->fn(work); - if (need_resched()) + if (need_resched()) { + spin_lock_irq(&dev->work_lock); + work->done_seq = seq; + if (work->flushing) + wake_up_all(&work->done); + spin_unlock_irq(&dev->work_lock); + + work = NULL; schedule(); + } } else schedule();