From 1bd14f37048bd77e33fd2db8950f2d41b64052f9 Mon Sep 17 00:00:00 2001 From: Jes Sorensen Date: Tue, 5 May 2015 18:36:23 -0400 Subject: [PATCH] staging: unisys: memregion: Use proper errno for mapit() Signed-off-by: Jes Sorensen Signed-off-by: Benjamin Romer Signed-off-by: Greg Kroah-Hartman --- .../unisys/visorutil/memregion_direct.c | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/drivers/staging/unisys/visorutil/memregion_direct.c b/drivers/staging/unisys/visorutil/memregion_direct.c index 93c10b46dc86..7ba68bcef371 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); -- 2.34.1