Date: Mon, 28 Mar 2005 17:34:45 -0500 From: John Baldwin <jhb@FreeBSD.org> To: arch@FreeBSD.org Subject: Fixing DRM after phk's drive-by axeing Message-ID: <200503281734.45926.jhb@FreeBSD.org>
next in thread | raw e-mail | index | archive | help
I have a commit-ready version of the vm_mmap() changes I made to get drm to work happily with the newer, cleaner cdev stuff that phk has been working on. Basically, I've changed vm_mmap() so that it can accept either a vnode or a cdev as its handle argument rather than just vnodes. For the cdev case, it calls a vm_mmap_cdev() function that is a cut down version of vm_mmap_vnode(). One thing to note is that this case loses the MAC check for this type of mmap() (currently only done from DRM) since MAC only checks mmaps for vnodes. If cdev were to grow a label, then a mmap check for the cdev could be added I suppose, though the case of a mmap'ing a vnode that maps to a cdev would have to be adjusted to make that extra call as well. The first cut at the patch added a new MAP_CDEV flag to vm_mmap() that specified that the handle argument was a cdev rather than a vnode. However, this method requires that any kernel code that calls vm_mmap() passing in flags from userland has to verify that MAP_CDEV isn't passed in from userland to avoid potential DOSs from random user processes that result in kernel panics. Thus, I decided to change vm_mmap() to instead take a objtype_t parameter that specifies what type of object the handle argument is. Thus, for MAP_ANON, the code passes in OBJT_DEFAULT, for vnodes OBJT_VNODE, and for cdevs (in drm) OBJT_DEVICE. I've stuck the patch at http://www.FreeBSD.org/~jhb/patches/mmap_cdev3.patch and am using it locally to get X working on my laptop. Any objections or bikeshed^Wsuggestions for a different interface? -- John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200503281734.45926.jhb>