Hi there! Could this other one by Oleg Samarin be related (except for the xf86Bus.c patch, which I've sent previously and is already under review)?
http://thread.gmane.org/gmane.comp.freedesktop.xorg.devel/37377 CANTATE DOMINO CANTICUM NOVUM QUIA MIRABILIA FECIT Laércio 2014-03-11 4:09 GMT-03:00 Hans de Goede <hdego...@redhat.com>: > Hi, > > On 03/11/2014 05:32 AM, Peter Hutterer wrote: > > Only devices from the config backend have their attributes set, devices > from > > the xorg.conf only have Option "Device". That option is also set by the > > config backend, so use it. > > > > And since the config backend sets our major/minor but xorg.conf devices > don't > > have that set, make sure we try to stat it first where needed. > > > > Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> > > Looks good: > > Reviewed-by: Hans de Goede <hdego...@redhat.com> > > Regards, > > Hans > > > > --- > > Fixes a crash when running with hotplug disabled and fixed devices in the > > xorg.conf > > > > hw/xfree86/common/xf86Xinput.c | 22 ++++++++++++++++++++-- > > 1 file changed, 20 insertions(+), 2 deletions(-) > > > > diff --git a/hw/xfree86/common/xf86Xinput.c > b/hw/xfree86/common/xf86Xinput.c > > index 7c3e479..36b92a9 100644 > > --- a/hw/xfree86/common/xf86Xinput.c > > +++ b/hw/xfree86/common/xf86Xinput.c > > @@ -81,6 +81,7 @@ > > > > #include <stdarg.h> > > #include <stdint.h> /* for int64_t */ > > +#include <sys/stat.h> > > #include <unistd.h> > > > > #include "mi.h" > > @@ -804,6 +805,18 @@ xf86InputDevicePostInit(DeviceIntPtr dev) > > return Success; > > } > > > > +static void > > +xf86stat(const char *path, int *maj, int *min) > > +{ > > + struct stat st; > > + > > + if (stat(path, &st) == -1) > > + return; > > + > > + *maj = major(st.st_rdev); > > + *min = minor(st.st_rdev); > > +} > > + > > /** > > * Create a new input device, activate and enable it. > > * > > @@ -828,6 +841,7 @@ xf86NewInputDevice(InputInfoPtr pInfo, DeviceIntPtr > *pdev, BOOL enable) > > DeviceIntPtr dev = NULL; > > Bool paused; > > int rval; > > + const char *path; > > > > /* Memory leak for every attached device if we don't > > * test if the module is already loaded first */ > > @@ -841,9 +855,13 @@ xf86NewInputDevice(InputInfoPtr pInfo, DeviceIntPtr > *pdev, BOOL enable) > > goto unwind; > > } > > > > - if (drv->capabilities & XI86_DRV_CAP_SERVER_FD) { > > + path = xf86CheckStrOption(pInfo->options, "Device", NULL); > > + if (path && pInfo->major == 0 && pInfo->minor == 0) > > + xf86stat(path, &pInfo->major, &pInfo->minor); > > + > > + if (path && (drv->capabilities & XI86_DRV_CAP_SERVER_FD)){ > > int fd = systemd_logind_take_fd(pInfo->major, pInfo->minor, > > - pInfo->attrs->device, &paused); > > + path, &paused); > > if (fd != -1) { > > if (paused) { > > /* Put on new_input_devices list for delayed probe */ > > > _______________________________________________ > xorg-devel@lists.x.org: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel >
_______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel