Commit Graph

12519 Commits

Author SHA1 Message Date
Alan Coopersmith
9567fa9a72 __glXDRIscreenCreateContext: free context on failure, instead of leaking it
Reported with other leaks found by cppcheck in bugzilla #50281
https://bugs.freedesktop.org/show_bug.cgi?id=50281

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
2013-04-24 14:22:19 -07:00
Keith Packard
7ab98bafc9 Merge remote-tracking branch 'geertu/master' 2013-04-24 14:14:45 -07:00
Keith Packard
53da26afb7 Merge remote-tracking branch 'whot/for-keith' 2013-04-24 10:27:19 -07:00
Keith Packard
5ece86e921 Merge remote-tracking branch 'airlied/for-keithp-gpu-vt-owner' 2013-04-24 10:23:51 -07:00
Jeremy White
ef0a726bc8 Eliminate the use of xf86Rename.h
Signed-off-by: Jeremy White <jwhite@codeweavers.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2013-04-24 10:22:20 -07:00
Keith Packard
2b539239e4 Bump to 1.14.99.1
Snapshot with fix for CVE-2013-1940.

Signed-off-by: Keith Packard <keithp@keithp.com>
2013-04-24 10:11:03 -07:00
Andreas Müller
d8d3c78b6e dixstruct.h: fix segfaults - char is unsigned for ARM and PowerPC architectures
see ARM related bug reports [1-3]

[1] https://github.com/archlinuxarm/PKGBUILDs/issues/446I
[2] http://www.raspberrypi.org/phpBB3/viewtopic.php?t=38568&p=321673
[3] http://lists.linuxtogo.org/pipermail/openembedded-core/2013-April/037805.html

Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
Reviewed-by: Mark Kettenis <kettenis@openbsd.org>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-04-23 17:43:31 +10:00
Peter Hutterer
7d722796c6 dix: plug memory leak in freeing TouchClass
==15562== 1,800 bytes in 1 blocks are definitely lost in loss record 298 of 330
==15562==    at 0x4A06B6F: calloc (vg_replace_malloc.c:593)
==15562==    by 0x4312C7: InitTouchClassDeviceStruct (devices.c:1644)

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-04-23 17:33:24 +10:00
Geert Uytterhoeven
5ab260317a Xfbdev: Wire up Amiga afb4 and afb8 support
Add support for Amiga-style bitplanes, with 4 or 8 bits per pixel.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Keith Packard <keithp@keithp.com>
2013-04-18 13:10:26 +02:00
Geert Uytterhoeven
672bc5bb38 Xfbdev: Wire up Atari iplan2p4 and iplan2p8 support
Add support for Atari-style interleaved bitplanes, with 2 bytes interleave
and 4 or 8 bits per pixel.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Keith Packard <keithp@keithp.com>
2013-04-18 13:10:26 +02:00
Geert Uytterhoeven
95a3c7536c Xfbdev: Force shadowfb for frame buffers with non-packed pixels
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Keith Packard <keithp@keithp.com>
2013-04-18 13:10:26 +02:00
Geert Uytterhoeven
0e808110df Xfbdev: Reject unsupported frame buffer types
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Keith Packard <keithp@keithp.com>
2013-04-18 13:10:26 +02:00
Geert Uytterhoeven
cfd1057681 Shadow: Add support for Amiga afb8
Add support for Amiga-style bitplanes, with 8 bits per pixel.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Keith Packard <keithp@keithp.com>
2013-04-18 13:10:26 +02:00
Geert Uytterhoeven
a1b8e7f1e6 Shadow: Add support for Amiga afb4
Add support for Amiga-style bitplanes, with 4 bits per pixel.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Keith Packard <keithp@keithp.com>
2013-04-18 13:10:26 +02:00
Geert Uytterhoeven
d7181e567d Shadow: Add support for Atari iplan2p8
Add support for Atari-style interleaved bitplanes, with 2 bytes interleave
and 8 bits per pixel.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Keith Packard <keithp@keithp.com>
2013-04-18 13:10:26 +02:00
Geert Uytterhoeven
3f7506b0fc Shadow: Add support for Atari iplan2p4
Add support for Atari-style interleaved bitplanes, with 2 bytes interleave
and 4 bits per pixel.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Keith Packard <keithp@keithp.com>
2013-04-18 13:10:26 +02:00
Geert Uytterhoeven
87af9ab7d5 Shadow: Add c2p core
Add Chunky-to-Planar core functionality, to be used by the Atari and Amiga
(interleaved) bitplanes code.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Keith Packard <keithp@keithp.com>
2013-04-18 13:10:25 +02:00
Geert Uytterhoeven
4ee2566c3e Xfbdev: Treat 1 bpp pseudocolor as monochrome
miCreateDefColormap() only preallocates black and white pixels if
depth > 1.
Hence override the visual, so fbdevCreateColormap() takes care of it.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Keith Packard <keithp@keithp.com>
2013-04-18 13:10:25 +02:00
Geert Uytterhoeven
6dfb94a891 Xfbdev: Add support for monochrome visuals
Monochrome supports StaticGray, with hardcoded black and white pixels.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Keith Packard <keithp@keithp.com>
2013-04-18 13:10:25 +02:00
Geert Uytterhoeven
1049b32166 Xfbdev: Handle unset fix.line_length
Older frame buffer devices may not fill in fix.line_length, in which
case it must be calculated by the application.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2013-04-18 13:10:25 +02:00
Geert Uytterhoeven
5c509c360d Xfbdev: Make char *fbdevDevicePath const
This fixes:

hw/kdrive/fbdev/fbdev.c: In function 'fbdevInitialize':
hw/kdrive/fbdev/fbdev.c:41:25: warning: assignment discards 'const' qualifier from pointer target type [enabled by default]

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Keith Packard <keithp@keithp.com>
2013-04-18 13:10:25 +02:00
Geert Uytterhoeven
b08afbc53c KDrive: Bail out if screen initialization failed
Else we may get a segmentation fault later.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Keith Packard <keithp@keithp.com>
2013-04-18 13:10:25 +02:00
Geert Uytterhoeven
e7045c9dd2 test/input: Fix double-aligned test in dix_valuator_alloc() on m68k
On m68k, doubles are not 64-bit aligned, just like on i386 and sh.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2013-04-18 13:10:25 +02:00
Geert Uytterhoeven
8bb0616cc2 miext/shadow/shpacked.c: Remove unused PickBit() define
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Keith Packard <keithp@keithp.com>
2013-04-18 13:10:25 +02:00
Dave Airlie
6ca03b9161 xf86: fix flush input to work with Linux evdev devices.
So when we VT switch back and attempt to flush the input devices,
we don't succeed because evdev won't return part of an event,
since we were only asking for 4 bytes, we'd only get -EINVAL back.

This could later cause events to be flushed that we shouldn't have
gotten.

This is a fix for CVE-2013-1940.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-04-17 14:56:00 +10:00
Peter Hutterer
ddc149beaf Stop the shouting
Meanwhile, here in the future lowercase letters have been invented.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
2013-04-16 13:54:59 +10:00
Peter Hutterer
27356a45b4 dix: only allocate unused classes for master devices
Slave devices don't need these and the matching code in CloseDevice() has a
IsMaster() condition on freeing these, causing a leak.

==16111== 384 bytes in 4 blocks are definitely lost in loss record 72 of 105
==16111==    at 0x4C28BB4: calloc (vg_replace_malloc.c:467)
==16111==    by 0x42AEE2: AllocDevicePair (devices.c:2707)
==16111==    by 0x4BAA27: AllocXTestDevice (xtest.c:617)
==16111==    by 0x4BA89A: InitXTestDevices (xtest.c:570)
==16111==    by 0x425F5E: InitCoreDevices (devices.c:690)
==16111==    by 0x5ACB2D: main (main.c:257)

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
2013-04-16 13:54:45 +10:00
Maarten Lankhorst
98b94c36d6 dix: copy event in TouchConvertToPointerEvent correctly
Fixes reading random memory read beyond the end of original event.

sizeof device_event: 424
sizeof internal_event: 2800

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-04-16 07:32:42 +10:00
Knut Petersen
4bff442ec5 Never try to execute BellProcPtr NULL.
This prevents xts XI/XDeviceBell-2 test
from segfaulting the server.

Signed-off-by: Knut Petersen <Knut_Petersen@t-online.de>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-04-15 13:30:58 +10:00
Rui Matos
9003399708 Xi: fix swapped grab mode args for keyboard devices in XIGrabDevice
The protocol says that the grab_mode argument applies to the device
being grabbed and paired_device_mode to the paired master
device. GrabDevice() however takes in a pointer mode and a keyboard
mode and so we have to swap the values according the type of device
being grabbed.

Signed-off-by: Rui Matos <tiagomatos@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-04-15 10:21:48 +10:00
Bryce Harrington
d16284687d xfree86: Revert workaround for drm race condition.
Revert 70739e817b and mostly revert
c31eac647a.

Further investigation shows the encountered race condition is between
lightdm and plymouth-splash, as implemented in the Ubuntu distribution
within the limitations of upstart's job coordination logic, and can (and
should) be fixed within those limiations.  Not in xserver itself.

This leaves some of the diagnostic improvements from the recent patch
series, in case others run into a similar situation.

Signed-off-by: Bryce Harrington <bryce@canonical.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-04-12 10:03:29 +10:00
Peter Hutterer
131f883f85 xfree86: change a log message
This path is technically executed through config/udev, but having two
messages in the form "config/udev: Adding drm device" makes it appear as if
the udev filters are wrong and it's trying to add the same device twice. In
fact, it's only one device, only added once, but a duplicate log message.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
2013-04-12 10:03:24 +10:00
Dave Airlie
22cab8a28a xf86: don't hotplug output devices while VT switched.
We don't want to hotplug output devices while we are VT switched,
as we get races between multiple X servers on the device open, and
drm device master status. This just queues device opens until we return
from VT switch.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2013-04-12 10:01:23 +10:00
Dave Airlie
5b359cf613 xf86: use new xf86VTOwner interface in a few places
This replaces some previous uses of direct xf86Screens[0] accesses.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Dave Airlie <airlied@gmail.com>
2013-04-12 10:01:20 +10:00
Dave Airlie
d61ea1f64d xfree86: add VT owner interface
This is just a simple interface to avoid accessing x86Screens[0]
directly.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Dave Airlie <airlied@gmail.com>
2013-04-12 09:58:34 +10:00
Maarten Lankhorst
7347f39f94 Xi: Do not handle ET_TouchOwnership in ProcessTouchEvent
The event struct is different, causing memory corruption on 1.13 and 1.14,

as can be witnessed in https://bugs.freedesktop.org/show_bug.cgi?id=56578

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-04-11 15:03:25 +10:00
Keith Packard
dbba50a128 Xi: Use correct destination when swapping barrier events
Write the swapped values to the destination rather than the source.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-04-11 10:17:18 +10:00
Peter Hutterer
b86b3d10bb dix: don't set non-exisiting flags on touch events
Unlike pointer/keyboard events, the flags field for ET_Touch* is a set of
server-internal defines that we need to convert to XI protocol defines.
Currently only two of those defines actually translate to the protocol, so
make sure we don't send internal garbage down the wire.

No effect to current clients since they shouldn't look at undefined bits
anyway.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-04-11 10:16:22 +10:00
Jeremy White
ecf6275508 Define prototypes for hw/xfree86/modes/xf86Modes.c only in xf86Modes.h.
This removes a large number of redundant declaration warnings.

Signed-off-by: Jeremy White <jwhite@codeweavers.com>
Reviewed-by: Robert Morell <rmorell@nvidia.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2013-04-08 09:19:34 -07:00
Bryce Harrington
e13f299842 xfree86: Be verbose if waiting on opening the drm device
Signed-off-by: Bryce Harrington <bryce@canonical.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Keith Packard <keithp@keithp.com>
2013-04-08 09:13:18 -07:00
Bryce Harrington
70739e817b xfree86: Fix race condition failure opening drm.
If other processes have had drm open previously, xserver may attempt to
open the device too early and fail, with xserver error exit "Cannot
run in framebuffer mode" or Xorg.0.log messages about "setversion 1.4
failed".

In this situation, we're receiving back -EACCES from libdrm.  To address
this we need to re-set ourselves as the drm master, and keep trying to
set the interface until it works (or until we give up).

See https://bugs.launchpad.net/ubuntu/+source/libdrm/+bug/982889

Signed-off-by: Bryce Harrington <bryce@canonical.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Keith Packard <keithp@keithp.com>
2013-04-08 09:13:12 -07:00
Bryce Harrington
c31eac647a xfree86: Keep trying to set interface on drm for 2 seconds.
And if we've had to delay booting due to not being able to set the
interface, fess up.

Signed-off-by: Bryce Harrington <bryce@canonical.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Keith Packard <keithp@keithp.com>
2013-04-08 09:13:05 -07:00
Bryce Harrington
d1cc210de8 xfree86: Provide more details on failure
Signed-off-by: Bryce Harrington <bryce@canonical.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Keith Packard <keithp@keithp.com>
2013-04-08 09:13:02 -07:00
Bryce Harrington
f059d0dabc xfree86: Track error code and add label for error handling.
Signed-off-by: Bryce Harrington <bryce@canonical.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Keith Packard <keithp@keithp.com>
2013-04-08 09:12:56 -07:00
Bryce Harrington
4d7052bd7b xfree86: (Cleanup) Close fd if drm interface 1.4 could not be set.
Signed-off-by: Bryce Harrington <bryce@canonical.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Keith Packard <keithp@keithp.com>
2013-04-08 09:12:53 -07:00
Geert Uytterhoeven
8928f8fa0b kdrive/fbdev: revive randr new screen size logic
hw/kdrive/fbdev/fbdev.c: In function 'fbdevRandRSetConfig':
hw/kdrive/fbdev/fbdev.c:470:19: warning: variable 'newheight' set but not used [-Wunused-but-set-variable]
hw/kdrive/fbdev/fbdev.c:470:9: warning: variable 'newwidth' set but not used [-Wunused-but-set-variable]

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-04-02 15:30:38 +10:00
Peter Hutterer
808c87bff7 Revert "kdrive: fix "set but not used" warnings"
Partial revert of commit 4149ee8ec0, better
fix coming up.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-04-02 15:30:37 +10:00
vdb@picaros.org
ac4c2abe98 xserver: add monitor Option "ZoomModes" [v2]
Section "Monitor"
  Identifier "a21inch"
  Option "PreferredMode" "1600x1200"
  Option "ZoomModes" "1600x1200 1280x1024 1280x1024 640x480"
EndSection

The option's effect is to search for and mark once each named mode in
the output modes list.  So the specification order is free and the zoom
modes sequence follows the order of the output modes list.  All marked
modes are available via the Ctrl+Alt+Keypad-{Plus,Minus} key
combination.

See also http://bugs.freedesktop.org/show_bug.cgi?id=17954.

This option has its use for combined monitor and television setups.
It allows for easy switching between 60 Hz and 50 Hz modes even when a
monitor refuses to display the input signal.

(Includes a few minor changes suggested by Aaron for v2)

Signed-off-by: Servaas Vandenberghe <vdb@picaros.org>
Reviewed-by: Aaron Plattner <aplattner@nvidia.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2013-03-26 13:53:06 -07:00
Peter Hutterer
2967391c6d Xi: add a comment to make a condition a bit clearer
The commit message to 6764471901 explains it,
but that doesn't stop the WTF moment when reading the code.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2013-03-25 10:34:24 +10:00
Peter Hutterer
2fdde2c40d dix: update coords for touch events in PlayReleasedEvents
Note: this is only hit for #ifdef PANORAMIX

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2013-03-25 10:34:23 +10:00