about summary refs log tree commit diff
path: root/sysdeps/unix
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2014-01-23 01:16:14 -0500
committerMike Frysinger <vapier@gentoo.org>2014-02-08 08:17:16 -0500
commitd674667cbaa84ff4cf82cfedacad0665ae6cb440 (patch)
tree00ac51b33784bb8933107c7ec73892d162cc5398 /sysdeps/unix
parent6fc8123f48680ddb6b40689a09c65488ee5bbd4b (diff)
downloadglibc-d674667cbaa84ff4cf82cfedacad0665ae6cb440.tar.gz
glibc-d674667cbaa84ff4cf82cfedacad0665ae6cb440.tar.xz
glibc-d674667cbaa84ff4cf82cfedacad0665ae6cb440.zip
shm_open: sync with logic in sem_open
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'sysdeps/unix')
-rw-r--r--sysdeps/unix/sysv/linux/shm_open.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sysdeps/unix/sysv/linux/shm_open.c b/sysdeps/unix/sysv/linux/shm_open.c
index 5f23515b9c..fef8fd531a 100644
--- a/sysdeps/unix/sysv/linux/shm_open.c
+++ b/sysdeps/unix/sysv/linux/shm_open.c
@@ -62,7 +62,8 @@ where_is_shmfs (void)
 
   /* The canonical place is /dev/shm.  This is at least what the
      documentation tells everybody to do.  */
-  if (__statfs (defaultdir, &f) == 0 && f.f_type == SHMFS_SUPER_MAGIC)
+  if (__statfs (defaultdir, &f) == 0 && (f.f_type == SHMFS_SUPER_MAGIC
+					 || f.f_type == RAMFS_MAGIC))
     {
       /* It is in the normal place.  */
       mountpoint.dir = (char *) defaultdir;
@@ -86,7 +87,8 @@ where_is_shmfs (void)
   while ((mp = __getmntent_r (fp, &resmem, buf, sizeof buf)) != NULL)
     /* The original name is "shm" but this got changed in early Linux
        2.4.x to "tmpfs".  */
-    if (strcmp (mp->mnt_type, "tmpfs") == 0)
+    if (strcmp (mp->mnt_type, "tmpfs") == 0
+	|| strcmp (mp->mnt_type, "shm") == 0)
       {
 	/* Found it.  There might be more than one place where the
            filesystem is mounted but one is enough for us.  */
@@ -95,7 +97,8 @@ where_is_shmfs (void)
 	/* First make sure this really is the correct entry.  At least
 	   some versions of the kernel give wrong information because
 	   of the implicit mount of the shmfs for SysV IPC.  */
-	if (__statfs (mp->mnt_dir, &f) != 0 || f.f_type != SHMFS_SUPER_MAGIC)
+	if (__statfs (mp->mnt_dir, &f) != 0 || (f.f_type != SHMFS_SUPER_MAGIC
+						&& f.f_type != RAMFS_MAGIC))
 	  continue;
 
 	namelen = strlen (mp->mnt_dir);