Port-amd64 archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Linux emulation problem



In article 
<0802C3AF-3EB1-459B-884C-FD6DC277CEF0%physik.uni-wuppertal.de@localhost>,
Torsten Harenberg  <harenberg%physik.uni-wuppertal.de@localhost> wrote:
>Hi Christos,
>
>thanks for your quick reply!
>
>Am 28.06.2011 um 15:07 schrieb Christos Zoulas:
>
>> Great, now that you are on current it is a lot easier to help. Please
>> compile a kernel with DEBUG_LINUX. This will dump the contents of the
>> sockaddr we are barfing on. I think 0xc (12) is a tad small so I am
>> wondering what we are trying to do here.
>
>
>I compiled a new kernel with
>
>mail# uname -a
>NetBSD mail.physik.uni-wuppertal.de 5.99.53 NetBSD 5.99.53
>(XEN3_DOM_linux_debug) #0: Tue Jun 28 15:26:12 CEST 2011 
>root%mail.physik.uni-wuppertal.de@localhost:/usr/obj/sys/arch/amd64/compile/XEN3_DOM_linux_debug
> amd64
>
>mail# grep DEBUG_LINUX /usr/src/sys/arch/amd64/conf/XEN3_DOM_linux_debug
>
>options DEBUG_LINUX
>options DEBUG_LINUX_FUTEX
>
>and run again:
>
>mail# ktrace ./nsrexecd > suse100_debug_kdump 
>linux_probe: returning 0
>family 34, len = 12 [ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
>family 1, len = 110 [ 2f 76 61 72 2f 72 75 6e 2f 6e 73 63 64 2f 
>family 1, len = 110 [ 2f 76 61 72 2f 72 75 6e 2f 6e 73 63 64 2f 
>family 2, len = 16 [ 00 35 84 c3 f9 0d 00 00 00 00 00 00 00 00 
>family 2, len = 16 [ 00 35 84 c3 f9 0d 00 00 00 00 00 00 00 00 
>family 2, len = 16 [ 00 35 84 c3 f9 0d 00 00 00 00 00 00 00 00 
>family 34, len = 12 [ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

Family 34 is mISDN and it tried to open a NETLINK socket raw. Can
you try this patch to make it fail earlier?

Index: linux_socket.c
===================================================================
RCS file: /cvsroot/src/sys/compat/linux/common/linux_socket.c,v
retrieving revision 1.108
diff -u -u -r1.108 linux_socket.c
--- linux_socket.c      2 Nov 2010 18:02:59 -0000       1.108
+++ linux_socket.c      28 Jun 2011 18:02:58 -0000
@@ -309,6 +309,8 @@
        SCARG(&bsa, domain) = linux_to_bsd_domain(SCARG(uap, domain));
        if (SCARG(&bsa, domain) == -1)
                return EINVAL;
+       if (SCARG(&bsa, domain) == AF_ROUTE && SCARG(&bsa, type) == SOCK_RAW)
+               return EOPNOTSUP;
        flags = SCARG(uap, type) & ~LINUX_SOCK_TYPE_MASK;
        if (flags & ~(LINUX_SOCK_CLOEXEC | LINUX_SOCK_NONBLOCK))
                return EINVAL;

christos



Home | Main Index | Thread Index | Old Index