* [PATCH v1] xen-livepatch fixes for Xen 4.8
@ 2016-09-21 19:20 Konrad Rzeszutek Wilk
2016-09-21 19:20 ` [PATCH v1 1/3] xen-livepatch: Remove the 'test' part Konrad Rzeszutek Wilk
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Konrad Rzeszutek Wilk @ 2016-09-21 19:20 UTC (permalink / raw)
To: xen-devel, konrad, ross.lagerwall; +Cc: ian.jackson, wei.liu2
Hey!
Three tiny fixes that came about from various reports from
folks.
tools/misc/xen-livepatch.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
Konrad Rzeszutek Wilk (3):
xen-livepatch: Remove the 'test' part
xen-livepatch: Print the header _after_ the first livepatch hypercall
xen-livepatch: If hypervisor is not compiled with Livepatching
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v1 1/3] xen-livepatch: Remove the 'test' part
2016-09-21 19:20 [PATCH v1] xen-livepatch fixes for Xen 4.8 Konrad Rzeszutek Wilk
@ 2016-09-21 19:20 ` Konrad Rzeszutek Wilk
2016-09-22 7:20 ` Ross Lagerwall
2016-09-21 19:20 ` [PATCH v1 2/3] xen-livepatch: Print the header _after_ the first livepatch hypercall Konrad Rzeszutek Wilk
2016-09-21 19:20 ` [PATCH v1 3/3] xen-livepatch: If hypervisor is not compiled with Livepatching Konrad Rzeszutek Wilk
2 siblings, 1 reply; 12+ messages in thread
From: Konrad Rzeszutek Wilk @ 2016-09-21 19:20 UTC (permalink / raw)
To: xen-devel, konrad, ross.lagerwall
Cc: ian.jackson, wei.liu2, Konrad Rzeszutek Wilk
As it has evolved a bit and is more of a test tool.
Reported-by: Bhavesh Davda <bhavesh.davda@oracle.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
tools/misc/xen-livepatch.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/misc/xen-livepatch.c b/tools/misc/xen-livepatch.c
index 62c072e..7512a98 100644
--- a/tools/misc/xen-livepatch.c
+++ b/tools/misc/xen-livepatch.c
@@ -20,7 +20,7 @@ static xc_interface *xch;
void show_help(void)
{
fprintf(stderr,
- "xen-livepatch: live patching test tool\n"
+ "xen-livepatch: live patching tool\n"
"Usage: xen-livepatch <command> [args]\n"
" <name> An unique name of payload. Up to %d characters.\n"
"Commands:\n"
--
2.4.11
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v1 2/3] xen-livepatch: Print the header _after_ the first livepatch hypercall
2016-09-21 19:20 [PATCH v1] xen-livepatch fixes for Xen 4.8 Konrad Rzeszutek Wilk
2016-09-21 19:20 ` [PATCH v1 1/3] xen-livepatch: Remove the 'test' part Konrad Rzeszutek Wilk
@ 2016-09-21 19:20 ` Konrad Rzeszutek Wilk
2016-09-22 7:21 ` Ross Lagerwall
2016-09-21 19:20 ` [PATCH v1 3/3] xen-livepatch: If hypervisor is not compiled with Livepatching Konrad Rzeszutek Wilk
2 siblings, 1 reply; 12+ messages in thread
From: Konrad Rzeszutek Wilk @ 2016-09-21 19:20 UTC (permalink / raw)
To: xen-devel, konrad, ross.lagerwall
Cc: ian.jackson, wei.liu2, Konrad Rzeszutek Wilk
That way we can print out the header if we are sure the
hypervisor has been compiled with Xen Livepatching.
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
tools/misc/xen-livepatch.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tools/misc/xen-livepatch.c b/tools/misc/xen-livepatch.c
index 7512a98..2de04c0 100644
--- a/tools/misc/xen-livepatch.c
+++ b/tools/misc/xen-livepatch.c
@@ -91,8 +91,6 @@ static int list_func(int argc, char *argv[])
return rc;
}
- fprintf(stdout," ID | status\n"
- "----------------------------------------+------------\n");
do {
done = 0;
/* The memset is done to catch errors. */
@@ -106,6 +104,10 @@ static int list_func(int argc, char *argv[])
idx, left, errno, strerror(errno));
break;
}
+ if ( !idx )
+ fprintf(stdout," ID | status\n"
+ "----------------------------------------+------------\n");
+
for ( i = 0; i < done; i++ )
{
unsigned int j;
--
2.4.11
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v1 3/3] xen-livepatch: If hypervisor is not compiled with Livepatching
2016-09-21 19:20 [PATCH v1] xen-livepatch fixes for Xen 4.8 Konrad Rzeszutek Wilk
2016-09-21 19:20 ` [PATCH v1 1/3] xen-livepatch: Remove the 'test' part Konrad Rzeszutek Wilk
2016-09-21 19:20 ` [PATCH v1 2/3] xen-livepatch: Print the header _after_ the first livepatch hypercall Konrad Rzeszutek Wilk
@ 2016-09-21 19:20 ` Konrad Rzeszutek Wilk
2016-09-22 7:25 ` Ross Lagerwall
2 siblings, 1 reply; 12+ messages in thread
From: Konrad Rzeszutek Wilk @ 2016-09-21 19:20 UTC (permalink / raw)
To: xen-devel, konrad, ross.lagerwall
Cc: ian.jackson, wei.liu2, Konrad Rzeszutek Wilk
. print a better error code.
Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
tools/misc/xen-livepatch.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/tools/misc/xen-livepatch.c b/tools/misc/xen-livepatch.c
index 2de04c0..f11e71f07f 100644
--- a/tools/misc/xen-livepatch.c
+++ b/tools/misc/xen-livepatch.c
@@ -100,8 +100,11 @@ static int list_func(int argc, char *argv[])
rc = xc_livepatch_list(xch, MAX_LEN, idx, info, name, len, &done, &left);
if ( rc )
{
- fprintf(stderr, "Failed to list %d/%d: %d(%s)!\n",
- idx, left, errno, strerror(errno));
+ if ( errno == ENOSYS )
+ fprintf(stderr, "Hypervisor compiled without Xen Livepatching!\n");
+ else
+ fprintf(stderr, "Failed to list %d/%d: %d(%s)!\n",
+ idx, left, errno, strerror(errno));
break;
}
if ( !idx )
--
2.4.11
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v1 1/3] xen-livepatch: Remove the 'test' part
2016-09-21 19:20 ` [PATCH v1 1/3] xen-livepatch: Remove the 'test' part Konrad Rzeszutek Wilk
@ 2016-09-22 7:20 ` Ross Lagerwall
0 siblings, 0 replies; 12+ messages in thread
From: Ross Lagerwall @ 2016-09-22 7:20 UTC (permalink / raw)
To: Konrad Rzeszutek Wilk; +Cc: xen-devel, wei.liu2, ian.jackson
On 09/21/2016 08:20 PM, Konrad Rzeszutek Wilk wrote:
> As it has evolved a bit and is more of a test tool.
>
> Reported-by: Bhavesh Davda <bhavesh.davda@oracle.com>
> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> ---
> tools/misc/xen-livepatch.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/misc/xen-livepatch.c b/tools/misc/xen-livepatch.c
> index 62c072e..7512a98 100644
> --- a/tools/misc/xen-livepatch.c
> +++ b/tools/misc/xen-livepatch.c
> @@ -20,7 +20,7 @@ static xc_interface *xch;
> void show_help(void)
> {
> fprintf(stderr,
> - "xen-livepatch: live patching test tool\n"
> + "xen-livepatch: live patching tool\n"
> "Usage: xen-livepatch <command> [args]\n"
> " <name> An unique name of payload. Up to %d characters.\n"
> "Commands:\n"
>
Reviewed-by: Ross Lagerwall <ross.lagerwall@citrix.com>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v1 2/3] xen-livepatch: Print the header _after_ the first livepatch hypercall
2016-09-21 19:20 ` [PATCH v1 2/3] xen-livepatch: Print the header _after_ the first livepatch hypercall Konrad Rzeszutek Wilk
@ 2016-09-22 7:21 ` Ross Lagerwall
0 siblings, 0 replies; 12+ messages in thread
From: Ross Lagerwall @ 2016-09-22 7:21 UTC (permalink / raw)
To: Konrad Rzeszutek Wilk; +Cc: xen-devel, wei.liu2, ian.jackson
On 09/21/2016 08:20 PM, Konrad Rzeszutek Wilk wrote:
> That way we can print out the header if we are sure the
> hypervisor has been compiled with Xen Livepatching.
>
> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: Ross Lagerwall <ross.lagerwall@citrix.com>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v1 3/3] xen-livepatch: If hypervisor is not compiled with Livepatching
2016-09-21 19:20 ` [PATCH v1 3/3] xen-livepatch: If hypervisor is not compiled with Livepatching Konrad Rzeszutek Wilk
@ 2016-09-22 7:25 ` Ross Lagerwall
2016-09-22 10:12 ` Konrad Rzeszutek Wilk
0 siblings, 1 reply; 12+ messages in thread
From: Ross Lagerwall @ 2016-09-22 7:25 UTC (permalink / raw)
To: Konrad Rzeszutek Wilk; +Cc: xen-devel, wei.liu2, ian.jackson
On 09/21/2016 08:20 PM, Konrad Rzeszutek Wilk wrote:
> . print a better error code.
>
> Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> ---
> tools/misc/xen-livepatch.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/tools/misc/xen-livepatch.c b/tools/misc/xen-livepatch.c
> index 2de04c0..f11e71f07f 100644
> --- a/tools/misc/xen-livepatch.c
> +++ b/tools/misc/xen-livepatch.c
> @@ -100,8 +100,11 @@ static int list_func(int argc, char *argv[])
> rc = xc_livepatch_list(xch, MAX_LEN, idx, info, name, len, &done, &left);
> if ( rc )
> {
> - fprintf(stderr, "Failed to list %d/%d: %d(%s)!\n",
> - idx, left, errno, strerror(errno));
> + if ( errno == ENOSYS )
> + fprintf(stderr, "Hypervisor compiled without Xen Livepatching!\n");
> + else
> + fprintf(stderr, "Failed to list %d/%d: %d(%s)!\n",
> + idx, left, errno, strerror(errno));
> break;
> }
> if ( !idx )
>
You should save errno since you have an fprintf before you check it.
Also, it would be good to do the same check for the first
xc_livepatch_get in action_func() and for the xc_livepatch_upload in
upload_func.
--
Ross Lagerwall
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v1 3/3] xen-livepatch: If hypervisor is not compiled with Livepatching
2016-09-22 7:25 ` Ross Lagerwall
@ 2016-09-22 10:12 ` Konrad Rzeszutek Wilk
2016-09-22 10:34 ` Ian Jackson
2016-09-22 10:37 ` Ross Lagerwall
0 siblings, 2 replies; 12+ messages in thread
From: Konrad Rzeszutek Wilk @ 2016-09-22 10:12 UTC (permalink / raw)
To: Ross Lagerwall; +Cc: xen-devel, wei.liu2, ian.jackson
On Thu, Sep 22, 2016 at 08:25:33AM +0100, Ross Lagerwall wrote:
> On 09/21/2016 08:20 PM, Konrad Rzeszutek Wilk wrote:
> > . print a better error code.
> >
> > Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
> > Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> > ---
> > tools/misc/xen-livepatch.c | 7 +++++--
> > 1 file changed, 5 insertions(+), 2 deletions(-)
> >
> > diff --git a/tools/misc/xen-livepatch.c b/tools/misc/xen-livepatch.c
> > index 2de04c0..f11e71f07f 100644
> > --- a/tools/misc/xen-livepatch.c
> > +++ b/tools/misc/xen-livepatch.c
> > @@ -100,8 +100,11 @@ static int list_func(int argc, char *argv[])
> > rc = xc_livepatch_list(xch, MAX_LEN, idx, info, name, len, &done, &left);
> > if ( rc )
> > {
> > - fprintf(stderr, "Failed to list %d/%d: %d(%s)!\n",
> > - idx, left, errno, strerror(errno));
> > + if ( errno == ENOSYS )
> > + fprintf(stderr, "Hypervisor compiled without Xen Livepatching!\n");
> > + else
> > + fprintf(stderr, "Failed to list %d/%d: %d(%s)!\n",
> > + idx, left, errno, strerror(errno));
> > break;
> > }
> > if ( !idx )
> >
>
> You should save errno since you have an fprintf before you check it.
I am missing something.
Why would fprintf mess up 'errno' ?
>
> Also, it would be good to do the same check for the first xc_livepatch_get
> in action_func() and for the xc_livepatch_upload in upload_func.
<nods>
>
> --
> Ross Lagerwall
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v1 3/3] xen-livepatch: If hypervisor is not compiled with Livepatching
2016-09-22 10:12 ` Konrad Rzeszutek Wilk
@ 2016-09-22 10:34 ` Ian Jackson
2016-09-22 10:36 ` Ian Jackson
2016-09-22 10:37 ` Ross Lagerwall
1 sibling, 1 reply; 12+ messages in thread
From: Ian Jackson @ 2016-09-22 10:34 UTC (permalink / raw)
To: Konrad Rzeszutek Wilk; +Cc: ian.jackson, Ross Lagerwall, wei.liu2, xen-devel
Konrad Rzeszutek Wilk writes ("Re: [PATCH v1 3/3] xen-livepatch: If hypervisor is not compiled with Livepatching"):
> On Thu, Sep 22, 2016 at 08:25:33AM +0100, Ross Lagerwall wrote:
> > You should save errno since you have an fprintf before you check it.
>
> I am missing something.
>
> Why would fprintf mess up 'errno' ?
Any libc function is entitled to set errno, if it fails.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v1 3/3] xen-livepatch: If hypervisor is not compiled with Livepatching
2016-09-22 10:34 ` Ian Jackson
@ 2016-09-22 10:36 ` Ian Jackson
2016-09-22 10:41 ` Konrad Rzeszutek Wilk
0 siblings, 1 reply; 12+ messages in thread
From: Ian Jackson @ 2016-09-22 10:36 UTC (permalink / raw)
To: Konrad Rzeszutek Wilk, Ross Lagerwall, xen-devel, konrad,
wei.liu2
Ian Jackson writes ("Re: [PATCH v1 3/3] xen-livepatch: If hypervisor is not compiled with Livepatching"):
> Konrad Rzeszutek Wilk writes ("Re: [PATCH v1 3/3] xen-livepatch: If hypervisor is not compiled with Livepatching"):
> > Why would fprintf mess up 'errno' ?
>
> Any libc function is entitled to set errno, if it fails.
And, I forget the exact rules, but I think most are allowed to trash
it even if they succeed. I just remember that errno needs to be saved
across libc calls, if the value is important.
In practice, for example, the first fprintf on a particular FILE* can
end up setting errno to ENOTTY as the libc calls isatty() to decide on
the buffering mode.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v1 3/3] xen-livepatch: If hypervisor is not compiled with Livepatching
2016-09-22 10:12 ` Konrad Rzeszutek Wilk
2016-09-22 10:34 ` Ian Jackson
@ 2016-09-22 10:37 ` Ross Lagerwall
1 sibling, 0 replies; 12+ messages in thread
From: Ross Lagerwall @ 2016-09-22 10:37 UTC (permalink / raw)
To: Konrad Rzeszutek Wilk; +Cc: xen-devel, wei.liu2, ian.jackson
On 09/22/2016 11:12 AM, Konrad Rzeszutek Wilk wrote:
> On Thu, Sep 22, 2016 at 08:25:33AM +0100, Ross Lagerwall wrote:
>> On 09/21/2016 08:20 PM, Konrad Rzeszutek Wilk wrote:
>>> . print a better error code.
>>>
>>> Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
>>> ---
>>> tools/misc/xen-livepatch.c | 7 +++++--
>>> 1 file changed, 5 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/tools/misc/xen-livepatch.c b/tools/misc/xen-livepatch.c
>>> index 2de04c0..f11e71f07f 100644
>>> --- a/tools/misc/xen-livepatch.c
>>> +++ b/tools/misc/xen-livepatch.c
>>> @@ -100,8 +100,11 @@ static int list_func(int argc, char *argv[])
>>> rc = xc_livepatch_list(xch, MAX_LEN, idx, info, name, len, &done, &left);
>>> if ( rc )
>>> {
>>> - fprintf(stderr, "Failed to list %d/%d: %d(%s)!\n",
>>> - idx, left, errno, strerror(errno));
>>> + if ( errno == ENOSYS )
>>> + fprintf(stderr, "Hypervisor compiled without Xen Livepatching!\n");
>>> + else
>>> + fprintf(stderr, "Failed to list %d/%d: %d(%s)!\n",
>>> + idx, left, errno, strerror(errno));
>>> break;
>>> }
>>> if ( !idx )
>>>
>>
>> You should save errno since you have an fprintf before you check it.
>
> I am missing something.
>
> Why would fprintf mess up 'errno' ?
>>
If the first fprintf fails for whatever reason (e.g. ENOSPC), then it
will set errno and the subsequent check of errno afterwards will serve
no purpose.
I have a patch to fix this issue for the rest of xen-livepatch.c, and
will send it out shortly.
--
Ross Lagerwall
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v1 3/3] xen-livepatch: If hypervisor is not compiled with Livepatching
2016-09-22 10:36 ` Ian Jackson
@ 2016-09-22 10:41 ` Konrad Rzeszutek Wilk
0 siblings, 0 replies; 12+ messages in thread
From: Konrad Rzeszutek Wilk @ 2016-09-22 10:41 UTC (permalink / raw)
To: Ian Jackson; +Cc: Ross Lagerwall, wei.liu2, xen-devel
On Thu, Sep 22, 2016 at 11:36:40AM +0100, Ian Jackson wrote:
> Ian Jackson writes ("Re: [PATCH v1 3/3] xen-livepatch: If hypervisor is not compiled with Livepatching"):
> > Konrad Rzeszutek Wilk writes ("Re: [PATCH v1 3/3] xen-livepatch: If hypervisor is not compiled with Livepatching"):
> > > Why would fprintf mess up 'errno' ?
> >
> > Any libc function is entitled to set errno, if it fails.
>
> And, I forget the exact rules, but I think most are allowed to trash
> it even if they succeed. I just remember that errno needs to be saved
> across libc calls, if the value is important.
>
> In practice, for example, the first fprintf on a particular FILE* can
> end up setting errno to ENOTTY as the libc calls isatty() to decide on
> the buffering mode.
Aaah! Thanks!
>
> Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2016-09-22 10:41 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-09-21 19:20 [PATCH v1] xen-livepatch fixes for Xen 4.8 Konrad Rzeszutek Wilk
2016-09-21 19:20 ` [PATCH v1 1/3] xen-livepatch: Remove the 'test' part Konrad Rzeszutek Wilk
2016-09-22 7:20 ` Ross Lagerwall
2016-09-21 19:20 ` [PATCH v1 2/3] xen-livepatch: Print the header _after_ the first livepatch hypercall Konrad Rzeszutek Wilk
2016-09-22 7:21 ` Ross Lagerwall
2016-09-21 19:20 ` [PATCH v1 3/3] xen-livepatch: If hypervisor is not compiled with Livepatching Konrad Rzeszutek Wilk
2016-09-22 7:25 ` Ross Lagerwall
2016-09-22 10:12 ` Konrad Rzeszutek Wilk
2016-09-22 10:34 ` Ian Jackson
2016-09-22 10:36 ` Ian Jackson
2016-09-22 10:41 ` Konrad Rzeszutek Wilk
2016-09-22 10:37 ` Ross Lagerwall
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).