drm/linux-core
Eric Anholt 81459d6e50 Close a race which could allow for privilege escalation by users with DRI
privileges on Radeon hardware. Essentially, a malicious program could
    submit a packet containing an offset (possibly in main memory) to be
    rendered from/to, while a separate thread switched that offset in
    userspace rapidly between a valid value and an invalid one.
    radeon_check_and_fixup_offset() would pull the offset in from user
    space, check it, and spit it back out to user space to be copied in
    later by the emit code. It would sometimes catch the bad value, but
    sometimes the malicious program could modify it after the check and get
    an invalid offset rendered from/to.
Fix this by allocating a temporary buffer and copying the data in at once.
    While here, make the cliprects stuff not do the VERIFYAREA_READ and
    COPY_FROM_USER_UNCHECKED gymnastics, avoiding a lock order reversal on
    FreeBSD. Performance impact is negligible -- no difference on r200 to
    ~1% improvement on rv200 in quake3 tests (P4 1Ghz, demofour at
    1024x768, n=4 or 5).
2005-02-08 04:17:14 +00:00
..
Config.in Added via driver to drm/linux/Config.in Reported by: Terry Barnaby 2004-03-26 13:42:48 +00:00
Doxyfile Update Doxygen configuration & comments. 2004-10-18 14:16:41 +00:00
Kconfig fix up whitespacing in Kconfig 2004-10-09 11:16:20 +00:00
Makefile Fix cut & paste problem 2005-01-19 10:03:33 +00:00
Makefile.kernel remove duplicate drm_sysfs.o 2005-01-16 07:49:55 +00:00
README.drm More changes for sync with Linux 2.4.0-test9-pre7 2000-09-29 02:05:41 +00:00
ati_pcigart.c Use wbinvd macro instead of assembly for it, 2004-12-10 11:53:24 +00:00
drmP.h fix agp detection on linux 2005-02-07 10:44:28 +00:00
drm_agpsupport.c Round 2 of getting rid of inter_module_get() 2004-10-23 18:12:34 +00:00
drm_auth.c Update Doxygen configuration & comments. 2004-10-18 14:16:41 +00:00
drm_bufs.c - Implement drm_initmap, and extend it with the resource number to help 2005-02-05 08:00:14 +00:00
drm_compat.h Round 2 of getting rid of inter_module_get() 2004-10-23 18:12:34 +00:00
drm_context.c Update Doxygen configuration & comments. 2004-10-18 14:16:41 +00:00
drm_core.h change DRIVER_ to CORE_ makes things look nicer, also change it so the 2005-02-07 11:20:43 +00:00
drm_dma.c Allow drivers to override reclaim_buffers in an OS-independent way by 2004-10-31 15:16:44 +00:00
drm_drawable.c Update Doxygen configuration & comments. 2004-10-18 14:16:41 +00:00
drm_drv.c Invalid bound check of driver defined ioctls in drm_ioctl 2005-02-07 22:55:54 +00:00
drm_fops.c Allow drivers to override reclaim_buffers in an OS-independent way by 2004-10-31 15:16:44 +00:00
drm_ioctl.c hopefully fix drm_core setversion ioctl... pointed out by Eric on irc 2005-01-24 01:05:07 +00:00
drm_irq.c Update Doxygen configuration & comments. 2004-10-18 14:16:41 +00:00
drm_lock.c Update Doxygen configuration & comments. 2004-10-18 14:16:41 +00:00
drm_memory.c Update Doxygen configuration & comments. 2004-10-18 14:16:41 +00:00
drm_memory.h Adjust 4 level page check for <= 2.6.10 2005-01-09 17:30:44 +00:00
drm_memory_debug.c Update Doxygen configuration & comments. 2004-10-18 14:16:41 +00:00
drm_memory_debug.h Make the debug memory functions compile for the core model. 2004-09-30 23:47:45 +00:00
drm_os_linux.h Close a race which could allow for privilege escalation by users with DRI 2005-02-08 04:17:14 +00:00
drm_pci.c Added a new DRM map type _DRM_CONSISTENT for consistent PCI memory. It uses 2005-01-01 20:03:15 +00:00
drm_proc.c Added a new DRM map type _DRM_CONSISTENT for consistent PCI memory. It uses 2005-01-01 20:03:15 +00:00
drm_scatter.c Update Doxygen configuration & comments. 2004-10-18 14:16:41 +00:00
drm_stub.c change DRIVER_ to CORE_ makes things look nicer, also change it so the 2005-02-07 11:20:43 +00:00
drm_sysfs.c change DRIVER_ to CORE_ makes things look nicer, also change it so the 2005-02-07 11:20:43 +00:00
drm_vm.c Use virt_to_page instead of vmalloc_to_page in drm_do_vm_shm_nopage for 2005-01-12 16:07:49 +00:00
ffb_context.c Remove DRM() macros from core ffb driver. DaveA says he'll make it compile 2004-09-30 21:27:59 +00:00
ffb_drv.c Add a poll function that alternates between zero and normal poll return to 2004-10-13 16:40:53 +00:00
ffb_drv.h Remove DRM() macros from core ffb driver. DaveA says he'll make it compile 2004-09-30 21:27:59 +00:00
i810_dma.c make more functions static in i810 and fix pageflip cleanup 2005-02-01 10:18:27 +00:00
i810_drm.h Lindent of core build. Drivers checked for no binary diffs. A few files 2004-09-30 21:12:10 +00:00
i810_drv.c make more functions static in i810 and fix pageflip cleanup 2005-02-01 10:18:27 +00:00
i810_drv.h make more functions static in i810 and fix pageflip cleanup 2005-02-01 10:18:27 +00:00
i830_dma.c update i830 similiar to the kernel, add statics 2005-02-01 10:33:51 +00:00
i830_drm.h Lindent of core build. Drivers checked for no binary diffs. A few files 2004-09-30 21:12:10 +00:00
i830_drv.c update i830 similiar to the kernel, add statics 2005-02-01 10:33:51 +00:00
i830_drv.h update i830 similiar to the kernel, add statics 2005-02-01 10:33:51 +00:00
i830_irq.c update i830 similiar to the kernel, add statics 2005-02-01 10:33:51 +00:00
i915_drv.c make functions static in i915, remove unused functions 2005-02-01 10:43:42 +00:00
mach64_drv.c make linux-core build again 2004-11-09 03:36:06 +00:00
mga_drv.c Fix more build problems on linux-core 2004-11-09 16:58:02 +00:00
r128_drv.c Fix Linux build. Why won't this complile? extern int const foo; static 2004-11-06 16:41:24 +00:00
radeon_drv.c fix radeon drv 2005-01-29 23:05:35 +00:00
radeon_i2c.c Prepare to eliminate inter_module_get("agp") 2004-10-23 04:21:27 +00:00
radeon_i2c.h Lindent of core build. Drivers checked for no binary diffs. A few files 2004-09-30 21:12:10 +00:00
savage_drv.c Setup MTRRs for frame buffer and aperture manually on Savage3D and 2005-01-15 16:55:01 +00:00
sis_drv.c make linux-core build again 2004-11-09 03:36:06 +00:00
tdfx_drv.c Add a poll function that alternates between zero and normal poll return to 2004-10-13 16:40:53 +00:00

README.drm

************************************************************
* For the very latest on DRI development, please see:      *
*     http://dri.sourceforge.net/                          *
************************************************************

The Direct Rendering Manager (drm) is a device-independent kernel-level
device driver that provides support for the XFree86 Direct Rendering
Infrastructure (DRI).

The DRM supports the Direct Rendering Infrastructure (DRI) in four major
ways:

    1. The DRM provides synchronized access to the graphics hardware via
       the use of an optimized two-tiered lock.

    2. The DRM enforces the DRI security policy for access to the graphics
       hardware by only allowing authenticated X11 clients access to
       restricted regions of memory.

    3. The DRM provides a generic DMA engine, complete with multiple
       queues and the ability to detect the need for an OpenGL context
       switch.

    4. The DRM is extensible via the use of small device-specific modules
       that rely extensively on the API exported by the DRM module.


Documentation on the DRI is available from:
    http://precisioninsight.com/piinsights.html

For specific information about kernel-level support, see:

    The Direct Rendering Manager, Kernel Support for the Direct Rendering
    Infrastructure
    http://precisioninsight.com/dr/drm.html

    Hardware Locking for the Direct Rendering Infrastructure
    http://precisioninsight.com/dr/locking.html

    A Security Analysis of the Direct Rendering Infrastructure
    http://precisioninsight.com/dr/security.html

************************************************************
* For the very latest on DRI development, please see:      *
*     http://dri.sourceforge.net/                          *
************************************************************