On Sat, Oct 04, 2008 at 07:23:30PM +0000, Konstantin Belousov wrote:
> kib         2008-10-04 19:23:30 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/compat/linux     linux_misc.c 
>   Log:
>   SVN rev 183612 on 2008-10-04 19:23:30Z by kib
>   
>   Current linux_fooaffinity() emulation fails, as the FreeBSD affinity
>   syscalls expect the bitmap size in the range from 32 to 128. Old glibc
>   always assumed size 1024, while newer glibc searches for approriate
>   size, starting from 1024 and going up.
>   
>   For now, use FreeBSD size of cpuset_t for bitmap size parameter and
>   return EINVAL if length of user space bitmap less than our size of
>   cpuset_t.
>   
>   Submitted by:   dchagin
>   MFC after:      1 week
>           [This requires MFC of the actual linux affinity syscalls]

I think this patch (actually, the reverse of this) is what should be
MFCed:

--- /tmp/linux_misc.c   2008-10-01 14:43:31.000000000 +0200
+++ linux_misc.c        2008-10-01 14:41:57.000000000 +0200
@@ -1739,13 +1739,13 @@
        int error;
        cpumask_t i = ~0;
 
-       if (args->len < sizeof(cpuset_t))
+       if (args->len < sizeof(cpumask_t))
                return (EINVAL);
 
-       error = copyout(&i, args->user_mask_ptr, sizeof(cpuset_t));
+       error = copyout(&i, args->user_mask_ptr, sizeof(cpumask_t));
        if (error)
                return (EFAULT);
 
-       td->td_retval[0] = sizeof(cpuset_t);
+       td->td_retval[0] = sizeof(cpumask_t);
        return (0);
 }

this is a minimal change I believe, Juergen Lock tested this.

Attachment: pgpeYDyVMzmUW.pgp
Description: PGP signature

Reply via email to