On Fri, Aug 19, 2022 at 08:07:44AM +0200, Jack Wang wrote: > dma_map_sg return 0 on error, in case of error set > EIO as return code. > > Cc: Jason Gunthorpe <jgg@xxxxxxxx> > Cc: Leon Romanovsky <leon@xxxxxxxxxx> > Cc: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx> > Cc: Kees Cook <keescook@xxxxxxxxxxxx> > Cc: "Håkon Bugge" <haakon.bugge@xxxxxxxxxx> > Cc: linux-rdma@xxxxxxxxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx > Signed-off-by: Jack Wang <jinpu.wang@xxxxxxxxx> > --- > drivers/infiniband/hw/mthca/mthca_memfree.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/infiniband/hw/mthca/mthca_memfree.c b/drivers/infiniband/hw/mthca/mthca_memfree.c > index f2734a5c5f26..44fd5fdf64d5 100644 > --- a/drivers/infiniband/hw/mthca/mthca_memfree.c > +++ b/drivers/infiniband/hw/mthca/mthca_memfree.c > @@ -189,7 +189,7 @@ struct mthca_icm *mthca_alloc_icm(struct mthca_dev *dev, int npages, > chunk->npages, > DMA_BIDIRECTIONAL); > > - if (chunk->nsg <= 0) > + if (!chunk->nsg) > goto fail; > } > > @@ -208,7 +208,7 @@ struct mthca_icm *mthca_alloc_icm(struct mthca_dev *dev, int npages, > chunk->nsg = dma_map_sg(&dev->pdev->dev, chunk->mem, > chunk->npages, DMA_BIDIRECTIONAL); > > - if (chunk->nsg <= 0) > + if (!chunk->nsg) > goto fail; > } > > @@ -482,8 +482,9 @@ int mthca_map_user_db(struct mthca_dev *dev, struct mthca_uar *uar, > > ret = dma_map_sg(&dev->pdev->dev, &db_tab->page[i].mem, 1, > DMA_TO_DEVICE); > - if (ret < 0) { > + if (!ret) { This code is not equivalent to original code. mthca didn't count ret == 0 as an error. Most likely, it is a bug, but I don't want to change old and unmaintained driver without any real need. Thanks > unpin_user_page(pages[0]); > + ret = -EIO; > goto out; > } > > -- > 2.34.1 >