diff options
author | Jes Sorensen <Jes.Sorensen@redhat.com> | 2015-05-05 18:36:23 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-05-08 15:26:02 +0200 |
commit | 1bd14f37048bd77e33fd2db8950f2d41b64052f9 (patch) | |
tree | ce123b1e373cd96511a8386a2b9255161205819b /drivers | |
parent | 670f56ca5f96b2a78cd964d10767ad0ab0a3e767 (diff) |
staging: unisys: memregion: Use proper errno for mapit()
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Benjamin Romer <benjamin.romer@unisys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/staging/unisys/visorutil/memregion_direct.c | 28 |
1 files 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); |