diff options
Diffstat (limited to 'libpthread')
| -rw-r--r-- | libpthread/nptl/linux_fsinfo.h | 5 | ||||
| -rw-r--r-- | libpthread/nptl/sem_open.c | 8 | 
2 files changed, 10 insertions, 3 deletions
diff --git a/libpthread/nptl/linux_fsinfo.h b/libpthread/nptl/linux_fsinfo.h index 8537581a2..4abe7920d 100644 --- a/libpthread/nptl/linux_fsinfo.h +++ b/libpthread/nptl/linux_fsinfo.h @@ -126,7 +126,10 @@  #define XENIX_SUPER_MAGIC	0x012ff7b4  /* Constant that identifies the `shm' filesystem.  */ -#define SHMFS_SUPER_MAGIC	0x01021994 +/* Mount as tmpfs.  */ +#define SHMFS_SUPER_MAGIC_WITH_MMU      0x01021994 +/* The kernel uses a ramfs file system for tmpfs.  */ +#define SHMFS_SUPER_MAGIC_WITHOUT_MMU   0x858458f6  /* Constants that identify the `xfs' filesystem.  */  #define XFS_SUPER_MAGIC		0x58465342 diff --git a/libpthread/nptl/sem_open.c b/libpthread/nptl/sem_open.c index d811ec503..2746da1b7 100644 --- a/libpthread/nptl/sem_open.c +++ b/libpthread/nptl/sem_open.c @@ -72,7 +72,9 @@ __where_is_shmfs (void)    /* The canonical place is /dev/shm.  This is at least what the       documentation tells everybody to do.  */ -  if (__statfs (defaultmount, &f) == 0 && f.f_type == SHMFS_SUPER_MAGIC) +  if (__statfs (defaultmount, &f) == 0 +      && (f.f_type == SHMFS_SUPER_MAGIC_WITH_MMU +	  || f.f_type == SHMFS_SUPER_MAGIC_WITHOUT_MMU))      {        /* It is in the normal place.  */        mountpoint.dir = (char *) defaultdir; @@ -106,7 +108,9 @@ __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_WITH_MMU +		&& f.f_type != SHMFS_SUPER_MAGIC_WITHOUT_MMU))  	  continue;  	namelen = strlen (mp->mnt_dir);  | 
