| [PATCH] vpu-lib: fix IOGetVirtMem return value checks |
| |
| When using a kernel where user/kernel split is 3G/1G, the address |
| returned by IOGetVirtMem() can appear to be a negative int. |
| |
| IOSystemInit() incorrectly checks the return value of IOGetVirtMem(). |
| IOGetVirtMem() returns -1 on error (and not MAP_FAILED, nor any other |
| negative value.) |
| |
| Fix that by correctly checking against -1 (and not MAP_FAILED!) |
| |
| Signed-off-by: Gary Bisson <bisson.gary@gmail.com> |
| [yann.morin.1998@free.fr: expand the commit log] |
| Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> |
| --- |
| vpu/vpu_lib.c | 8 ++++---- |
| 1 file changed, 4 insertions(+), 4 deletions(-) |
| |
| diff --git a/vpu/vpu_lib.c b/vpu/vpu_lib.c |
| index 1fb731b..7a7f42d 100644 |
| --- a/vpu/vpu_lib.c |
| +++ b/vpu/vpu_lib.c |
| @@ -1764,7 +1764,7 @@ RetCode vpu_EncStartOneFrame(EncHandle handle, EncParam * param) |
| err_msg("Unable to obtain physical mem\n"); |
| return RETCODE_FAILURE; |
| } |
| - if (IOGetVirtMem(&pEncInfo->picParaBaseMem) <= 0) { |
| + if (IOGetVirtMem(&pEncInfo->picParaBaseMem) == -1) { |
| IOFreePhyMem(&pEncInfo->picParaBaseMem); |
| pEncInfo->picParaBaseMem.phy_addr = 0; |
| err_msg("Unable to obtain virtual mem\n"); |
| @@ -2982,7 +2982,7 @@ RetCode vpu_DecGetInitialInfo(DecHandle handle, DecInitialInfo * info) |
| UnlockVpu(vpu_semap); |
| return RETCODE_FAILURE; |
| } |
| - if (IOGetVirtMem(&pDecInfo->userDataBufMem) <= 0) { |
| + if (IOGetVirtMem(&pDecInfo->userDataBufMem) == -1) { |
| IOFreePhyMem(&pDecInfo->userDataBufMem); |
| pDecInfo->userDataBufMem.phy_addr = 0; |
| err_msg("Unable to obtain virtual mem\n"); |
| @@ -4017,7 +4017,7 @@ RetCode vpu_DecStartOneFrame(DecHandle handle, DecParam * param) |
| UnlockVpu(vpu_semap); |
| return RETCODE_FAILURE; |
| } |
| - if (IOGetVirtMem(&pDecInfo->picParaBaseMem) <= 0) { |
| + if (IOGetVirtMem(&pDecInfo->picParaBaseMem) == -1) { |
| IOFreePhyMem(&pDecInfo->picParaBaseMem); |
| pDecInfo->picParaBaseMem.phy_addr = 0; |
| err_msg("Unable to obtain virtual mem\n"); |
| @@ -4057,7 +4057,7 @@ RetCode vpu_DecStartOneFrame(DecHandle handle, DecParam * param) |
| UnlockVpu(vpu_semap); |
| return RETCODE_FAILURE; |
| } |
| - if (IOGetVirtMem(&pDecInfo->userDataBufMem) <= 0) { |
| + if (IOGetVirtMem(&pDecInfo->userDataBufMem) == -1) { |
| IOFreePhyMem(&pDecInfo->userDataBufMem); |
| pDecInfo->userDataBufMem.phy_addr = 0; |
| err_msg("Unable to obtain virtual mem\n"); |
| |