[PATCH] Properly convert f_fsid in statvfs
Andreas Schwab
schwab@redhat.com
Mon Sep 27 14:26:00 GMT 2010
2010-09-27 Andreas Schwab <schwab@redhat.com>
[BZ #11611]
* sysdeps/unix/sysv/linux/internal_statvfs.c (INTERNAL_STATVFS):
Mask out sign-bit copies when constructing f_fsid.
---
sysdeps/unix/sysv/linux/internal_statvfs.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/sysdeps/unix/sysv/linux/internal_statvfs.c b/sysdeps/unix/sysv/linux/internal_statvfs.c
index 0169ae3..83ffb99 100644
--- a/sysdeps/unix/sysv/linux/internal_statvfs.c
+++ b/sysdeps/unix/sysv/linux/internal_statvfs.c
@@ -228,7 +228,8 @@ INTERNAL_STATVFS (const char *name, struct STATVFS *buf,
buf->f_files = fsbuf->f_files;
buf->f_ffree = fsbuf->f_ffree;
if (sizeof (buf->f_fsid) == sizeof (fsbuf->f_fsid))
- buf->f_fsid = (fsbuf->f_fsid.__val[0]
+ buf->f_fsid = ((fsbuf->f_fsid.__val[0]
+ & ((1UL << (8 * sizeof (fsbuf->f_fsid.__val[0]))) - 1))
| ((unsigned long int) fsbuf->f_fsid.__val[1]
<< (8 * (sizeof (buf->f_fsid)
- sizeof (fsbuf->f_fsid.__val[0])))));
--
1.7.2.3
--
Andreas Schwab, schwab@redhat.com
GPG Key fingerprint = D4E8 DBE3 3813 BB5D FA84 5EC7 45C6 250E 6F00 984E
"And now for something completely different."
More information about the Libc-hacker
mailing list