Hi Shachar,

On Wed, Jul 26, 2017 at 09:21:27AM +0000, Shachar Beiser wrote:
> Hi ,
> 
>        When I say close I mean : " mlx5_dev_close" . This function set the 
> priv->ctx to NULL.
>        We think this patch is required because we have an open bug of seg 
> fault while accessing priv->ctx == NULL.
> 
>                          -Shachar Beiser. 
>          

This patch does not fix the root cause of the issue.
It is a bug in the ether layer, and missing flags within MLX5 PMD.
So NACK on this patch, I will send shortly the proper fix.


Best regards,

> 
> -----Original Message-----
> From: Adrien Mazarguil [mailto:adrien.mazarg...@6wind.com] 
> Sent: Wednesday, July 26, 2017 12:06 PM
> To: Shachar Beiser <shacha...@mellanox.com>
> Cc: dev@dpdk.org; Nélio Laranjeiro <nelio.laranje...@6wind.com>; 
> sta...@dpdk.org
> Subject: Re: [PATCH] net/mlx5: fix verification of device context
> 
> Hi Shachar,
> 
> On Wed, Jul 26, 2017 at 05:43:24AM +0000, Shachar Beiser wrote:
> > Get interface name function lacks verification of device context.
> > It might lead to segmentation fault when trying to query the name 
> > after the device is closed.fixing it by adding the missing 
> > verification
> > 
> 
> Thanks, however if by "close" you mean it may occur when applications use 
> ethdev callbacks after a call to rte_eth_dev_close(), I do not think PMDs 
> have to protect themselves against bad application behavior, otherwise there 
> is no end to such fixes.
> 
> The reverse of rte_eth_dev_close() is not rte_eth_dev_configure() nor any 
> other ethdev callback (see documentation), but a bus probe operation.
> 
> Perhaps I've missed something, so in case a crash occurs *while* calling
> rte_eth_dev_close() I guess this patch is fine, but then please describe the 
> reason.
> 
> > Fixes: cd89f22a1e9770 ("net/mlx5: remove unused interface name query")
> 
> This commit doesn't look like the root cause of that issue?
> 
> > Cc: sta...@dpdk.org
> > 
> > Signed-off-by: Shachar Beiser <shacha...@mellanox.com>
> > ---
> >  drivers/net/mlx5/mlx5_ethdev.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/drivers/net/mlx5/mlx5_ethdev.c 
> > b/drivers/net/mlx5/mlx5_ethdev.c index b70b7b9..6e67461 100644
> > --- a/drivers/net/mlx5/mlx5_ethdev.c
> > +++ b/drivers/net/mlx5/mlx5_ethdev.c
> > @@ -173,6 +173,10 @@ struct priv *
> >     char match[IF_NAMESIZE] = "";
> >  
> >     {
> > +           if (priv->ctx == NULL) {
> > +                   DEBUG("The device is closed, cannot query interface 
> > name ");
> > +                   return -1;
> > +           }
> 
> MKSTR() is at the beginning of this block because it defines a new variable 
> (path). For coding style consistency you should not put any code before 
> variable declarations, or at least insert an empty line between them. 
> Otherwise you could move this check to the parent block.
> 
> >             MKSTR(path, "%s/device/net", priv->ctx->device->ibdev_path);
> >  
> >             dir = opendir(path);
> > --
> > 1.8.3.1
> > 
> 
> I think this patch is not necessary unless proved otherwise, have you
> actually observed a crash addressed by it?
> 
> -- 
> Adrien Mazarguil
> 6WIND

-- 
Gaëtan Rivet
6WIND

Reply via email to