[media] s5p: fix error code path when failing to allocate DMA memory
authorMaurizio Lombardi <mlombard@redhat.com>
Fri, 27 Jun 2014 09:28:31 +0000 (06:28 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Mon, 21 Jul 2014 18:00:56 +0000 (15:00 -0300)
In the s5p_mfc_alloc_firmware() function there are some mistakes
where the code checks whether the DMA memory is properly allocated or
not.

First of all dma_alloc_coherent() returns NULL in case of error.
The code also checked two times fw_virt_addr, ignoring
the bank2_virt pointer.

Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
Signed-off-by: Kamil Debski <k.debski@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c

index 6c3f8f7439008aee08fe35158f8df33181ed06fb..390ca20be6efe74309b5c9272af0eb96f16d3f97 100644 (file)
@@ -38,8 +38,7 @@ int s5p_mfc_alloc_firmware(struct s5p_mfc_dev *dev)
        dev->fw_virt_addr = dma_alloc_coherent(dev->mem_dev_l, dev->fw_size,
                                        &dev->bank1, GFP_KERNEL);
 
-       if (IS_ERR_OR_NULL(dev->fw_virt_addr)) {
-               dev->fw_virt_addr = NULL;
+       if (!dev->fw_virt_addr) {
                mfc_err("Allocating bitprocessor buffer failed\n");
                return -ENOMEM;
        }
@@ -48,7 +47,7 @@ int s5p_mfc_alloc_firmware(struct s5p_mfc_dev *dev)
                bank2_virt = dma_alloc_coherent(dev->mem_dev_r, 1 << MFC_BASE_ALIGN_ORDER,
                                        &bank2_dma_addr, GFP_KERNEL);
 
-               if (IS_ERR(dev->fw_virt_addr)) {
+               if (!bank2_virt) {
                        mfc_err("Allocating bank2 base failed\n");
                        dma_free_coherent(dev->mem_dev_l, dev->fw_size,
                                dev->fw_virt_addr, dev->bank1);