[PATCH 046/141] staging: unisys: memregion: Use proper errno for mapit()
Benjamin Romer
benjamin.romer at unisys.com
Tue May 5 22:36:23 UTC 2015
From: Jes Sorensen <Jes.Sorensen at redhat.com>
Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
Signed-off-by: Benjamin Romer <benjamin.romer at unisys.com>
---
.../staging/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 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);
--
2.1.4
More information about the devel
mailing list