mknod fails for major/minor number greater than 255

Basheer, Mansoor Ahamed mansoor.ahamed at ti.com
Tue Mar 11 13:47:27 UTC 2008


Current mknod implementation fails for major/minor number greater than
255.

I'm suggesting following change. Please comment.

-Mansoor

Signed-off-by: Mansoor Ahamed <mansoor.ahamed at ti.com>

--- uClibc/libc/sysdeps/linux/common/mknod.c    2008-03-11
17:43:54.000000000 +0530
+++ uClibc-new/libc/sysdeps/linux/common/mknod.c        2008-03-11
17:45:21.000000000 +0530
@@ -20,9 +20,8 @@ static inline _syscall3(int, __syscall_m
 int mknod(const char *path, mode_t mode, dev_t dev)
 {
        /* We must convert the dev_t value to a __kernel_dev_t */
-       __kernel_dev_t k_dev;
+       __kernel_dev_t k_dev = (__kernel_dev_t)dev;

-       k_dev = ((major(dev) & 0xff) << 8) | (minor(dev) & 0xff);
        return __syscall_mknod(path, mode, k_dev);
 }
 libc_hidden_def(mknod)




More information about the uClibc mailing list