This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH v2/committed] shm_open: sync with logic in sem_open
- From: Mike Frysinger <vapier at gentoo dot org>
- To: libc-alpha at sourceware dot org
- Date: Sat, 8 Feb 2014 08:18:09 -0500
- Subject: [PATCH v2/committed] shm_open: sync with logic in sem_open
- Authentication-results: sourceware.org; auth=none
- References: <20140123112143 dot GU5544 at spoyarek dot pnq dot redhat dot com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
v2
- fixed style issues pointed out by Siddhesh
ChangeLog | 5 +++++
sysdeps/unix/sysv/linux/shm_open.c | 9 ++++++---
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index f59152e..34b2edf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2014-02-08 Mike Frysinger <vapier@gentoo.org>
+ * sysdeps/unix/sysv/linux/shm_open.c (where_is_shmfs): Compare
+ f.f_type to RAMFS_MAGIC too. Compare mp->mnt_type to shm too.
+
+2014-02-08 Mike Frysinger <vapier@gentoo.org>
+
* manual/setjmp.texi: Fix typos/grammar errors.
2014-02-08 Mike Frysinger <vapier@gentoo.org>
diff --git a/sysdeps/unix/sysv/linux/shm_open.c b/sysdeps/unix/sysv/linux/shm_open.c
index 5f23515..fef8fd5 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);
--
1.8.5.4