On Tue, Mar 11, 2014 at 07:37:24AM -0300, Laércio de Sousa wrote: > 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
not related. this one fixes a crasher in the new systemd-logind code that is triggered if devices are statically set in the xorg.conf, not through the udev/hal backend. you'd see it with our without multiseat config :) Cheers, Peter > > 2014-03-11 4:09 GMT-03:00 Hans de Goede <[email protected]>: > > > 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 <[email protected]> > > > > Looks good: > > > > Reviewed-by: Hans de Goede <[email protected]> > > > > 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 */ > > > > > _______________________________________________ > > [email protected]: X.Org development > > Archives: http://lists.x.org/archives/xorg-devel > > Info: http://lists.x.org/mailman/listinfo/xorg-devel > > > _______________________________________________ > [email protected]: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
