1. 29 Dec, 2008 3 commits
    • Vegard Nossum's avatar
      drm: fix leak of uninitialized data to userspace · 1147c9cd
      Vegard Nossum authored
      ...so drm_getunique() is trying to copy some uninitialized data to
      userspace. The ECX register contains the number of words that are
      left to copy -- so there are 5 * 4 = 20 bytes left. The offset of the
      first uninitialized byte (counting from the start of the string) is
      also 20 (i.e. 0xf65d2294&((1 << 5)-1) == 20). So somebody tried to
      copy 40 bytes when the string was only 19 long.
      
      In drm_set_busid() we have this code:
      
              dev->unique_len = 40;
              dev->unique = drm_alloc(dev->unique_len + 1, DRM_MEM_DRIVER);
            ...
              len = snprintf(dev->unique, dev->unique_len, pci:%04x:%02x:%02x.%d",
      
      ...so it seems that dev->unique is never updated to reflect the
      actual length of the string. The remaining bytes (20 in this case)
      are random uninitialized bytes that are copied into userspace.
      
      This patch fixes the problem by setting dev->unique_len after the
      snprintf().
      
      airlied- I've had to fix this up to store the alloced size so
      we have it for drm_free later.
      Reported-by: default avatarSitsofe Wheeler <sitsofe@yahoo.com>
      Signed-off-by: default avatarVegard Nossum <vegardno@thuin.ifi.uio.no>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      1147c9cd
    • Dave Airlie's avatar
      drm: move to kref per-master structures. · 7c1c2871
      Dave Airlie authored
      This is step one towards having multiple masters sharing a drm
      device in order to get fast-user-switching to work.
      
      It splits out the information associated with the drm master
      into a separate kref counted structure, and allocates this when
      a master opens the device node. It also allows the current master
      to abdicate (say while VT switched), and a new master to take over
      the hardware.
      
      It moves the Intel and radeon drivers to using the sarea from
      within the new master structures.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      7c1c2871
    • Dave Airlie's avatar
      drm: cleanup exit path for module unload · e7f7ab45
      Dave Airlie authored
      The current sub-module unload exit path is a mess, it tries
      to abuse the idr. Just keep a list of devices per driver struct
      and free them in-order on rmmod.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      e7f7ab45
  2. 24 Dec, 2008 8 commits
  3. 23 Dec, 2008 7 commits
  4. 22 Dec, 2008 7 commits
  5. 20 Dec, 2008 4 commits
  6. 19 Dec, 2008 11 commits