From: Jes Sorensen Date: Tue, 5 May 2015 22:36:23 +0000 (-0400) Subject: staging: unisys: memregion: Use proper errno for mapit() X-Git-Tag: v4.2-rc1~88^2~815 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1bd14f37048bd77e33fd2db8950f2d41b64052f9;p=platform%2Fkernel%2Flinux-exynos.git staging: unisys: memregion: Use proper errno for mapit() Signed-off-by: Jes Sorensen Signed-off-by: Benjamin Romer Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/unisys/visorutil/memregion_direct.c b/drivers/staging/unisys/visorutil/memregion_direct.c index 93c10b4..7ba68bc 100644 --- a/drivers/staging/unisys/visorutil/memregion_direct.c +++ b/drivers/staging/unisys/visorutil/memregion_direct.c @@ -32,7 +32,7 @@ struct memregion { BOOL requested; }; -static BOOL mapit(struct memregion *memregion); +static int mapit(struct memregion *memregion); static void unmapit(struct memregion *memregion); struct memregion * @@ -47,7 +47,7 @@ visor_memregion_create(HOSTADDRESS physaddr, ulong nbytes) memregion->physaddr = physaddr; memregion->nbytes = nbytes; - if (!mapit(memregion)) { + if (mapit(memregion)) { rc = NULL; goto cleanup; } @@ -61,19 +61,24 @@ cleanup: } EXPORT_SYMBOL_GPL(visor_memregion_create); -static BOOL +static int mapit(struct memregion *memregion) { ulong physaddr = (ulong)(memregion->physaddr); ulong nbytes = memregion->nbytes; memregion->requested = FALSE; - if (request_mem_region(physaddr, nbytes, MYDRVNAME)) - memregion->requested = TRUE; + if (!request_mem_region(physaddr, nbytes, MYDRVNAME)) + return -EBUSY; + + memregion->requested = TRUE; memregion->mapped = ioremap_cache(physaddr, nbytes); - if (!memregion->mapped) - return FALSE; - return TRUE; + if (!memregion->mapped) { + memregion->requested = TRUE; + return -EFAULT; + } + + return 0; } static void @@ -114,15 +119,16 @@ EXPORT_SYMBOL_GPL(visor_memregion_get_pointer); int visor_memregion_resize(struct memregion *memregion, ulong newsize) { + int rc; + if (newsize == memregion->nbytes) return 0; unmapit(memregion); memregion->nbytes = newsize; - if (!mapit(memregion)) - return -EIO; + rc = mapit(memregion); - return 0; + return rc; } EXPORT_SYMBOL_GPL(visor_memregion_resize);