diff options
Diffstat (limited to 'libc/sysdeps/linux/common')
-rw-r--r-- | libc/sysdeps/linux/common/mknod.c | 14 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/ustat.c | 13 |
2 files changed, 16 insertions, 11 deletions
diff --git a/libc/sysdeps/linux/common/mknod.c b/libc/sysdeps/linux/common/mknod.c index 5c7f9a5fd..7428e8be8 100644 --- a/libc/sysdeps/linux/common/mknod.c +++ b/libc/sysdeps/linux/common/mknod.c @@ -11,14 +11,18 @@ #include <sys/stat.h> #include <sys/sysmacros.h> -/* libc_hidden_proto(mknod) */ - #define __NR___syscall_mknod __NR_mknod -static __inline__ _syscall3(int, __syscall_mknod, const char *, path, - __kernel_mode_t, mode, __kernel_dev_t, dev) +/* kernel's fs/namei.c defines this: + * long sys_mknod(const char __user *filename, int mode, unsigned dev), + * so, no __kernel_mode_t and no __kernel_dev_t, please. + */ +static __inline__ _syscall3(int, __syscall_mknod, + const char *, path, + int /* __kernel_mode_t */, mode, + unsigned /* __kernel_dev_t */, dev) int mknod(const char *path, mode_t mode, dev_t dev) { - return __syscall_mknod(path, mode, (__kernel_dev_t)dev); + return __syscall_mknod(path, mode, dev); } libc_hidden_def(mknod) diff --git a/libc/sysdeps/linux/common/ustat.c b/libc/sysdeps/linux/common/ustat.c index 09edaa369..e97fa76bb 100644 --- a/libc/sysdeps/linux/common/ustat.c +++ b/libc/sysdeps/linux/common/ustat.c @@ -12,14 +12,15 @@ #include <sys/sysmacros.h> #define __NR___syscall_ustat __NR_ustat +/* Kernel's fs/super.c defines this: + * long sys_ustat(unsigned dev, struct ustat __user * ubuf), + * thus we use unsigned, not __kernel_dev_t. + */ static __inline__ _syscall2(int, __syscall_ustat, - unsigned short int, kdev_t, struct ustat *, ubuf) + unsigned, kdev_t, + struct ustat *, ubuf) int ustat(dev_t dev, struct ustat *ubuf) { - /* We must convert the dev_t value to a __kernel_dev_t */ - __kernel_dev_t k_dev; - - k_dev = ((major(dev) & 0xff) << 8) | (minor(dev) & 0xff); - return __syscall_ustat(k_dev, ubuf); + return __syscall_ustat(dev, ubuf); } |