Here is the patch;

--- syscall1.c    2012-12-11 18:08:31.000000000 +0100
+++ syscall.c    2012-12-11 13:48:24.000000000 +0100
@@ -2498,7 +2498,7 @@
                       &tv, sizeof(tv)))
             return -EFAULT;
     }
-    if (err > 0)
+    if (err >= 0)
         for (i = 0; i < XNSELECT_MAX_TYPES; i++)
             if (ufd_sets[i]
                 && __xn_copy_to_user((void __user *) ufd_sets[i],

2012/12/11 alex alex <[email protected]>

> Tested. It seems to work!
> Thank you.
> I add the patch...
>
>
>
> 2012/12/11 alex alex <[email protected]>
>
>> I made the changes and I'm recompiling the kernel, so it takes a little
>> time ...
>> I'll let you know as soon as I know if it works.
>>
>>
>> 2012/12/11 Gilles Chanteperdrix <[email protected]>
>>
>>> On 12/11/2012 03:07 PM, alex alex wrote:
>>> > Hi,
>>> >
>>> >
>>> > The problem is the following:
>>> >
>>> >
>>> > When the timeout interval expires of the “select” function the return
>>> value
>>> > of FD_ISSET(fdr,&readfds) is 1 whereas it should be 0.
>>> >
>>> > In ksrc/skins/posix/syscall.c we can see that they are not copy to
>>> > userspace of select return value in case of timeout.
>>> >
>>> >
>>> >
>>> > The attached code shows this bug with the use of a rtdm driver.
>>>
>>> So, could you try making the obvious change in the code? Or do you need
>>> me to send you the patch?
>>>
>>> --
>>>                                             Gilles.
>>>
>>
>>
>
_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai

Reply via email to