On Wed, Mar 12, 2008 at 12:22:23AM -0700, Khem Raj wrote:
>
>On Mar 11, 2008, at 11:56 PM, Basheer, Mansoor Ahamed wrote:
>
>>
>>
>> Robert Wrote [mailto:[EMAIL PROTECTED]
>>>
>>> On Tue, 11 Mar 2008, Khem Raj wrote:
>>>
>>>>
>>>> On Mar 11, 2008, at 11:03 PM, Basheer, Mansoor Ahamed wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> Current mknod implementation fails for major/minor number greater
>> than
>>> 255.
>>>>
>>>> is linux kernel supporting major/minor numbers greater than 255 ?
>>>
>>> the *kernel* supports major/minor numbers of bit length (12,20).   
>>> it's
>>> only userspace that restricts their values to (8,8).
>>>
>>
>> Yes Robert you are right. For example USB endpoint devices use major  
>> 442
>> (drivers/usb/core/endpoint.c).
>
>>
>>
>> Also, __kernel_dev_t for ARM should be "unsigned int" and not  
>> "unsigned
>> short".
>>
>> Signed-off-by: Mansoor Ahamed <[EMAIL PROTECTED]>
>>
>> --- libc/sysdeps/linux/common/mknod.c 2008-03-11 17:43:54.000000000
>> +0530
>> +++ 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)
>
>
>OK. the change looks ok. A testcase would be good to have.

This change does definitely not look ok, given that it seems to only fix
a fraction of affected arches, AFAICS?

$ egrep "short.*kernel_dev_t" */bits/*.h
arm/bits/kernel_types.h:typedef unsigned short          __kernel_dev_t;
bfin/bits/kernel_types.h:typedef unsigned short __kernel_dev_t;
cris/bits/kernel_types.h:typedef unsigned short __kernel_dev_t;
e1/bits/kernel_types.h:typedef unsigned short   __kernel_dev_t;
frv/bits/kernel_types.h:typedef unsigned short  __kernel_dev_t;
h8300/bits/kernel_types.h:typedef unsigned short        __kernel_dev_t;
i386/bits/kernel_types.h:typedef unsigned short __kernel_dev_t;
m68k/bits/kernel_types.h:typedef unsigned short __kernel_dev_t;
nios/bits/kernel_types.h:typedef unsigned short __kernel_dev_t;
sh/bits/kernel_types.h:typedef unsigned short   __kernel_dev_t;
sh64/bits/kernel_types.h:typedef unsigned short  __kernel_dev_t;
sparc/bits/kernel_types.h:typedef unsigned short         __kernel_dev_t;
vax/bits/kernel_types.h:typedef unsigned short  __kernel_dev_t;

_______________________________________________
uClibc mailing list
[email protected]
http://busybox.net/cgi-bin/mailman/listinfo/uclibc

Reply via email to