All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] xensore: fixing two bugs
@ 2017-03-20  8:00 Juergen Gross
  2017-03-20  8:00 ` [PATCH 1/2] xenstore: set correct error code when violating quota Juergen Gross
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Juergen Gross @ 2017-03-20  8:00 UTC (permalink / raw)
  To: xen-devel; +Cc: Juergen Gross, wei.liu2, ian.jackson

Two small patches to fix bugs: one error path correction (setting
correct error code for caller) and add some missing checks for
allocation failures.

Juergen Gross (2):
  xenstore: set correct error code when violating quota
  xenstore: add missing checks for allocation failure

 tools/xenstore/xenstored_core.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

-- 
2.10.2


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/2] xenstore: set correct error code when violating quota
  2017-03-20  8:00 [PATCH 0/2] xensore: fixing two bugs Juergen Gross
@ 2017-03-20  8:00 ` Juergen Gross
  2017-03-21 17:14   ` Wei Liu
  2017-03-20  8:00 ` [PATCH 2/2] xenstore: add missing checks for allocation failure Juergen Gross
  2017-04-03 13:54 ` [PATCH 0/2] xensore: fixing two bugs Ian Jackson
  2 siblings, 1 reply; 9+ messages in thread
From: Juergen Gross @ 2017-03-20  8:00 UTC (permalink / raw)
  To: xen-devel; +Cc: Juergen Gross, wei.liu2, ian.jackson

When the number of permitted xenstore entries for a domain is being
exceeded the operation trying to create a new entry is denied.
Unfortunately errno isn't being set in this case so the error code
returned to the client is undefined.

Set errno to ENOSPC in this case.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
This is a backport candidate.
---
 tools/xenstore/xenstored_core.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c
index 5c659d8..ed80345 100644
--- a/tools/xenstore/xenstored_core.c
+++ b/tools/xenstore/xenstored_core.c
@@ -937,8 +937,10 @@ static struct node *construct_node(struct connection *conn, const void *ctx,
 	if (!parent)
 		return NULL;
 
-	if (domain_entry(conn) >= quota_nb_entry_per_domain)
+	if (domain_entry(conn) >= quota_nb_entry_per_domain) {
+		errno = ENOSPC;
 		return NULL;
+	}
 
 	/* Add child to parent. */
 	base = basename(name);
-- 
2.10.2


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/2] xenstore: add missing checks for allocation failure
  2017-03-20  8:00 [PATCH 0/2] xensore: fixing two bugs Juergen Gross
  2017-03-20  8:00 ` [PATCH 1/2] xenstore: set correct error code when violating quota Juergen Gross
@ 2017-03-20  8:00 ` Juergen Gross
  2017-03-21 17:17   ` Wei Liu
  2017-04-03 13:54 ` [PATCH 0/2] xensore: fixing two bugs Ian Jackson
  2 siblings, 1 reply; 9+ messages in thread
From: Juergen Gross @ 2017-03-20  8:00 UTC (permalink / raw)
  To: xen-devel; +Cc: Juergen Gross, wei.liu2, ian.jackson

Add a missing allocation failure checks.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 tools/xenstore/xenstored_core.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c
index ed80345..fe11ff2 100644
--- a/tools/xenstore/xenstored_core.c
+++ b/tools/xenstore/xenstored_core.c
@@ -946,6 +946,8 @@ static struct node *construct_node(struct connection *conn, const void *ctx,
 	base = basename(name);
 	baselen = strlen(base) + 1;
 	children = talloc_array(ctx, char, parent->childlen + baselen);
+	if (!children)
+		goto nomem;
 	memcpy(children, parent->children, parent->childlen);
 	memcpy(children + parent->childlen, base, baselen);
 	parent->children = children;
@@ -953,13 +955,19 @@ static struct node *construct_node(struct connection *conn, const void *ctx,
 
 	/* Allocate node */
 	node = talloc(ctx, struct node);
+	if (!node)
+		goto nomem;
 	node->tdb = tdb_context(conn);
 	node->name = talloc_strdup(node, name);
+	if (!node->name)
+		goto nomem;
 
 	/* Inherit permissions, except unprivileged domains own what they create */
 	node->num_perms = parent->num_perms;
 	node->perms = talloc_memdup(node, parent->perms,
 				    node->num_perms * sizeof(node->perms[0]));
+	if (!node->perms)
+		goto nomem;
 	if (domain_is_unprivileged(conn))
 		node->perms[0].id = conn->id;
 
@@ -969,6 +977,10 @@ static struct node *construct_node(struct connection *conn, const void *ctx,
 	node->parent = parent;
 	domain_entry_inc(conn, node);
 	return node;
+
+nomem:
+	errno = ENOMEM;
+	return NULL;
 }
 
 static int destroy_node(void *_node)
-- 
2.10.2


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] xenstore: set correct error code when violating quota
  2017-03-20  8:00 ` [PATCH 1/2] xenstore: set correct error code when violating quota Juergen Gross
@ 2017-03-21 17:14   ` Wei Liu
  2017-03-21 17:16     ` Wei Liu
  0 siblings, 1 reply; 9+ messages in thread
From: Wei Liu @ 2017-03-21 17:14 UTC (permalink / raw)
  To: Juergen Gross; +Cc: xen-devel, ian.jackson, wei.liu2

On Mon, Mar 20, 2017 at 09:00:20AM +0100, Juergen Gross wrote:
> When the number of permitted xenstore entries for a domain is being
> exceeded the operation trying to create a new entry is denied.
> Unfortunately errno isn't being set in this case so the error code
> returned to the client is undefined.
> 
> Set errno to ENOSPC in this case.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Acked-by: Wei Liu <wei.liu2@citrix.com>

But ...

> ---
> This is a backport candidate.
> ---
>  tools/xenstore/xenstored_core.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c
> index 5c659d8..ed80345 100644
> --- a/tools/xenstore/xenstored_core.c
> +++ b/tools/xenstore/xenstored_core.c
> @@ -937,8 +937,10 @@ static struct node *construct_node(struct connection *conn, const void *ctx,
>  	if (!parent)
>  		return NULL;

What about this and other places?

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] xenstore: set correct error code when violating quota
  2017-03-21 17:14   ` Wei Liu
@ 2017-03-21 17:16     ` Wei Liu
  2017-03-21 17:21       ` Juergen Gross
  0 siblings, 1 reply; 9+ messages in thread
From: Wei Liu @ 2017-03-21 17:16 UTC (permalink / raw)
  To: Juergen Gross; +Cc: xen-devel, ian.jackson, wei.liu2

On Tue, Mar 21, 2017 at 05:14:47PM +0000, Wei Liu wrote:
> On Mon, Mar 20, 2017 at 09:00:20AM +0100, Juergen Gross wrote:
> > When the number of permitted xenstore entries for a domain is being
> > exceeded the operation trying to create a new entry is denied.
> > Unfortunately errno isn't being set in this case so the error code
> > returned to the client is undefined.
> > 
> > Set errno to ENOSPC in this case.
> > 
> > Signed-off-by: Juergen Gross <jgross@suse.com>
> 
> Acked-by: Wei Liu <wei.liu2@citrix.com>
> 
> But ...
> 
> > ---
> > This is a backport candidate.
> > ---
> >  tools/xenstore/xenstored_core.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c
> > index 5c659d8..ed80345 100644
> > --- a/tools/xenstore/xenstored_core.c
> > +++ b/tools/xenstore/xenstored_core.c
> > @@ -937,8 +937,10 @@ static struct node *construct_node(struct connection *conn, const void *ctx,
> >  	if (!parent)
> >  		return NULL;
> 
> What about this and other places?

Oh, this relies on errno being set in some other place(s).

This is really poor error handling style... :-/

Wei.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/2] xenstore: add missing checks for allocation failure
  2017-03-20  8:00 ` [PATCH 2/2] xenstore: add missing checks for allocation failure Juergen Gross
@ 2017-03-21 17:17   ` Wei Liu
  0 siblings, 0 replies; 9+ messages in thread
From: Wei Liu @ 2017-03-21 17:17 UTC (permalink / raw)
  To: Juergen Gross; +Cc: xen-devel, ian.jackson, wei.liu2

On Mon, Mar 20, 2017 at 09:00:21AM +0100, Juergen Gross wrote:
> Add a missing allocation failure checks.

s/a//

> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Wei Liu <wei.liu2@citrix.com>

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] xenstore: set correct error code when violating quota
  2017-03-21 17:16     ` Wei Liu
@ 2017-03-21 17:21       ` Juergen Gross
  2017-03-21 17:45         ` Wei Liu
  0 siblings, 1 reply; 9+ messages in thread
From: Juergen Gross @ 2017-03-21 17:21 UTC (permalink / raw)
  To: Wei Liu; +Cc: xen-devel, ian.jackson

On 21/03/17 18:16, Wei Liu wrote:
> On Tue, Mar 21, 2017 at 05:14:47PM +0000, Wei Liu wrote:
>> On Mon, Mar 20, 2017 at 09:00:20AM +0100, Juergen Gross wrote:
>>> When the number of permitted xenstore entries for a domain is being
>>> exceeded the operation trying to create a new entry is denied.
>>> Unfortunately errno isn't being set in this case so the error code
>>> returned to the client is undefined.
>>>
>>> Set errno to ENOSPC in this case.
>>>
>>> Signed-off-by: Juergen Gross <jgross@suse.com>
>>
>> Acked-by: Wei Liu <wei.liu2@citrix.com>
>>
>> But ...
>>
>>> ---
>>> This is a backport candidate.
>>> ---
>>>  tools/xenstore/xenstored_core.c | 4 +++-
>>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c
>>> index 5c659d8..ed80345 100644
>>> --- a/tools/xenstore/xenstored_core.c
>>> +++ b/tools/xenstore/xenstored_core.c
>>> @@ -937,8 +937,10 @@ static struct node *construct_node(struct connection *conn, const void *ctx,
>>>  	if (!parent)
>>>  		return NULL;
>>
>> What about this and other places?
> 
> Oh, this relies on errno being set in some other place(s).
> 
> This is really poor error handling style... :-/

I can fix this up in another patch, but I don't think this should
be done in this patch (and possibly not in 4.9).


Juergen


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] xenstore: set correct error code when violating quota
  2017-03-21 17:21       ` Juergen Gross
@ 2017-03-21 17:45         ` Wei Liu
  0 siblings, 0 replies; 9+ messages in thread
From: Wei Liu @ 2017-03-21 17:45 UTC (permalink / raw)
  To: Juergen Gross; +Cc: xen-devel, Wei Liu, ian.jackson

On Tue, Mar 21, 2017 at 06:21:24PM +0100, Juergen Gross wrote:
> On 21/03/17 18:16, Wei Liu wrote:
> > On Tue, Mar 21, 2017 at 05:14:47PM +0000, Wei Liu wrote:
> >> On Mon, Mar 20, 2017 at 09:00:20AM +0100, Juergen Gross wrote:
> >>> When the number of permitted xenstore entries for a domain is being
> >>> exceeded the operation trying to create a new entry is denied.
> >>> Unfortunately errno isn't being set in this case so the error code
> >>> returned to the client is undefined.
> >>>
> >>> Set errno to ENOSPC in this case.
> >>>
> >>> Signed-off-by: Juergen Gross <jgross@suse.com>
> >>
> >> Acked-by: Wei Liu <wei.liu2@citrix.com>
> >>
> >> But ...
> >>
> >>> ---
> >>> This is a backport candidate.
> >>> ---
> >>>  tools/xenstore/xenstored_core.c | 4 +++-
> >>>  1 file changed, 3 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c
> >>> index 5c659d8..ed80345 100644
> >>> --- a/tools/xenstore/xenstored_core.c
> >>> +++ b/tools/xenstore/xenstored_core.c
> >>> @@ -937,8 +937,10 @@ static struct node *construct_node(struct connection *conn, const void *ctx,
> >>>  	if (!parent)
> >>>  		return NULL;
> >>
> >> What about this and other places?
> > 
> > Oh, this relies on errno being set in some other place(s).
> > 
> > This is really poor error handling style... :-/
> 
> I can fix this up in another patch, but I don't think this should
> be done in this patch (and possibly not in 4.9).
> 

Of course. I didn't mean to ask you fix them in one patch.

> 
> Juergen
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 0/2] xensore: fixing two bugs
  2017-03-20  8:00 [PATCH 0/2] xensore: fixing two bugs Juergen Gross
  2017-03-20  8:00 ` [PATCH 1/2] xenstore: set correct error code when violating quota Juergen Gross
  2017-03-20  8:00 ` [PATCH 2/2] xenstore: add missing checks for allocation failure Juergen Gross
@ 2017-04-03 13:54 ` Ian Jackson
  2 siblings, 0 replies; 9+ messages in thread
From: Ian Jackson @ 2017-04-03 13:54 UTC (permalink / raw)
  To: Juergen Gross; +Cc: xen-devel, wei.liu2

Juergen Gross writes ("[PATCH 0/2] xensore: fixing two bugs"):
> Two small patches to fix bugs: one error path correction (setting
> correct error code for caller) and add some missing checks for
> allocation failures.
> 
> Juergen Gross (2):
>   xenstore: set correct error code when violating quota
>   xenstore: add missing checks for allocation failure

Both,

Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2017-04-03 13:55 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-20  8:00 [PATCH 0/2] xensore: fixing two bugs Juergen Gross
2017-03-20  8:00 ` [PATCH 1/2] xenstore: set correct error code when violating quota Juergen Gross
2017-03-21 17:14   ` Wei Liu
2017-03-21 17:16     ` Wei Liu
2017-03-21 17:21       ` Juergen Gross
2017-03-21 17:45         ` Wei Liu
2017-03-20  8:00 ` [PATCH 2/2] xenstore: add missing checks for allocation failure Juergen Gross
2017-03-21 17:17   ` Wei Liu
2017-04-03 13:54 ` [PATCH 0/2] xensore: fixing two bugs Ian Jackson

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.