Commit Graph

606 Commits

Author SHA1 Message Date
Mark Brown
bb0dddf615 Merge remote-tracking branch 'lsk/v3.10/topic/aosp' into linux-linaro-lsk-android
Conflicts:
	arch/arm64/Kconfig
	arch/arm64/crypto/Makefile
	arch/arm64/crypto/aes-glue.c
	arch/arm64/crypto/ghash-ce-core.S
	arch/arm64/crypto/ghash-ce-glue.c
	arch/arm64/include/asm/ptrace.h
	arch/arm64/include/asm/thread_info.h
	arch/arm64/kernel/fpsimd.c
	crypto/ablk_helper.c
	drivers/base/cpu.c
	drivers/hid/hid-core.c
	net/ipv4/raw.c
2014-09-08 12:05:48 +01:00
Amit Pundir
4f1d8e6268 Merge branch 'upstream/android-3.10' into 'linaro-fixes/android-3.10' 2014-09-01 16:54:38 +05:30
Kees Cook
81ff7fa232 seccomp: implement SECCOMP_FILTER_FLAG_TSYNC
Applying restrictive seccomp filter programs to large or diverse
codebases often requires handling threads which may be started early in
the process lifetime (e.g., by code that is linked in). While it is
possible to apply permissive programs prior to process start up, it is
difficult to further restrict the kernel ABI to those threads after that
point.

This change adds a new seccomp syscall flag to SECCOMP_SET_MODE_FILTER for
synchronizing thread group seccomp filters at filter installation time.

When calling seccomp(SECCOMP_SET_MODE_FILTER, SECCOMP_FILTER_FLAG_TSYNC,
filter) an attempt will be made to synchronize all threads in current's
threadgroup to its new seccomp filter program. This is possible iff all
threads are using a filter that is an ancestor to the filter current is
attempting to synchronize to. NULL filters (where the task is running as
SECCOMP_MODE_NONE) are also treated as ancestors allowing threads to be
transitioned into SECCOMP_MODE_FILTER. If prctrl(PR_SET_NO_NEW_PRIVS,
...) has been set on the calling thread, no_new_privs will be set for
all synchronized threads too. On success, 0 is returned. On failure,
the pid of one of the failing threads will be returned and no filters
will have been applied.

The race conditions against another thread are:
- requesting TSYNC (already handled by sighand lock)
- performing a clone (already handled by sighand lock)
- changing its filter (already handled by sighand lock)
- calling exec (handled by cred_guard_mutex)
The clone case is assisted by the fact that new threads will have their
seccomp state duplicated from their parent before appearing on the tasklist.

Holding cred_guard_mutex means that seccomp filters cannot be assigned
while in the middle of another thread's exec (potentially bypassing
no_new_privs or similar). The call to de_thread() may kill threads waiting
for the mutex.

Changes across threads to the filter pointer includes a barrier.

Based on patches by Will Drewry.

Suggested-by: Julien Tinnes <jln@chromium.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: Andy Lutomirski <luto@amacapital.net>
2014-08-28 01:54:06 +00:00
Kees Cook
a75a29b16e seccomp: add "seccomp" syscall
This adds the new "seccomp" syscall with both an "operation" and "flags"
parameter for future expansion. The third argument is a pointer value,
used with the SECCOMP_SET_MODE_FILTER operation. Currently, flags must
be 0. This is functionally equivalent to prctl(PR_SET_SECCOMP, ...).

In addition to the TSYNC flag later in this patch series, there is a
non-zero chance that this syscall could be used for configuring a fixed
argument area for seccomp-tracer-aware processes to pass syscall arguments
in the future. Hence, the use of "seccomp" not simply "seccomp_add_filter"
for this syscall. Additionally, this syscall uses operation, flags,
and user pointer for arguments because strictly passing arguments via
a user pointer would mean seccomp itself would be unable to trivially
filter the seccomp syscall itself.

Signed-off-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: Andy Lutomirski <luto@amacapital.net>

Conflicts:
	arch/x86/syscalls/syscall_32.tbl
	arch/x86/syscalls/syscall_64.tbl
	include/uapi/asm-generic/unistd.h
	kernel/seccomp.c

Change-Id: Id7a365079829fd9164315dec75d6ee415c29b176
2014-08-28 01:51:54 +00:00
Amit Pundir
b04d002dfd Merge branch 'upstream/android-3.10' into linaro-fixes/android-3.10 2014-08-18 11:59:18 +05:30
JP Abgrall
687f999e1f ext4: Add support for FIDTRIM, a best-effort ioctl for deep discard trim
* What
This provides an interface for issuing an FITRIM which uses the
secure discard instead of just a discard.
Only the eMMC command is "secure", and not how the FS uses it:
due to the fact that the FS might reassign a region somewhere else,
the original deleted data will not be affected by the "trim" which only
handles un-used regions.
So we'll just call it "deep discard", and note that this is a
"best effort" cleanup.

* Why
Once in a while, We want to be able to cleanup most of the unused blocks
after erasing a bunch of files.
We don't want to constantly secure-discard via a mount option.

From an eMMC spec perspective, it tells the device to really get rid of
all the data for the specified blocks and not just put them back into the
pool of free ones (unlike the normal TRIM). The eMMC spec says the
secure trim handling must make sure the data (and metadata) is not available
anymore. A simple TRIM doesn't clear the data, it just puts blocks in the
free pool.
JEDEC Standard No. 84-A441
  7.6.9 Secure Erase
  7.6.10 Secure Trim

From an FS perspective, it is acceptable to leave some data behind.
 - directory entries related to deleted files
 - databases entries related to deleted files
 - small-file data stored in inode extents
 - blocks held by the FS waiting to be re-used (mitigated by sync).
 - blocks reassigned by the FS prior to FIDTRIM.

Change-Id: I676a1404a80130d93930c84898360f2e6fb2f81e
Signed-off-by: Geremy Condra <gcondra@google.com>
Signed-off-by: JP Abgrall <jpa@google.com>
2014-07-29 12:32:58 -07:00
John Stultz
41a50bdf16 Merge branch 'upstream/android-3.10' into linaro-fixes/android-3.10 2014-07-15 17:41:04 -07:00
Mark Brown
471dd6b43f Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android 2014-07-01 11:20:33 +01:00
Mark Brown
d01bd6fdb3 This is the 3.10.46 stable release
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABAgAGBQJTsiaNAAoJEDjbvchgkmk+6BAQAMCnoWzRHg19+0/sfRrKhOcW
 Y9dZHpZctunznnjkm72MO1lonS8t0u5GhjCbbzMiveQVxCywpMeaqhL5zPZ8dCnc
 zkX7WltI8bR9MtGTawZqVj/2M2+KCwkJ5rp6sB/4vtluzHUv0AO77yuW6VSZDC9+
 srdpvLEhIhgzYjxNZPlrOt3yInZEdORWHEvJACa1e9nnnbF86wUm1zHso4thdXGs
 s4Yyt8vfc2zARfupIYs6gklWzUGHSOXmEizITV5fzOXqzyRhi104F/qJI9ZIBpb0
 rGw1i59rvu3Aj3zRgnneKVpKBK62O6APbv9fZYJtTU0tzCrdeKkC846OZvrtRlUj
 Z2umcCK8GgR9zasJ2DjB1RZwLjJlW2HL7taX9472ZIGE6CyHS9cJer72cFibGWLv
 c0pFyDYDF2lH1i/ydUqMmY9D923xzQ4IUaoGwKi8LQMN2B8Uqczs8P/sZsfx87kj
 W6Zp6C/f9qfapyGyidmP1tAj4yUWsgfFlNi8/5Ti8EQDBfAwwDEetOmXxDyZOI6Z
 RiaddNESExipT+css/2enELVQMoHl5GZ0KhTPVx3c6FgZyRuDIF5ffsyoup/72lV
 +B+Vw0H4SbpmlskI/1Lr2Z/GmUq5I0CFgnHVR+bCMLnx8W0jXDngPFknqsi6TLSR
 AhLV6i5qWzxY8sc6abZW
 =xTJ9
 -----END PGP SIGNATURE-----

Merge tag 'v3.10.46' into linux-linaro-lsk

This is the 3.10.46 stable release
2014-07-01 11:19:52 +01:00
Wang, Xiaoming
d2c44167ec ALSA: compress: Cancel the optimization of compiler and fix the size of struct for all platform.
commit 2bd0ae464a upstream.

Cancel the optimization of compiler for struct snd_compr_avail
which size will be 0x1c in 32bit kernel while 0x20 in 64bit
kernel under the optimizer. That will make compaction between
32bit and 64bit. So add packed to fix the size of struct
snd_compr_avail to 0x1c for all platform.

Signed-off-by: Zhang Dongxing <dongxing.zhang@intel.com>
Signed-off-by: xiaoming wang <xiaoming.wang@intel.com>
Acked-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-06-26 15:12:41 -04:00
Lorenzo Colitti
99a6ea48b5 net: core: Support UID-based routing.
This contains the following commits:

1. cc2f522 net: core: Add a UID range to fib rules.
2. d7ed2bd net: core: Use the socket UID in routing lookups.
3. 2f9306a net: core: Add a RTA_UID attribute to routes.
    This is so that userspace can do per-UID route lookups.
4. 8e46efb net: ipv6: Use the UID in IPv6 PMTUD
    IPv4 PMTUD already does this because ipv4_sk_update_pmtu
    uses __build_flow_key, which includes the UID.

Bug: 15413527
Change-Id: I81bd31dae655de9cce7d7a1f9a905dc1c2feba7c
Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
2014-06-25 12:41:52 +09:00
Mark Brown
40329a6815 Merge remote-tracking branch 'lsk/v3.10/topic/aosp' into linux-linaro-lsk-android
Conflicts:
	net/wireless/nl80211.c
2014-06-19 11:42:18 +01:00
John Stultz
0b3d5ff454 Merge branch 'upstream/android-3.10' into linaro-fixes/android-3.10 2014-06-18 09:32:43 -07:00
Dmitry Shmidt
47f7337804 nl80211: cumulative vendor command support patch
Based on commit d3fd06d0259232e1362c6d1da136970d26628467
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Sat Jan 25 10:17:18 2014 -0800
    nl80211: vendor command support

Change-Id: I832eb4da295fe7b2c9bd8ff69ae80fe7bfe30add
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2014-06-17 13:42:34 -07:00
Mark Brown
ad7782c911 Merge remote-tracking branch 'lsk/linux-linaro-lsk-android' into linux-linaro-lsk-android 2014-06-12 12:30:54 +01:00
Mark Brown
bda15ed543 Merge remote-tracking branch 'lsk/v3.10/topic/aosp' into linux-linaro-lsk-android
Conflicts:
	kernel/futex.c
	net/ipv6/route.c
2014-06-12 11:22:36 +01:00
Alex Shi
4a29519b4a Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android 2014-06-12 17:36:21 +08:00
Alex Shi
5f00470fca Merge tag v3.10.43 into linux-linaro-lsk
This is the 3.10.43 stable release
2014-06-12 15:01:53 +08:00
John Stultz
7e0967f127 Merge branch 'upstream/android-3.10' into linaro-fixes/android-3.10 2014-06-11 12:24:59 -07:00
Greg Kroah-Hartman
3dbf235e48 USB: cdc-wdm: properly include types.h
commit 7ac3764fca upstream.

The file include/uapi/linux/usb/cdc-wdm.h uses a __u16 so it needs to
include types.h as well to make the build system happy.

Fixes: 3edce1cf81 ("USB: cdc-wdm: implement IOCTL_WDM_MAX_COMMAND")
Cc: Bjørn Mork <bjorn@mork.no>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-06-11 12:03:25 -07:00
Bjørn Mork
d7432ebeac usb: cdc-wdm: export cdc-wdm uapi header
commit 7d1896360f upstream.

The include/uapi/linux/usb/cdc-wdm.h header defines cdc-wdm
userspace APIs and should be exported by make headers_install.

Fixes: 3edce1cf81 ("USB: cdc-wdm: implement IOCTL_WDM_MAX_COMMAND")
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-06-11 12:03:25 -07:00
Alex Shi
69284a3b89 Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android 2014-06-09 12:57:26 +08:00
Alex Shi
3b8d7f4db3 Merge tag v3.10.42 into linux-linaro-lsk
This is the 3.10.42 stable release
2014-06-09 12:55:42 +08:00
Thierry Reding
839472b6fa drm/tegra: Remove gratuitous pad field
commit cbfbbabb89 upstream.

The version of the drm_tegra_submit structure that was merged all the
way back in 3.10 contains a pad field that was originally intended to
properly pad the following __u64 field. Unfortunately it seems like a
different field was dropped during review that caused this padding to
become unnecessary, but the pad field wasn't removed at that time.

One possible side-effect of this is that since the __u64 following the
pad is now no longer properly aligned, the compiler may (or may not)
introduce padding itself, which results in no predictable ABI.

Rectify this by removing the pad field so that all fields are again
naturally aligned. Technically this is breaking existing userspace ABI,
but given that there aren't any (released) userspace drivers that make
use of this yet, the fallout should be minimal.

Fixes: d43f81cbaf ("drm/tegra: Add gr2d device")
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-06-07 13:25:32 -07:00
Mark Brown
c877dd2854 Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android
Conflicts:
	arch/arm64/Makefile
2014-05-18 18:46:41 +01:00
Lorenzo Colitti
a03f539b16 net: ipv6: autoconf routes into per-device tables
Currently, IPv6 router discovery always puts routes into
RT6_TABLE_MAIN. This causes problems for connection managers
that want to support multiple simultaneous network connections
and want control over which one is used by default (e.g., wifi
and wired).

To work around this connection managers typically take the routes
they prefer and copy them to static routes with low metrics in
the main table. This puts the burden on the connection manager
to watch netlink to see if the routes have changed, delete the
routes when their lifetime expires, etc.

Instead, this patch adds a per-interface sysctl to have the
kernel put autoconf routes into different tables. This allows
each interface to have its own autoconf table, and choosing the
default interface (or using different interfaces at the same
time for different types of traffic) can be done using
appropriate ip rules.

The sysctl behaves as follows:

- = 0: default. Put routes into RT6_TABLE_MAIN as before.
- > 0: manual. Put routes into the specified table.
- < 0: automatic. Add the absolute value of the sysctl to the
       device's ifindex, and use that table.

The automatic mode is most useful in conjunction with
net.ipv6.conf.default.accept_ra_rt_table. A connection manager
or distribution could set it to, say, -100 on boot, and
thereafter just use IP rules.

Change-Id: I82d16e3737d9cdfa6489e649e247894d0d60cbb1
Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
2014-05-16 18:19:20 +00:00
Mark Brown
a5d53ad243 Merge remote-tracking branch 'lsk/v3.10/topic/arm64-misc' into linux-linaro-lsk
Conflicts:
	Documentation/arm64/tagged-pointers.txt
	arch/arm64/Kconfig
	arch/arm64/boot/dts/Makefile
	arch/arm64/include/asm/arch_timer.h
	arch/arm64/include/asm/elf.h
	arch/arm64/include/asm/spinlock.h
	arch/arm64/kernel/smp.c
2014-05-15 20:29:29 +01:00
Dan Aloni
760b97f095 Move the EM_ARM and EM_AARCH64 definitions to uapi/linux/elf-em.h
Signed-off-by: Dan Aloni <alonid@stratoscale.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
(cherry picked from commit 909e3ee411)
Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-15 20:00:45 +01:00
Mark Brown
8de7c4692e Merge remote-tracking branch 'lsk/v3.10/topic/aosp' into linux-linaro-lsk-android 2014-05-12 17:43:10 +01:00
John Stultz
53a9dbb18e Merge branch 'upstream/android-3.10' into linaro-fixes/android-3.10 2014-05-09 15:16:40 -07:00
Mathieu Meisser
7723289804 HID: add missing hid usages mappings
Integrate several new definitions (not code) that
add additional hid mappings from the HID HUT 1.12
and approved additional requests.

Additions are taken from the commits in the
linux-input upstream: f362e69, 2a4d815, 3b5a7ab,
358f247, 701ba53, d09bbfd, af8036d, 5820e4d, a443255

Change-Id: Id0e1cff5828062009b4f94c987ac91f88f14652e
Signed-off-by: Mathieu Meisser <mmeisser@logitech.com>
Signed-off-by: Olivier Gay <ogay@logitech.com>
2014-04-28 18:43:29 +02:00
Ruchi Kandoi
37a591d407 prctl: adds PR_SET_TIMERSLACK_PID for setting timer slack of an arbitrary thread.
Second argument is similar to PR_SET_TIMERSLACK, if non-zero then the
slack is set to that value otherwise sets it to the default for the thread.

Takes PID of the thread as the third argument.

This allows power/performance management software to set timer slack for
other threads according to its policy for the thread (such as when the
thread is designated foreground vs. background activity)

Change-Id: I744d451ff4e60dae69f38f53948ff36c51c14a3f
Signed-off-by: Ruchi Kandoi <kandoiruchi@google.com>
2014-04-22 17:31:53 -07:00
Mark Brown
3736e39e6a Merge branch 'linaro-android-3.10-lsk' of git://git.linaro.org/people/john.stultz/android into linux-linaro-lsk-android 2014-04-15 18:12:51 +01:00
John Stultz
5f8e5d218d Merge remote-tracking branch 'android/android-3.10' into linaro-fixes/android-3.10 2014-04-04 16:24:26 -07:00
Greg Hackmann
0c423165c1 video: adf: ensure consistent alignment on userspace facing structs
64-bit types in structs create alignment problems when a 32-bit x86
userspace talks to an x86_64 kernel.  In most cases the 64-bit types can
be replaced with 32-bit ones, since they're being used for fds and
should have been __s32 in the first place.  For adf_vsync_event,
alignment can be enforced by making the timestamp an __aligned_u64.

Change-Id: I87cf73d8f57730bd7bb43ffce6b7b411eb0ff198
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2014-03-27 10:20:42 -07:00
Mark Brown
6a4f493c5d Merge branch 'linaro-android-3.10-lsk' of git://git.linaro.org/people/jstultz/android into linux-linaro-lsk-android 2014-02-20 22:49:06 +09:00
John Stultz
0c5c18ce48 Merge branch 'upstream/android-3.10' into linaro-fixes/android-3.10 2014-01-30 11:09:50 -08:00
Mark Brown
e986cff797 Merge branch 'linaro-android-3.10-lsk' of git://git.linaro.org/people/jstultz/android into linux-linaro-lsk-android 2014-01-22 15:36:05 +00:00
Greg Hackmann
c10c64d40b video: adf: define constants for device-custom ioctls
Device-custom ADF ioctls can use type ADF_IOCTL_TYPE and
nr >= ADF_IOCTL_NR_CUSTOM

Change-Id: Ia8270973df5100e996ca0e021ede60e54b9af72a
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2014-01-17 13:38:22 -08:00
Alex Shi
abc5c8153c Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android 2013-12-23 10:54:59 +08:00
Takashi Iwai
f4b017da47 ALSA: compress: Fix 64bit ABI incompatibility
commit 6733cf572a upstream.

snd_pcm_uframes_t is defined as unsigned long so it would take
different sizes depending on 32 or 64bit architectures.  As we don't
want this ABI incompatibility, and there is no real 64bit user yet,
let's make it the fixed size with __u32.

Also bump the protocol version number to 0.1.2.

Acked-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-20 07:45:06 -08:00
Mark Brown
358194677f Merge remote-tracking branch 'lsk/v3.10/topic/aosp' into linux-linaro-lsk-android
Conflicts:
	drivers/staging/android/ion/ion_chunk_heap.c
	kernel/printk.c
2013-12-13 18:52:59 +00:00
Amit Pundir
90a332678d epoll: drop EPOLLWAKEUP if PM_SLEEP is disabled
Drop EPOLLWAKEUP from epoll events mask if CONFIG_PM_SLEEP is disabled.

Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: John Stultz <john.stultz@linaro.org>
2013-11-25 11:05:09 -08:00
Mark Brown
c46f0e86d7 Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android 2013-11-21 10:16:35 +00:00
Greg Hackmann
ccf0b45b74 video: adf: fix ADF_MAX_ATTACHMENTS declaration
Userspace-facing ADF_MAX_ATTACHMENTS must be in terms of
userspace-facing struct adf_attachment_config

Change-Id: Iaaddcd6366f13b3e52eb3911efcfff8a61e0b225
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-11-20 14:44:38 -08:00
Greg Hackmann
b95f5c534f video: adf: remove PAGE_SIZE from userspace-facing header
Systems may define PAGE_SIZE in userspace limits.h but don't have to.
PAGE_SIZE was picked as an arbitrary "reasonable" limit so just use 4096
instead.

Change-Id: I9555e39aba64a3a70f61eb6ded2a4129ab236ce0
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-11-20 14:42:55 -08:00
Peter Zijlstra
0fb024c437 perf: Fix perf ring buffer memory ordering
commit bf378d341e upstream.

The PPC64 people noticed a missing memory barrier and crufty old
comments in the perf ring buffer code. So update all the comments and
add the missing barrier.

When the architecture implements local_t using atomic_long_t there
will be double barriers issued; but short of introducing more
conditional barrier primitives this is the best we can do.

Reported-by: Victor Kaplansky <victork@il.ibm.com>
Tested-by: Victor Kaplansky <victork@il.ibm.com>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: michael@ellerman.id.au
Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
Cc: Michael Neuling <mikey@neuling.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: anton@samba.org
Cc: benh@kernel.crashing.org
Link: http://lkml.kernel.org/r/20131025173749.GG19466@laptop.lan
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Michael Neuling <mikey@neuling.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-11-20 12:27:47 -08:00
Mark Brown
f3401c581c Merge remote-tracking branch 'lsk/v3.10/topic/android-fixes' into linux-linaro-lsk-android
The cpufreq_interactive changes have been merged upstream and the local
version dropped.

Conflicts:
	drivers/cpufreq/cpufreq_interactive.c
2013-11-14 15:43:52 +00:00
Mark Brown
4cb518ab3d Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android 2013-11-13 12:06:53 +00:00
Chris Wilson
9c1aab0da0 drm: Pad drm_mode_get_connector to 64-bit boundary
commit bc5bd37ce4 upstream.

Pavel Roskin reported that DRM_IOCTL_MODE_GETCONNECTOR was overwritting
the 4 bytes beyond the end of its structure with a 32-bit userspace
running on a 64-bit kernel. This is due to the padding gcc inserts as
the drm_mode_get_connector struct includes a u64 and its size is not a
natural multiple of u64s.

64-bit kernel:

sizeof(drm_mode_get_connector)=80, alignof=8
sizeof(drm_mode_get_encoder)=20, alignof=4
sizeof(drm_mode_modeinfo)=68, alignof=4

32-bit userspace:

sizeof(drm_mode_get_connector)=76, alignof=4
sizeof(drm_mode_get_encoder)=20, alignof=4
sizeof(drm_mode_modeinfo)=68, alignof=4

Fortuituously we can insert explicit padding to the tail of our
structures without breaking ABI.

Reported-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Dave Airlie <airlied@redhat.com>
Cc: dri-devel@lists.freedesktop.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-11-13 12:05:34 +09:00