[rtems commit] Fixed issue with searching mapped addresses

Sebastian Huber sebh at rtems.org
Thu Jul 20 05:30:50 UTC 2017


Module:    rtems
Branch:    master
Commit:    bb01a36dfb59d3cdccd33178d2b6be7f479e3d87
Changeset: http://git.rtems.org/rtems/commit/?id=bb01a36dfb59d3cdccd33178d2b6be7f479e3d87

Author:    Kevin Kirspel <kevin-kirspel at idexx.com>
Date:      Wed Jul 19 10:59:16 2017 -0400

Fixed issue with searching mapped addresses

The loop that checks if the current address is already mapped uses
the same local variable for the chanin node as the newly allocated
chain node so the allocated chain node gets over written.

Added a new local variable for the loop that checks the address

Updates #2859.

---

 cpukit/posix/src/mmap.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/cpukit/posix/src/mmap.c b/cpukit/posix/src/mmap.c
index d9b663d..e53cafa 100644
--- a/cpukit/posix/src/mmap.c
+++ b/cpukit/posix/src/mmap.c
@@ -114,6 +114,7 @@ void *mmap(
 {
   struct stat     sb;
   mmap_mapping   *mapping;
+  mmap_mapping   *current_mapping;
   ssize_t         r;
   rtems_libio_t  *iop;
   bool            map_fixed;
@@ -319,9 +320,9 @@ void *mmap(
        * error. POSIX allows us to also return successfully by unmapping
        * the overlapping prior mappings.
        */
-      mapping = (mmap_mapping*) node;
-      if ( ( addr >= mapping->addr ) &&
-           ( addr < ( mapping->addr + mapping->len )) ) {
+      current_mapping = (mmap_mapping*) node;
+      if ( ( addr >= current_mapping->addr ) &&
+           ( addr < ( current_mapping->addr + current_mapping->len )) ) {
         free( mapping );
         mmap_mappings_lock_release( );
         errno = ENXIO;



More information about the vc mailing list