netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] xen-netback: correctly check failed allocation
@ 2015-10-15 18:02 Insu Yun
  2015-10-15 18:02 ` Insu Yun
  2015-10-19  2:37 ` David Miller
  0 siblings, 2 replies; 7+ messages in thread
From: Insu Yun @ 2015-10-15 18:02 UTC (permalink / raw)
  To: ian.campbell, wei.liu2, xen-devel, netdev, linux-kernel
  Cc: taesoo, yeongjin.jang, insu, Insu Yun

Since vzalloc can be failed in memory pressure,
writes -ENOMEM to xenstore to indicate error.

Signed-off-by: Insu Yun <wuninsu@gmail.com>
---
 drivers/net/xen-netback/xenbus.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/xen-netback/xenbus.c b/drivers/net/xen-netback/xenbus.c
index 929a6e7..56ebd82 100644
--- a/drivers/net/xen-netback/xenbus.c
+++ b/drivers/net/xen-netback/xenbus.c
@@ -788,6 +788,12 @@ static void connect(struct backend_info *be)
 	/* Use the number of queues requested by the frontend */
 	be->vif->queues = vzalloc(requested_num_queues *
 				  sizeof(struct xenvif_queue));
+	if (!be->vif->queues) {
+		xenbus_dev_fatal(dev, -ENOMEM,
+				 "allocating queues");
+		return;
+	}
+
 	be->vif->num_queues = requested_num_queues;
 	be->vif->stalled_queues = requested_num_queues;
 
-- 
1.9.1

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

* Re: [PATCH] xen-netback: correctly check failed allocation
  2015-10-15 18:02 [PATCH] xen-netback: correctly check failed allocation Insu Yun
@ 2015-10-15 18:02 ` Insu Yun
  2015-10-16  9:05   ` Wei Liu
  2015-10-19  2:37 ` David Miller
  1 sibling, 1 reply; 7+ messages in thread
From: Insu Yun @ 2015-10-15 18:02 UTC (permalink / raw)
  To: Ian Campbell, Wei Liu, xen-devel, netdev, linux-kernel
  Cc: Yeongjin Jang, Taesoo Kim, Yun, Insu, Insu Yun


[-- Attachment #1.1: Type: text/plain, Size: 1212 bytes --]

I changed patch with valid format.

On Thu, Oct 15, 2015 at 2:02 PM, Insu Yun <wuninsu@gmail.com> wrote:

> Since vzalloc can be failed in memory pressure,
> writes -ENOMEM to xenstore to indicate error.
>
> Signed-off-by: Insu Yun <wuninsu@gmail.com>
> ---
>  drivers/net/xen-netback/xenbus.c | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/drivers/net/xen-netback/xenbus.c
> b/drivers/net/xen-netback/xenbus.c
> index 929a6e7..56ebd82 100644
> --- a/drivers/net/xen-netback/xenbus.c
> +++ b/drivers/net/xen-netback/xenbus.c
> @@ -788,6 +788,12 @@ static void connect(struct backend_info *be)
>         /* Use the number of queues requested by the frontend */
>         be->vif->queues = vzalloc(requested_num_queues *
>                                   sizeof(struct xenvif_queue));
> +       if (!be->vif->queues) {
> +               xenbus_dev_fatal(dev, -ENOMEM,
> +                                "allocating queues");
> +               return;
>

I didn't use goto err, because another error handling is not required


> +       }
> +
>         be->vif->num_queues = requested_num_queues;
>         be->vif->stalled_queues = requested_num_queues;
>
> --
> 1.9.1
>
>


-- 
Regards
Insu Yun

[-- Attachment #1.2: Type: text/html, Size: 2050 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

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

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

* Re: [PATCH] xen-netback: correctly check failed allocation
  2015-10-15 18:02 ` Insu Yun
@ 2015-10-16  9:05   ` Wei Liu
  2015-10-16  9:28     ` Wei Liu
  2015-10-16  9:40     ` [Xen-devel] " David Vrabel
  0 siblings, 2 replies; 7+ messages in thread
From: Wei Liu @ 2015-10-16  9:05 UTC (permalink / raw)
  To: Insu Yun
  Cc: Ian Campbell, Wei Liu, xen-devel, netdev, linux-kernel,
	Taesoo Kim, Yeongjin Jang, Yun, Insu

On Thu, Oct 15, 2015 at 02:02:47PM -0400, Insu Yun wrote:
> I changed patch with valid format.
> 
> On Thu, Oct 15, 2015 at 2:02 PM, Insu Yun <wuninsu@gmail.com> wrote:
> 
> > Since vzalloc can be failed in memory pressure,
> > writes -ENOMEM to xenstore to indicate error.
> >
> > Signed-off-by: Insu Yun <wuninsu@gmail.com>
> > ---
> >  drivers/net/xen-netback/xenbus.c | 6 ++++++
> >  1 file changed, 6 insertions(+)
> >
> > diff --git a/drivers/net/xen-netback/xenbus.c
> > b/drivers/net/xen-netback/xenbus.c
> > index 929a6e7..56ebd82 100644
> > --- a/drivers/net/xen-netback/xenbus.c
> > +++ b/drivers/net/xen-netback/xenbus.c
> > @@ -788,6 +788,12 @@ static void connect(struct backend_info *be)
> >         /* Use the number of queues requested by the frontend */
> >         be->vif->queues = vzalloc(requested_num_queues *
> >                                   sizeof(struct xenvif_queue));
> > +       if (!be->vif->queues) {
> > +               xenbus_dev_fatal(dev, -ENOMEM,
> > +                                "allocating queues");
> > +               return;
> >
> 
> I didn't use goto err, because another error handling is not required
> 

It's recommended in kernel coding style to use "goto" style error
handling. I personally prefer that to arbitrary return in function body,
too.

It's not a matter of whether another error handling is required or not,
it's about cleaner code that is easy to reason about and consistent
coding style.

The existing code is not perfect, but that doesn't mean we should follow
bad example.

Wei.

> 
> > +       }
> > +
> >         be->vif->num_queues = requested_num_queues;
> >         be->vif->stalled_queues = requested_num_queues;
> >
> > --
> > 1.9.1
> >
> >
> 
> 
> -- 
> Regards
> Insu Yun

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

* Re: [PATCH] xen-netback: correctly check failed allocation
  2015-10-16  9:05   ` Wei Liu
@ 2015-10-16  9:28     ` Wei Liu
  2015-10-16  9:40     ` [Xen-devel] " David Vrabel
  1 sibling, 0 replies; 7+ messages in thread
From: Wei Liu @ 2015-10-16  9:28 UTC (permalink / raw)
  To: Insu Yun
  Cc: Ian Campbell, Wei Liu, xen-devel, netdev, linux-kernel,
	Taesoo Kim, Yeongjin Jang, Yun, Insu

On Fri, Oct 16, 2015 at 10:05:21AM +0100, Wei Liu wrote:
> On Thu, Oct 15, 2015 at 02:02:47PM -0400, Insu Yun wrote:
> > I changed patch with valid format.
> > 
> > On Thu, Oct 15, 2015 at 2:02 PM, Insu Yun <wuninsu@gmail.com> wrote:
> > 
> > > Since vzalloc can be failed in memory pressure,
> > > writes -ENOMEM to xenstore to indicate error.
> > >
> > > Signed-off-by: Insu Yun <wuninsu@gmail.com>
> > > ---
> > >  drivers/net/xen-netback/xenbus.c | 6 ++++++
> > >  1 file changed, 6 insertions(+)
> > >
> > > diff --git a/drivers/net/xen-netback/xenbus.c
> > > b/drivers/net/xen-netback/xenbus.c
> > > index 929a6e7..56ebd82 100644
> > > --- a/drivers/net/xen-netback/xenbus.c
> > > +++ b/drivers/net/xen-netback/xenbus.c
> > > @@ -788,6 +788,12 @@ static void connect(struct backend_info *be)
> > >         /* Use the number of queues requested by the frontend */
> > >         be->vif->queues = vzalloc(requested_num_queues *
> > >                                   sizeof(struct xenvif_queue));
> > > +       if (!be->vif->queues) {
> > > +               xenbus_dev_fatal(dev, -ENOMEM,
> > > +                                "allocating queues");
> > > +               return;
> > >
> > 
> > I didn't use goto err, because another error handling is not required
> > 
> 
> It's recommended in kernel coding style to use "goto" style error
> handling. I personally prefer that to arbitrary return in function body,
> too.
> 
> It's not a matter of whether another error handling is required or not,
> it's about cleaner code that is easy to reason about and consistent
> coding style.
> 
> The existing code is not perfect, but that doesn't mean we should follow
> bad example.

And to be clear, I don't want to block this patch just because of this
coding style thing.  It's still an improvement and fix a real problem.
So:

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

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

* Re: [Xen-devel] [PATCH] xen-netback: correctly check failed allocation
  2015-10-16  9:05   ` Wei Liu
  2015-10-16  9:28     ` Wei Liu
@ 2015-10-16  9:40     ` David Vrabel
  2015-10-16 12:48       ` Insu Yun
  1 sibling, 1 reply; 7+ messages in thread
From: David Vrabel @ 2015-10-16  9:40 UTC (permalink / raw)
  To: Wei Liu, Insu Yun
  Cc: Yeongjin Jang, Taesoo Kim, Ian Campbell, netdev, Yun, Insu,
	linux-kernel, xen-devel

On 16/10/15 10:05, Wei Liu wrote:
> On Thu, Oct 15, 2015 at 02:02:47PM -0400, Insu Yun wrote:
>> I changed patch with valid format.
>>
>> On Thu, Oct 15, 2015 at 2:02 PM, Insu Yun <wuninsu@gmail.com> wrote:
>>
>>> Since vzalloc can be failed in memory pressure,
>>> writes -ENOMEM to xenstore to indicate error.
>>>
>>> Signed-off-by: Insu Yun <wuninsu@gmail.com>
>>> ---
>>>  drivers/net/xen-netback/xenbus.c | 6 ++++++
>>>  1 file changed, 6 insertions(+)
>>>
>>> diff --git a/drivers/net/xen-netback/xenbus.c
>>> b/drivers/net/xen-netback/xenbus.c
>>> index 929a6e7..56ebd82 100644
>>> --- a/drivers/net/xen-netback/xenbus.c
>>> +++ b/drivers/net/xen-netback/xenbus.c
>>> @@ -788,6 +788,12 @@ static void connect(struct backend_info *be)
>>>         /* Use the number of queues requested by the frontend */
>>>         be->vif->queues = vzalloc(requested_num_queues *
>>>                                   sizeof(struct xenvif_queue));
>>> +       if (!be->vif->queues) {
>>> +               xenbus_dev_fatal(dev, -ENOMEM,
>>> +                                "allocating queues");
>>> +               return;
>>>
>>
>> I didn't use goto err, because another error handling is not required
>>
> 
> It's recommended in kernel coding style to use "goto" style error
> handling. I personally prefer that to arbitrary return in function body,
> too.
> 
> It's not a matter of whether another error handling is required or not,
> it's about cleaner code that is easy to reason about and consistent
> coding style.

Using xenbus_dev_fatal(); return; throughout would be consistent and
easy to reason about.

Also, the goto err path should raise a fatal error (instead of
disconnecting).  I also note that failures in the xen_net_read_rate(),
xen_register_watchers() and read_xenbus_vif_flags() are also not handled.

David

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

* Re: [PATCH] xen-netback: correctly check failed allocation
  2015-10-16  9:40     ` [Xen-devel] " David Vrabel
@ 2015-10-16 12:48       ` Insu Yun
  0 siblings, 0 replies; 7+ messages in thread
From: Insu Yun @ 2015-10-16 12:48 UTC (permalink / raw)
  To: David Vrabel
  Cc: Yeongjin Jang, Taesoo Kim, Wei Liu, Ian Campbell, netdev, Yun,
	Insu, LKML, xen-devel


[-- Attachment #1.1: Type: text/plain, Size: 2195 bytes --]

For me, it seems more consistent using xen_bus_dev_fatal(); return;
Because other codes also use them.

If you want to use goto, then feel free to make a patch for this issue.


On Fri, Oct 16, 2015 at 5:40 AM, David Vrabel <david.vrabel@citrix.com>
wrote:

> On 16/10/15 10:05, Wei Liu wrote:
> > On Thu, Oct 15, 2015 at 02:02:47PM -0400, Insu Yun wrote:
> >> I changed patch with valid format.
> >>
> >> On Thu, Oct 15, 2015 at 2:02 PM, Insu Yun <wuninsu@gmail.com> wrote:
> >>
> >>> Since vzalloc can be failed in memory pressure,
> >>> writes -ENOMEM to xenstore to indicate error.
> >>>
> >>> Signed-off-by: Insu Yun <wuninsu@gmail.com>
> >>> ---
> >>>  drivers/net/xen-netback/xenbus.c | 6 ++++++
> >>>  1 file changed, 6 insertions(+)
> >>>
> >>> diff --git a/drivers/net/xen-netback/xenbus.c
> >>> b/drivers/net/xen-netback/xenbus.c
> >>> index 929a6e7..56ebd82 100644
> >>> --- a/drivers/net/xen-netback/xenbus.c
> >>> +++ b/drivers/net/xen-netback/xenbus.c
> >>> @@ -788,6 +788,12 @@ static void connect(struct backend_info *be)
> >>>         /* Use the number of queues requested by the frontend */
> >>>         be->vif->queues = vzalloc(requested_num_queues *
> >>>                                   sizeof(struct xenvif_queue));
> >>> +       if (!be->vif->queues) {
> >>> +               xenbus_dev_fatal(dev, -ENOMEM,
> >>> +                                "allocating queues");
> >>> +               return;
> >>>
> >>
> >> I didn't use goto err, because another error handling is not required
> >>
> >
> > It's recommended in kernel coding style to use "goto" style error
> > handling. I personally prefer that to arbitrary return in function body,
> > too.
> >
> > It's not a matter of whether another error handling is required or not,
> > it's about cleaner code that is easy to reason about and consistent
> > coding style.
>
> Using xenbus_dev_fatal(); return; throughout would be consistent and
> easy to reason about.
>
> Also, the goto err path should raise a fatal error (instead of
> disconnecting).  I also note that failures in the xen_net_read_rate(),
> xen_register_watchers() and read_xenbus_vif_flags() are also not handled.
>
> David
>



-- 
Regards
Insu Yun

[-- Attachment #1.2: Type: text/html, Size: 3366 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

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

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

* Re: [PATCH] xen-netback: correctly check failed allocation
  2015-10-15 18:02 [PATCH] xen-netback: correctly check failed allocation Insu Yun
  2015-10-15 18:02 ` Insu Yun
@ 2015-10-19  2:37 ` David Miller
  1 sibling, 0 replies; 7+ messages in thread
From: David Miller @ 2015-10-19  2:37 UTC (permalink / raw)
  To: wuninsu
  Cc: ian.campbell, wei.liu2, xen-devel, netdev, linux-kernel, taesoo,
	yeongjin.jang, insu

From: Insu Yun <wuninsu@gmail.com>
Date: Thu, 15 Oct 2015 18:02:28 +0000

> Since vzalloc can be failed in memory pressure,
> writes -ENOMEM to xenstore to indicate error.
> 
> Signed-off-by: Insu Yun <wuninsu@gmail.com>

Applied.

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

end of thread, other threads:[~2015-10-19  2:37 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-15 18:02 [PATCH] xen-netback: correctly check failed allocation Insu Yun
2015-10-15 18:02 ` Insu Yun
2015-10-16  9:05   ` Wei Liu
2015-10-16  9:28     ` Wei Liu
2015-10-16  9:40     ` [Xen-devel] " David Vrabel
2015-10-16 12:48       ` Insu Yun
2015-10-19  2:37 ` David Miller

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).