]> git.pld-linux.org Git - packages/libdrm.git/blob - libdrm-2.4.0-no-freaking-mknod.patch
- up to 2.4.4
[packages/libdrm.git] / libdrm-2.4.0-no-freaking-mknod.patch
1 diff -up libdrm-2.4.0/libdrm/xf86drm.c.mknod libdrm-2.4.0/libdrm/xf86drm.c
2 --- libdrm-2.4.0/libdrm/xf86drm.c.mknod 2007-10-30 20:10:10.000000000 -0400
3 +++ libdrm-2.4.0/libdrm/xf86drm.c       2007-11-12 19:26:12.000000000 -0500
4 @@ -266,64 +266,12 @@ static int drmMatchBusID(const char *id1
5   */
6  static int drmOpenDevice(long dev, int minor)
7  {
8 -    stat_t          st;
9      char            buf[64];
10      int             fd;
11 -    mode_t          devmode = DRM_DEV_MODE, serv_mode;
12 -    int             isroot  = !geteuid();
13 -    uid_t           user    = DRM_DEV_UID;
14 -    gid_t           group   = DRM_DEV_GID, serv_group;
15      
16      sprintf(buf, DRM_DEV_NAME, DRM_DIR_NAME, minor);
17      drmMsg("drmOpenDevice: node name is %s\n", buf);
18  
19 -    if (drm_server_info) {
20 -       drm_server_info->get_perms(&serv_group, &serv_mode);
21 -       devmode  = serv_mode ? serv_mode : DRM_DEV_MODE;
22 -       devmode &= ~(S_IXUSR|S_IXGRP|S_IXOTH);
23 -       group = (serv_group >= 0) ? serv_group : DRM_DEV_GID;
24 -    }
25 -
26 -    if (stat(DRM_DIR_NAME, &st)) {
27 -       if (!isroot)
28 -           return DRM_ERR_NOT_ROOT;
29 -       mkdir(DRM_DIR_NAME, DRM_DEV_DIRMODE);
30 -       chown(DRM_DIR_NAME, 0, 0); /* root:root */
31 -       chmod(DRM_DIR_NAME, DRM_DEV_DIRMODE);
32 -    }
33 -
34 -    /* Check if the device node exists and create it if necessary. */
35 -    if (stat(buf, &st)) {
36 -       if (!isroot)
37 -           return DRM_ERR_NOT_ROOT;
38 -       remove(buf);
39 -       mknod(buf, S_IFCHR | devmode, dev);
40 -    }
41 -
42 -    if (drm_server_info) {
43 -       chown(buf, user, group);
44 -       chmod(buf, devmode);
45 -    }
46 -
47 -    fd = open(buf, O_RDWR, 0);
48 -    drmMsg("drmOpenDevice: open result is %d, (%s)\n",
49 -               fd, fd < 0 ? strerror(errno) : "OK");
50 -    if (fd >= 0)
51 -       return fd;
52 -
53 -    /* Check if the device node is not what we expect it to be, and recreate it
54 -     * and try again if so.
55 -     */
56 -    if (st.st_rdev != dev) {
57 -       if (!isroot)
58 -           return DRM_ERR_NOT_ROOT;
59 -       remove(buf);
60 -       mknod(buf, S_IFCHR | devmode, dev);
61 -       if (drm_server_info) {
62 -           chown(buf, user, group);
63 -           chmod(buf, devmode);
64 -       }
65 -    }
66      fd = open(buf, O_RDWR, 0);
67      drmMsg("drmOpenDevice: open result is %d, (%s)\n",
68                 fd, fd < 0 ? strerror(errno) : "OK");
69 @@ -331,7 +279,6 @@ static int drmOpenDevice(long dev, int m
70         return fd;
71  
72      drmMsg("drmOpenDevice: Open failed\n");
73 -    remove(buf);
74      return -errno;
75  }
76  
77 diff -up libdrm-2.4.0/libdrm/xf86drm.h.mknod libdrm-2.4.0/libdrm/xf86drm.h
78 --- libdrm-2.4.0/libdrm/xf86drm.h.mknod 2007-07-19 00:27:52.000000000 -0400
79 +++ libdrm-2.4.0/libdrm/xf86drm.h       2007-11-12 19:27:51.000000000 -0500
80 @@ -39,14 +39,6 @@
81  #include <stdint.h>
82  #include <drm.h>
83  
84 -                               /* Defaults, if nothing set in xf86config */
85 -#define DRM_DEV_UID     0
86 -#define DRM_DEV_GID     0
87 -/* Default /dev/dri directory permissions 0755 */
88 -#define DRM_DEV_DIRMODE                \
89 -       (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
90 -#define DRM_DEV_MODE    (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP)
91 -
92  #define DRM_DIR_NAME  "/dev/dri"
93  #define DRM_DEV_NAME  "%s/card%d"
94  #define DRM_PROC_NAME "/proc/dri/" /* For backward Linux compatibility */
This page took 0.060885 seconds and 3 git commands to generate.