diff options
author | Pan Bian <bianpan2016@163.com> | 2016-12-02 09:50:38 -0500 |
---|---|---|
committer | Vinod Koul <vinod.koul@intel.com> | 2016-12-05 23:58:18 -0500 |
commit | 7393fca924e22ad3c071d8bbcc5acda21d0c2710 (patch) | |
tree | 3718edbe381ee44719ff661630e76bd531cd39de | |
parent | b424d2a0a186e7fe4b70db1d616a39d4c3fefd31 (diff) |
dmaengine: ioat: set error code on failures
In function ioat_xor_val_self_test(), when the calls to
dma_mapping_error() fail, the value of return variable err is 0
(indicates no error). As a result, the return value may be inconsistent
with the execution status. This patch fixes the bug by assigning
"-ENOMEM" to err on the error path.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=188601
Signed-off-by: Pan Bian <bianpan2016@163.com>
Acked-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
-rw-r--r-- | drivers/dma/ioat/init.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/dma/ioat/init.c b/drivers/dma/ioat/init.c index 32383ef524c4..3d589f413011 100644 --- a/drivers/dma/ioat/init.c +++ b/drivers/dma/ioat/init.c | |||
@@ -829,16 +829,20 @@ static int ioat_xor_val_self_test(struct ioatdma_device *ioat_dma) | |||
829 | op = IOAT_OP_XOR; | 829 | op = IOAT_OP_XOR; |
830 | 830 | ||
831 | dest_dma = dma_map_page(dev, dest, 0, PAGE_SIZE, DMA_FROM_DEVICE); | 831 | dest_dma = dma_map_page(dev, dest, 0, PAGE_SIZE, DMA_FROM_DEVICE); |
832 | if (dma_mapping_error(dev, dest_dma)) | 832 | if (dma_mapping_error(dev, dest_dma)) { |
833 | err = -ENOMEM; | ||
833 | goto free_resources; | 834 | goto free_resources; |
835 | } | ||
834 | 836 | ||
835 | for (i = 0; i < IOAT_NUM_SRC_TEST; i++) | 837 | for (i = 0; i < IOAT_NUM_SRC_TEST; i++) |
836 | dma_srcs[i] = DMA_ERROR_CODE; | 838 | dma_srcs[i] = DMA_ERROR_CODE; |
837 | for (i = 0; i < IOAT_NUM_SRC_TEST; i++) { | 839 | for (i = 0; i < IOAT_NUM_SRC_TEST; i++) { |
838 | dma_srcs[i] = dma_map_page(dev, xor_srcs[i], 0, PAGE_SIZE, | 840 | dma_srcs[i] = dma_map_page(dev, xor_srcs[i], 0, PAGE_SIZE, |
839 | DMA_TO_DEVICE); | 841 | DMA_TO_DEVICE); |
840 | if (dma_mapping_error(dev, dma_srcs[i])) | 842 | if (dma_mapping_error(dev, dma_srcs[i])) { |
843 | err = -ENOMEM; | ||
841 | goto dma_unmap; | 844 | goto dma_unmap; |
845 | } | ||
842 | } | 846 | } |
843 | tx = dma->device_prep_dma_xor(dma_chan, dest_dma, dma_srcs, | 847 | tx = dma->device_prep_dma_xor(dma_chan, dest_dma, dma_srcs, |
844 | IOAT_NUM_SRC_TEST, PAGE_SIZE, | 848 | IOAT_NUM_SRC_TEST, PAGE_SIZE, |
@@ -906,8 +910,10 @@ static int ioat_xor_val_self_test(struct ioatdma_device *ioat_dma) | |||
906 | for (i = 0; i < IOAT_NUM_SRC_TEST + 1; i++) { | 910 | for (i = 0; i < IOAT_NUM_SRC_TEST + 1; i++) { |
907 | dma_srcs[i] = dma_map_page(dev, xor_val_srcs[i], 0, PAGE_SIZE, | 911 | dma_srcs[i] = dma_map_page(dev, xor_val_srcs[i], 0, PAGE_SIZE, |
908 | DMA_TO_DEVICE); | 912 | DMA_TO_DEVICE); |
909 | if (dma_mapping_error(dev, dma_srcs[i])) | 913 | if (dma_mapping_error(dev, dma_srcs[i])) { |
914 | err = -ENOMEM; | ||
910 | goto dma_unmap; | 915 | goto dma_unmap; |
916 | } | ||
911 | } | 917 | } |
912 | tx = dma->device_prep_dma_xor_val(dma_chan, dma_srcs, | 918 | tx = dma->device_prep_dma_xor_val(dma_chan, dma_srcs, |
913 | IOAT_NUM_SRC_TEST + 1, PAGE_SIZE, | 919 | IOAT_NUM_SRC_TEST + 1, PAGE_SIZE, |
@@ -959,8 +965,10 @@ static int ioat_xor_val_self_test(struct ioatdma_device *ioat_dma) | |||
959 | for (i = 0; i < IOAT_NUM_SRC_TEST + 1; i++) { | 965 | for (i = 0; i < IOAT_NUM_SRC_TEST + 1; i++) { |
960 | dma_srcs[i] = dma_map_page(dev, xor_val_srcs[i], 0, PAGE_SIZE, | 966 | dma_srcs[i] = dma_map_page(dev, xor_val_srcs[i], 0, PAGE_SIZE, |
961 | DMA_TO_DEVICE); | 967 | DMA_TO_DEVICE); |
962 | if (dma_mapping_error(dev, dma_srcs[i])) | 968 | if (dma_mapping_error(dev, dma_srcs[i])) { |
969 | err = -ENOMEM; | ||
963 | goto dma_unmap; | 970 | goto dma_unmap; |
971 | } | ||
964 | } | 972 | } |
965 | tx = dma->device_prep_dma_xor_val(dma_chan, dma_srcs, | 973 | tx = dma->device_prep_dma_xor_val(dma_chan, dma_srcs, |
966 | IOAT_NUM_SRC_TEST + 1, PAGE_SIZE, | 974 | IOAT_NUM_SRC_TEST + 1, PAGE_SIZE, |