fpga: dfl: afu: Corrected error handling levels
authorSouptick Joarder <jrdr.linux@gmail.com>
Mon, 18 May 2020 18:19:51 +0000 (23:49 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 19 May 2020 14:46:37 +0000 (16:46 +0200)
Corrected error handling goto sequnece. Level put_pages should
be called when pinned pages >= 0 && pinned != npages. Level
free_pages should be called when pinned pages < 0.

Fixes: fa8dda1edef9 ("fpga: dfl: afu: add DFL_FPGA_PORT_DMA_MAP/UNMAP ioctls support")
Signed-off-by: Souptick Joarder <jrdr.linux@gmail.com>
Acked-by: Wu Hao <hao.wu@intel.com>
Reviewed-by: Xu Yilun <yilun.xu@intel.com>
Link: https://lore.kernel.org/r/1589825991-3545-1-git-send-email-jrdr.linux@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/fpga/dfl-afu-dma-region.c

index 62f9244..5942343 100644 (file)
@@ -61,10 +61,10 @@ static int afu_dma_pin_pages(struct dfl_feature_platform_data *pdata,
                                     region->pages);
        if (pinned < 0) {
                ret = pinned;
-               goto put_pages;
+               goto free_pages;
        } else if (pinned != npages) {
                ret = -EFAULT;
-               goto free_pages;
+               goto put_pages;
        }
 
        dev_dbg(dev, "%d pages pinned\n", pinned);