summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorJes Sorensen <Jes.Sorensen@redhat.com>2015-05-05 18:36:23 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-05-08 15:26:02 +0200
commit1bd14f37048bd77e33fd2db8950f2d41b64052f9 (patch)
treece123b1e373cd96511a8386a2b9255161205819b /drivers
parent670f56ca5f96b2a78cd964d10767ad0ab0a3e767 (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.c28
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);