lkml.org 
[lkml]   [2014]   [Aug]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.2 21/94] xen/manage: fix potential deadlock when resuming the console
    3.2.62-rc1 review patch.  If anyone has any objections, please let me know.

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

    From: David Vrabel <david.vrabel@citrix.com>

    commit 1b6478231c6f5f844185acb32045cf195028cfce upstream.

    Calling xen_console_resume() in xen_suspend() causes a warning because
    it locks irq_mapping_update_lock (a mutex) and this may sleep. If a
    userspace process is using the evtchn device then this mutex may be
    locked at the point of the stop_machine() call and
    xen_console_resume() would then deadlock.

    Resuming the console after stop_machine() returns avoids this
    deadlock.

    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    drivers/xen/manage.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    --- a/drivers/xen/manage.c
    +++ b/drivers/xen/manage.c
    @@ -93,7 +93,6 @@ static int xen_suspend(void *data)

    if (!si->cancelled) {
    xen_irq_resume();
    - xen_console_resume();
    xen_timer_resume();
    }

    @@ -149,6 +148,10 @@ static void do_suspend(void)

    err = stop_machine(xen_suspend, &si, cpumask_of(0));

    + /* Resume console as early as possible. */
    + if (!si.cancelled)
    + xen_console_resume();
    +
    dpm_resume_noirq(si.cancelled ? PMSG_THAW : PMSG_RESTORE);

    if (err) {


    \
     
     \ /
      Last update: 2014-08-04 19:21    [W:2.162 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site