NetBSD-Bugs archive

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

kern/45297: wscons ioctls are not compat_netbsd32 friendly



>Number:         45297
>Category:       kern
>Synopsis:       wscons ioctls are not compat_netbsd32 friendly
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Aug 25 19:45:01 +0000 2011
>Originator:     Manuel Bouyer
>Release:        NetBSD 5.99.55
>Organization:
>Environment:
System: NetBSD java.soc.lip6.fr 5.99.55 NetBSD 5.99.55 (LOONGSON) #22: Thu Aug 
25 19:51:06 CEST 2011  
bouyer@roll:/dsk/l1/misc/bouyer/tmp/evbmips64el/obj/dsk/l1/misc/bouyer/current/src/sys/arch/evbmips/compile/LOONGSON
 evbmips
Architecture: mipsel
Machine: evbmips
>Description:
        On a system running a 64bit evbmips kernel with a N32 userland
        (NetBSD doesn't provide 64bit userland by default):
java# wsconscfg 0
wsconscfg: WSDISPLAYIO_ADDSCREEN: Inappropriate ioctl for device
        I tracked it down to the WSDISPLAYIO_ADDSCREEN ioctl definition being
        different between LP32 and LP64 (from sys/dev/wscons/wsconsio.h):
struct wsdisplay_addscreendata {
        int idx; /* screen index */
        char *screentype;
        char *emul;
};
#define WSDISPLAYIO_ADDSCREEN   _IOW('W', 78, struct wsdisplay_addscreendata)

        sizeof(struct wsdisplay_addscreendata) is not the same on lp32 and
        lp64.
        Some other ioctls in this file also have eiter long or pointers
        as part of their argument.
>How-To-Repeat:
        try to use a 32bit wsconscfg on a 64bit kernel
>Fix:
        define and implement 32bit version of the affected ioctls in kernel.



Home | Main Index | Thread Index | Old Index