From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: David Vrabel <david.vrabel@citrix.com>
Cc: Ian.Campbell@citrix.com, xen-devel@lists.xenproject.org,
linux-kernel@vger.kernel.org, JBeulich@suse.com,
boris.ostrovsky@oracle.com
Subject: Re: [PATCH 3/4] xen/manage: Guard against user-space initiated poweroff and XenBus.
Date: Mon, 31 Mar 2014 15:09:12 -0400 [thread overview]
Message-ID: <20140331190912.GA9026@phenom.dumpdata.com> (raw)
In-Reply-To: <529C6EAC.4030408@citrix.com>
On Mon, Dec 02, 2013 at 11:27:40AM +0000, David Vrabel wrote:
> On 26/11/13 16:45, Konrad Rzeszutek Wilk wrote:
> > On Thu, Nov 21, 2013 at 11:09:52AM +0000, David Vrabel wrote:
> >> On 08/11/13 17:38, Konrad Rzeszutek Wilk wrote:
> >>> There is a race case where the user does 'poweroff'
> >>> and at the same time the system admin does 'xl shutdown'.
> >>
> >> This isn't a Xen-specific problem is it? Wouldn't it be better to fix
> >> this in generic code?
> >
> > Possibly. I believe the reason for the reboot_notifier to exist is
> > to provide a means to fix the race.
> >
> >>
> >> Especially since I don't think this patch actually fixes the race
> >> completely.
> >>
> >>> --- a/drivers/xen/manage.c
> >>> +++ b/drivers/xen/manage.c
> >> [...]
> >>> @@ -222,7 +230,7 @@ static void shutdown_handler(struct xenbus_watch *watch,
> >>> };
> >>> static struct shutdown_handler *handler;
> >>>
> >>> - if (shutting_down != SHUTDOWN_INVALID)
> >>> + if (atomic_read(&shutting_down) != SHUTDOWN_INVALID)
> >>> return;
> >>
> >> In guest initiated poweroff at this time will still race with this
> >> toolstack initiated poweroff.
> >
> > No, b/c the reboot notifier would have set 'shutting_down' already.
>
> If the guest initiated power off is started here, the reboot notifier
> won't have run yet.
This is what I think you are saying:
CPU0 CPU1
'poweroff' 'shutdown_handler'
->SYSCALL_DEFINE4(reboot) -> atomic_read(&shutting_down) == SHUTDOWN_INVALID
mutex_lock(&reboot_mutex) -> do_poweroff
kernel_power_off()
-> kernel_shutdown_prepare
-> blocking_notifier_call_chain()
\- xen_system_reboot
\- atomic_set(&shutting_down, SHUTDOWN_POWEROFF);
-> atomic_set(&shutting_down, SHUTDOWN_POWEROFF);
-> orderly_poweroff(false)
-> 'poweroff' called
->SYSCALL_DEFINE4(reboot)
-> mutex_lock(&reboot_mutex)
-> system_state = SYSTEM_HALT
-> machine_halt().
What you are describing was outlined in the commit description:
"
'poweroff' and 'xl shutdown'..
Depending on the race, the system_state will be SYSTEM_RUNNING or
SYSTEM_POWER_OFF. If SYSTEM_RUNNING we just end up making
a duplicate call to 'poweroff' (while it is running).
That will fail or execute (And if executed then it will be
stuck in the reboot_mutex mutex). But nobody will care b/c the
machine is in poweroff sequence.
"
which means that this code does guard.. but not that well :-(
>
> David
next prev parent reply other threads:[~2014-03-31 19:09 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-08 17:38 [PATCH] Fixes to Linux v3.13 - bugs.xenproject.org ones. (v1) Konrad Rzeszutek Wilk
2013-11-08 17:38 ` [PATCH 1/4] xen/mcfg: Call PHYSDEVOP_pci_mmcfg_reserved for MCFG areas Konrad Rzeszutek Wilk
2013-11-08 17:38 ` Konrad Rzeszutek Wilk
2013-11-21 10:37 ` David Vrabel
2013-11-21 10:37 ` David Vrabel
2013-11-08 17:38 ` [PATCH 2/4] xen/manage: Poweroff forcefully if user-space is not yet up Konrad Rzeszutek Wilk
2013-11-20 21:11 ` Boris Ostrovsky
2013-11-20 21:11 ` Boris Ostrovsky
2013-11-21 11:33 ` David Vrabel
2013-11-21 11:33 ` David Vrabel
2013-11-26 16:47 ` Konrad Rzeszutek Wilk
2013-11-26 16:47 ` Konrad Rzeszutek Wilk
2014-04-01 15:43 ` Konrad Rzeszutek Wilk
2014-04-01 15:43 ` Konrad Rzeszutek Wilk
2013-11-08 17:38 ` Konrad Rzeszutek Wilk
2013-11-08 17:38 ` [PATCH 3/4] xen/manage: Guard against user-space initiated poweroff and XenBus Konrad Rzeszutek Wilk
2013-11-08 17:38 ` Konrad Rzeszutek Wilk
2013-11-20 21:40 ` Boris Ostrovsky
2013-11-20 21:40 ` Boris Ostrovsky
2013-11-21 11:09 ` David Vrabel
2013-11-21 11:09 ` David Vrabel
2013-11-26 16:45 ` Konrad Rzeszutek Wilk
2013-11-26 16:45 ` Konrad Rzeszutek Wilk
2013-12-02 11:27 ` David Vrabel
2014-03-31 19:09 ` Konrad Rzeszutek Wilk [this message]
2014-03-31 19:09 ` Konrad Rzeszutek Wilk
2013-12-02 11:27 ` David Vrabel
2014-04-01 13:18 ` David Vrabel
2014-04-01 13:18 ` David Vrabel
2014-04-01 14:03 ` Konrad Rzeszutek Wilk
2014-04-01 14:03 ` Konrad Rzeszutek Wilk
2013-11-08 17:38 ` [PATCH 4/4] xen/xenbus: Avoid synchronous wait on XenBus stalling shutdown/restart Konrad Rzeszutek Wilk
2013-11-08 17:38 ` Konrad Rzeszutek Wilk
2013-11-21 17:52 ` David Vrabel
2013-11-21 17:52 ` [Xen-devel] " David Vrabel
2013-11-22 9:30 ` Ian Campbell
2013-11-22 9:30 ` [Xen-devel] " Ian Campbell
2013-11-22 9:45 ` Processed: " xen
2013-11-26 16:50 ` [Xen-devel] " Konrad Rzeszutek Wilk
2013-12-02 11:41 ` David Vrabel
2013-12-02 11:41 ` [Xen-devel] " David Vrabel
2014-03-31 20:33 ` Konrad Rzeszutek Wilk
2014-03-31 20:33 ` [Xen-devel] " Konrad Rzeszutek Wilk
2014-04-01 12:53 ` David Vrabel
2014-04-01 12:53 ` [Xen-devel] " David Vrabel
2013-11-26 16:50 ` Konrad Rzeszutek Wilk
2014-01-26 1:13 ` Zhang, Yang Z
2014-01-26 1:13 ` [Xen-devel] " Zhang, Yang Z
2014-01-26 3:44 ` Konrad Rzeszutek Wilk
2014-01-26 3:44 ` [Xen-devel] " Konrad Rzeszutek Wilk
2014-04-03 11:59 ` [PATCH] Fixes to Linux v3.13 - bugs.xenproject.org ones. (v1) David Vrabel
2014-04-03 11:59 ` David Vrabel
2014-04-03 18:07 ` Konrad Rzeszutek Wilk
2014-04-03 18:07 ` Konrad Rzeszutek Wilk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140331190912.GA9026@phenom.dumpdata.com \
--to=konrad.wilk@oracle.com \
--cc=Ian.Campbell@citrix.com \
--cc=JBeulich@suse.com \
--cc=boris.ostrovsky@oracle.com \
--cc=david.vrabel@citrix.com \
--cc=linux-kernel@vger.kernel.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.