Hi,
here's a patch for a bug in skins/rtdm/syscall.c. The msghdr was not
copied to user space upon completion of a recvmsg() call if the return
value was not equal to zero. But recvmsg shall return the length of the
message in bytes (according to IEEE Std 1003.1).
I have the permission from Jan to patch his code. ;-)
Sebastian
--- xenomai/skins/rtdm/syscall.c 2005-11-10 16:45:24.000000000 +0100
+++ syscall.c 2005-11-10 16:27:08.000000000 +0100
@@ -99,7 +99,7 @@ static int sys_rtdm_recvmsg(struct task_
ret = _rtdm_recvmsg(curr, __xn_reg_arg1(regs), &krnl_msg,
__xn_reg_arg3(regs));
- if (!ret)
+ if (ret >= 0)
__xn_copy_to_user(curr, (void __user *)__xn_reg_arg2(regs), &krnl_msg,
sizeof(krnl_msg));