[ofa-general] [PATCH] EHCA: Enforce a positive guid_entry index

Alexander Schmidt alexs at linux.vnet.ibm.com
Tue Jun 16 04:45:31 PDT 2009


On Tue, 16 Jun 2009 09:35:57 +0200
Alexander Schmidt <alexs at linux.vnet.ibm.com> wrote:

> Hi Roel,
> 
> On Mon, 15 Jun 2009 20:04:08 +0200
> Roel Kluin <roel.kluin at gmail.com> wrote:
> 
> > This prevents the memcpy of a guid_entries element using a negative index.
> > 
> > Signed-off-by: Roel Kluin <roel.kluin at gmail.com>
> > ---
> >  drivers/infiniband/hw/ehca/ehca_hca.c    |    2 +-
> >  drivers/infiniband/hw/ehca/ehca_iverbs.h |    2 +-
> >  2 files changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/infiniband/hw/ehca/ehca_hca.c b/drivers/infiniband/hw/ehca/ehca_hca.c
> > index 9209c53..1175ee1 100644
> > --- a/drivers/infiniband/hw/ehca/ehca_hca.c
> > +++ b/drivers/infiniband/hw/ehca/ehca_hca.c
> > @@ -311,7 +311,7 @@ query_pkey1:
> >  }
> > 
> >  int ehca_query_gid(struct ib_device *ibdev, u8 port,
> > -		   int index, union ib_gid *gid)
> > +		   unsigned index, union ib_gid *gid)
> >  {
> >  	int ret = 0;
> >  	u64 h_ret;
> > diff --git a/drivers/infiniband/hw/ehca/ehca_iverbs.h b/drivers/infiniband/hw/ehca/ehca_iverbs.h
> > index 8f7f282..05a83bb 100644
> > --- a/drivers/infiniband/hw/ehca/ehca_iverbs.h
> > +++ b/drivers/infiniband/hw/ehca/ehca_iverbs.h
> > @@ -54,7 +54,7 @@ int ehca_query_sma_attr(struct ehca_shca *shca, u8 port,
> > 
> >  int ehca_query_pkey(struct ib_device *ibdev, u8 port, u16 index, u16 * pkey);
> > 
> > -int ehca_query_gid(struct ib_device *ibdev, u8 port, int index,
> > +int ehca_query_gid(struct ib_device *ibdev, u8 port, unsigned index,
> >  		   union ib_gid *gid);
> > 
> >  int ehca_modify_port(struct ib_device *ibdev, u8 port, int port_modify_mask,
> 
> Thank you for checking this code. I think a better solution for this would be to
> change the index parameter of ehca_query_gid() from int to u8. Both functions
> that call ehca_query_gid() pass an u8 and this way you could also remove the
> 
> 	if (index > 255) {
> 		ehca_err(&shca->ib_device, "Invalid index: %x.", index);
> 		return -EINVAL;
> 	}
> 
> check from ehca_query_gid().
> 
> If you could send an updated patch, I would be happy to take a look again
> and ack it.

I just noticed that ehca_query_gid() is an exported interface and there is a
generic ib_query_gid() function which also gets an int, so we cannot accept
this change.

Regards,
Alex



More information about the general mailing list