aboutsummaryrefslogtreecommitdiff
path: root/include/uapi/linux
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'common/android-3.10' into HEADHashbang1732017-11-191-0/+1
|\ | | | | | | Change-Id: I6f47d9424454492b0953231716a44c27068d70ec
| * UPSTREAM: USB: fix out-of-bounds in usb_set_configurationGreg Kroah-Hartman2017-11-161-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit bd7a3fe770ebd8391d1c7d072ff88e9e76d063eb Andrey Konovalov reported a possible out-of-bounds problem for a USB interface association descriptor. He writes: It seems there's no proper size check of a USB_DT_INTERFACE_ASSOCIATION descriptor. It's only checked that the size is >= 2 in usb_parse_configuration(), so find_iad() might do out-of-bounds access to intf_assoc->bInterfaceCount. And he's right, we don't check for crazy descriptors of this type very well, so resolve this problem. Yet another issue found by syzkaller... Change-Id: I2cc3b5a66d16abd0fc567d69457fc90a45eb12d8 Reported-by: Andrey Konovalov <andreyknvl@google.com> Tested-by: Andrey Konovalov <andreyknvl@google.com> Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | Merge remote-tracking branch 'common/android-3.10' into HEADHashbang1732017-10-191-0/+5
|\|
| * BACKPORT: net: xfrm: support setting an output mark.Lorenzo Colitti2017-10-111-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On systems that use mark-based routing it may be necessary for routing lookups to use marks in order for packets to be routed correctly. An example of such a system is Android, which uses socket marks to route packets via different networks. Currently, routing lookups in tunnel mode always use a mark of zero, making routing incorrect on such systems. This patch adds a new output_mark element to the xfrm state and a corresponding XFRMA_OUTPUT_MARK netlink attribute. The output mark differs from the existing xfrm mark in two ways: 1. The xfrm mark is used to match xfrm policies and states, while the xfrm output mark is used to set the mark (and influence the routing) of the packets emitted by those states. 2. The existing mark is constrained to be a subset of the bits of the originating socket or transformed packet, but the output mark is arbitrary and depends only on the state. The use of a separate mark provides additional flexibility. For example: - A packet subject to two transforms (e.g., transport mode inside tunnel mode) can have two different output marks applied to it, one for the transport mode SA and one for the tunnel mode SA. - On a system where socket marks determine routing, the packets emitted by an IPsec tunnel can be routed based on a mark that is determined by the tunnel, not by the marks of the unencrypted packets. - Support for setting the output marks can be introduced without breaking any existing setups that employ both mark-based routing and xfrm tunnel mode. Simply changing the code to use the xfrm mark for routing output packets could xfrm mark could change behaviour in a way that breaks these setups. If the output mark is unspecified or set to zero, the mark is not set or changed. [backport of upstream 077fbac405bfc6d41419ad6c1725804ad4e9887c] Bug: 63589535 Test: https://android-review.googlesource.com/452776/ passes Tested: make allyesconfig; make -j64 Tested: https://android-review.googlesource.com/452776 Signed-off-by: Lorenzo Colitti <lorenzo@google.com> Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com> Change-Id: I76120fba036e21780ced31ad390faf491ea81e52
* | BACKPORT: random: introduce getrandom(2) system callTheodore Ts'o2017-08-241-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Almost clean cherry pick of c6e9d6f38894798696f23c8084ca7edbf16ee895, includes change made by merge 0891ad829d2a0501053703df66029e843e3b8365. The getrandom(2) system call was requested by the LibreSSL Portable developers. It is analoguous to the getentropy(2) system call in OpenBSD. The rationale of this system call is to provide resiliance against file descriptor exhaustion attacks, where the attacker consumes all available file descriptors, forcing the use of the fallback code where /dev/[u]random is not available. Since the fallback code is often not well-tested, it is better to eliminate this potential failure mode entirely. The other feature provided by this new system call is the ability to request randomness from the /dev/urandom entropy pool, but to block until at least 128 bits of entropy has been accumulated in the /dev/urandom entropy pool. Historically, the emphasis in the /dev/urandom development has been to ensure that urandom pool is initialized as quickly as possible after system boot, and preferably before the init scripts start execution. This is because changing /dev/urandom reads to block represents an interface change that could potentially break userspace which is not acceptable. In practice, on most x86 desktop and server systems, in general the entropy pool can be initialized before it is needed (and in modern kernels, we will printk a warning message if not). However, on an embedded system, this may not be the case. And so with this new interface, we can provide the functionality of blocking until the urandom pool has been initialized. Any userspace program which uses this new functionality must take care to assure that if it is used during the boot process, that it will not cause the init scripts or other portions of the system startup to hang indefinitely. SYNOPSIS #include <linux/random.h> int getrandom(void *buf, size_t buflen, unsigned int flags); DESCRIPTION The system call getrandom() fills the buffer pointed to by buf with up to buflen random bytes which can be used to seed user space random number generators (i.e., DRBG's) or for other cryptographic uses. It should not be used for Monte Carlo simulations or other programs/algorithms which are doing probabilistic sampling. If the GRND_RANDOM flags bit is set, then draw from the /dev/random pool instead of the /dev/urandom pool. The /dev/random pool is limited based on the entropy that can be obtained from environmental noise, so if there is insufficient entropy, the requested number of bytes may not be returned. If there is no entropy available at all, getrandom(2) will either block, or return an error with errno set to EAGAIN if the GRND_NONBLOCK bit is set in flags. If the GRND_RANDOM bit is not set, then the /dev/urandom pool will be used. Unlike using read(2) to fetch data from /dev/urandom, if the urandom pool has not been sufficiently initialized, getrandom(2) will block (or return -1 with the errno set to EAGAIN if the GRND_NONBLOCK bit is set in flags). The getentropy(2) system call in OpenBSD can be emulated using the following function: int getentropy(void *buf, size_t buflen) { int ret; if (buflen > 256) goto failure; ret = getrandom(buf, buflen, 0); if (ret < 0) return ret; if (ret == buflen) return 0; failure: errno = EIO; return -1; } RETURN VALUE On success, the number of bytes that was filled in the buf is returned. This may not be all the bytes requested by the caller via buflen if insufficient entropy was present in the /dev/random pool, or if the system call was interrupted by a signal. On error, -1 is returned, and errno is set appropriately. ERRORS EINVAL An invalid flag was passed to getrandom(2) EFAULT buf is outside the accessible address space. EAGAIN The requested entropy was not available, and getentropy(2) would have blocked if the GRND_NONBLOCK flag was not set. EINTR While blocked waiting for entropy, the call was interrupted by a signal handler; see the description of how interrupted read(2) calls on "slow" devices are handled with and without the SA_RESTART flag in the signal(7) man page. NOTES For small requests (buflen <= 256) getrandom(2) will not return EINTR when reading from the urandom pool once the entropy pool has been initialized, and it will return all of the bytes that have been requested. This is the recommended way to use getrandom(2), and is designed for compatibility with OpenBSD's getentropy() system call. However, if you are using GRND_RANDOM, then getrandom(2) may block until the entropy accounting determines that sufficient environmental noise has been gathered such that getrandom(2) will be operating as a NRBG instead of a DRBG for those people who are working in the NIST SP 800-90 regime. Since it may block for a long time, these guarantees do *not* apply. The user may want to interrupt a hanging process using a signal, so blocking until all of the requested bytes are returned would be unfriendly. For this reason, the user of getrandom(2) MUST always check the return value, in case it returns some error, or if fewer bytes than requested was returned. In the case of !GRND_RANDOM and small request, the latter should never happen, but the careful userspace code (and all crypto code should be careful) should check for this anyway! Finally, unless you are doing long-term key generation (and perhaps not even then), you probably shouldn't be using GRND_RANDOM. The cryptographic algorithms used for /dev/urandom are quite conservative, and so should be sufficient for all purposes. The disadvantage of GRND_RANDOM is that it can block, and the increased complexity required to deal with partially fulfilled getrandom(2) requests. Signed-off-by: Theodore Ts'o <tytso@mit.edu> Reviewed-by: Zach Brown <zab@zabbo.net> Bug: http://b/29621447 Change-Id: I189ba74070dd6d918b0fdf83ff30bb74ec0f7556 (cherry picked from commit 4af712e8df998475736f3e2727701bd31e3751a9)
* | Merge remote-tracking branch 'common/android-3.10' into HEADHashbang1732017-08-226-5/+142
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: arch/arm64/kernel/ptrace.c drivers/hid/hid-lg.c drivers/hid/hid-lg4ff.c drivers/misc/Kconfig drivers/misc/Makefile fs/f2fs/segment.c fs/inode.c fs/namei.c fs/sdcardfs/derived_perm.c fs/sdcardfs/file.c fs/sdcardfs/main.c fs/udf/inode.c fs/udf/symlink.c include/linux/mount.h mm/memory.c net/ipv4/raw.c net/ipv4/tcp_ipv4.c Change-Id: Ia951dab4c2fb6dbd2d55c97db22b18085a4af5a2
| * BACKPORT: ipv6 addrconf: implement RFC7559 router solicitation backoffMaciej Żenczykowski2017-04-071-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This implements: https://tools.ietf.org/html/rfc7559 Backoff is performed according to RFC3315 section 14: https://tools.ietf.org/html/rfc3315#section-14 We allow setting /proc/sys/net/ipv6/conf/*/router_solicitations to a negative value meaning an unlimited number of retransmits, and we make this the new default (inline with the RFC). We also add a new setting: /proc/sys/net/ipv6/conf/*/router_solicitation_max_interval defaulting to 1 hour (per RFC recommendation). Signed-off-by: Maciej Żenczykowski <maze@google.com> Acked-by: Erik Kline <ek@google.com> Signed-off-by: David S. Miller <davem@davemloft.net> (cherry picked from commit bd11f0741fa5a2c296629898ad07759dd12b35bb in DaveM's net-next/master, should make Linus' tree in 4.9-rc1) Change-Id: Ia32cdc5c61481893ef8040734e014bf2229fc39e
| * net: ipv6: Add sysctl for minimum prefix len acceptable in RIOs.Joel Scherpelz2017-03-272-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds a new sysctl accept_ra_rt_info_min_plen that defines the minimum acceptable prefix length of Route Information Options. The new sysctl is intended to be used together with accept_ra_rt_info_max_plen to configure a range of acceptable prefix lengths. It is useful to prevent misconfigurations from unintentionally blackholing too much of the IPv6 address space (e.g., home routers announcing RIOs for fc00::/7, which is incorrect). [backport of net-next bbea124bc99df968011e76eba105fe964a4eceab] Bug: 33333670 Test: net_test passes Signed-off-by: Joel Scherpelz <jscherpelz@google.com> Acked-by: Lorenzo Colitti <lorenzo@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
| * android: binder: add padding to binder_fd_array_object.Martijn Coenen2017-03-081-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | binder_fd_array_object starts with a 4-byte header, followed by a few fields that are 8 bytes when ANDROID_BINDER_IPC_32BIT=N. This can cause alignment issues in a 64-bit kernel with a 32-bit userspace, as on x86_32 an 8-byte primitive may be aligned to a 4-byte address. Pad with a __u32 to fix this. Change-Id: I4374ed2cc3ccd3c6a1474cb7209b53ebfd91077b Signed-off-by: Martijn Coenen <maco@android.com>
| * BACKPORT: hw_breakpoint: Allow watchpoint of length 3,5,6 and 7Pratyush Anand2017-02-021-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (cherry picked from commit 651be3cb085341a21847e47c694c249c3e1e4e5b) We only support breakpoint/watchpoint of length 1, 2, 4 and 8. If we can support other length as well, then user may watch more data with less number of watchpoints (provided hardware supports it). For example: if we have to watch only 4th, 5th and 6th byte from a 64 bit aligned address, we will have to use two slots to implement it currently. One slot will watch a half word at offset 4 and other a byte at offset 6. If we can have a watchpoint of length 3 then we can watch it with single slot as well. ARM64 hardware does support such functionality, therefore adding these new definitions in generic layer. Change-Id: I807c508ca27dfb2a809d544cd718da36fc531179 Signed-off-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Pavel Labath <labath@google.com> [tools/include/uapi/linux/hw_breakpoint.h is not present in this branch] Bug: 30919905
| * net: core: add UID to flows, rules, and routesLorenzo Colitti2016-12-152-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Define a new FIB rule attributes, FRA_UID_RANGE, to describe a range of UIDs. - Define a RTA_UID attribute for per-UID route lookups and dumps. - Support passing these attributes to and from userspace via rtnetlink. The value INVALID_UID indicates no UID was specified. - Add a UID field to the flow structures. [Backport of net-next 622ec2c9d52405973c9f1ca5116eb1c393adfc7d] Bug: 16355602 Change-Id: Iea98e6fedd0fd4435a1f4efa3deb3629505619ab Signed-off-by: Lorenzo Colitti <lorenzo@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
| * Revert "net: core: Support UID-based routing."Lorenzo Colitti2016-12-152-3/+0
| | | | | | | | | | | | | | This reverts commit 99a6ea48b591877d1cd6a51732c40a1d5321d961. Bug: 16355602 Change-Id: I7d75b52d8863e932707daf391892480542c2e965
| * sdcardfs: Change magic valueDaniel Rosenberg2016-11-291-1/+1
| | | | | | | | | | | | | | | | | | | | Sdcardfs uses the same magic value as wrapfs. This should not be the case. As it is entirely in memory, the value can be changed without any loss of compatibility. Change-Id: I24200b805d5e6d32702638be99e47d50d7f2f746 Signed-off-by: Daniel Rosenberg <drosen@google.com>
| * android: binder: support for file-descriptor arrays.Martijn Coenen2016-10-291-0/+28
| | | | | | | | | | | | | | | | | | This patch introduces a new binder_fd_array object, that allows us to support one or more file descriptors embedded in a buffer that is scatter-gathered. Change-Id: I647a53cf0d905c7be0dfd9333806982def68dd74 Signed-off-by: Martijn Coenen <maco@google.com>
| * android: binder: support for scatter-gather.Martijn Coenen2016-10-291-0/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously all data passed over binder needed to be serialized, with the exception of Binder objects and file descriptors. This patchs adds support for scatter-gathering raw memory buffers into a binder transaction, avoiding the need to first serialize them into a Parcel. To remain backwards compatibile with existing binder clients, it introduces two new command ioctls for this purpose - BC_TRANSACTION_SG and BC_REPLY_SG. These commands may only be used with the new binder_transaction_data_sg structure, which adds a field for the total size of the buffers we are scatter-gathering. Because memory buffers may contain pointers to other buffers, we allow callers to specify a parent buffer and an offset into it, to indicate this is a location pointing to the buffer that we are fixing up. The kernel will then take care of fixing up the pointer to that buffer as well. Change-Id: I02417f28cff14688f2e1d6fcb959438fd96566cc Signed-off-by: Martijn Coenen <maco@google.com>
| * android: binder: split flat_binder_object.Martijn Coenen2016-10-181-3/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | flat_binder_object is used for both handling binder objects and file descriptors, even though the two are mostly independent. Since we'll have more fixup objects in binder in the future, instead of extending flat_binder_object again, split out file descriptors to their own object while retaining backwards compatibility to existing user-space clients. All binder objects just share a header. Change-Id: If3c55f27a2aa8f21815383e0e807be47895e4786 Signed-off-by: Martijn Coenen <maco@google.com>
* | sdcardfs: Change magic valueDaniel Rosenberg2017-06-101-1/+1
| | | | | | | | | | | | | | | | | | | | Sdcardfs uses the same magic value as wrapfs. This should not be the case. As it is entirely in memory, the value can be changed without any loss of compatibility. Change-Id: I24200b805d5e6d32702638be99e47d50d7f2f746 Signed-off-by: Daniel Rosenberg <drosen@google.com>
* | Merge branch android-tegra-3.10 into android-tegra-flounder-3.10-nyc-mr1Mark Salyzyn2016-09-191-1/+15
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3724945 net: inet: diag: expose the socket mark to privileged processes. a6226bb net: diag: make udp_diag_destroy work for mapped addresses. f7d5f82 net: diag: support SOCK_DESTROY for UDP sockets d4c5e38 net: diag: allow socket bytecode filters to match socket marks 4a63970 net: diag: slightly refactor the inet_diag_bc_audit error checks. 41e1e3f net: diag: Add support to filter on device index 4bc74f1 BACKPORT: audit: fix a double fetch in audit_log_single_execve_arg() 8c43520 UPSTREAM: ARM: 8494/1: mm: Enable PXN when running non-LPAE kernel on LPAE processor 5bc4531 BACKPORT: ARM: 8235/1: Support for the PXN CPU feature on ARMv7 Signed-off-by: Mark Salyzyn <salyzyn@google.com> Bug: 30956807 Bug: 31161206 Change-Id: I9c215bfddcb6b86524f377246a2cbe31a29e0de0
| * | Merge branch android-3.10 into android-tegra-3.10Mark Salyzyn2016-09-191-1/+15
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3724945 net: inet: diag: expose the socket mark to privileged processes. a6226bb net: diag: make udp_diag_destroy work for mapped addresses. f7d5f82 net: diag: support SOCK_DESTROY for UDP sockets d4c5e38 net: diag: allow socket bytecode filters to match socket marks 4a63970 net: diag: slightly refactor the inet_diag_bc_audit error checks. 41e1e3f net: diag: Add support to filter on device index 4bc74f1 BACKPORT: audit: fix a double fetch in audit_log_single_execve_arg() 8c43520 UPSTREAM: ARM: 8494/1: mm: Enable PXN when running non-LPAE kernel on LPAE processor 5bc4531 BACKPORT: ARM: 8235/1: Support for the PXN CPU feature on ARMv7 Signed-off-by: Mark Salyzyn <salyzyn@google.com> Bug: 30956807 Bug: 31161206 Change-Id: Ifc7674b118f99a6ea06706b80bdbf2952be80f87
| | * net: inet: diag: expose the socket mark to privileged processes.Lorenzo Colitti2016-09-141-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds the capability for a process that has CAP_NET_ADMIN on a socket to see the socket mark in socket dumps. Commit a52e95abf772 ("net: diag: allow socket bytecode filters to match socket marks") recently gave privileged processes the ability to filter socket dumps based on mark. This patch is complementary: it ensures that the mark is also passed to userspace in the socket's netlink attributes. It is useful for tools like ss which display information about sockets. [backport of net-next d545caca827b65aab557a9e9dcdcf1e5a3823c2d] Change-Id: I0c9708aae5ab8dfa296b8a1e6aecceb2a382415a Tested: https://android-review.googlesource.com/270210 Signed-off-by: Lorenzo Colitti <lorenzo@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
| | * net: diag: allow socket bytecode filters to match socket marksLorenzo Colitti2016-09-141-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows a privileged process to filter by socket mark when dumping sockets via INET_DIAG_BY_FAMILY. This is useful on systems that use mark-based routing such as Android. The ability to filter socket marks requires CAP_NET_ADMIN, which is consistent with other privileged operations allowed by the SOCK_DIAG interface such as the ability to destroy sockets and the ability to inspect BPF filters attached to packet sockets. [backport of net-next a52e95abf772b43c9226e9a72d3c1353903ba96f] Change-Id: Ic02caf628a71007cc7c48c9da220b4088f5aa4f4 Tested: https://android-review.googlesource.com/261350 Signed-off-by: Lorenzo Colitti <lorenzo@google.com> Acked-by: David Ahern <dsa@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
| | * net: diag: Add support to filter on device indexDavid Ahern2016-09-141-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support to inet_diag facility to filter sockets based on device index. If an interface index is in the filter only sockets bound to that index (sk_bound_dev_if) are returned. [backport of net-next 637c841dd7a5f9bd97b75cbe90b526fa1a52e530] Change-Id: Ib430cfb44f1b3b1a771a561247ee9140737e52fd Signed-off-by: David Ahern <dsa@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | | Merge branch android-tegra-3.10 into android-tegra-flounder-3.10-nyc-mr1Mark Salyzyn2016-09-121-0/+7
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | bdcd4484 UPSTREAM: capabilities: ambient capabilities 0e7ad12 BACKPORT: ALSA: usb-audio: Fix double-free in error paths after snd_usb_add_audio_stream() call 5982d2e BACKPORT: ALSA: usb-audio: Minor code cleanup in create_fixed_stream_quirk() b581331 pstore: drop pmsg bounce buffer fbb62d1 UPSTREAM: block: fix use-after-free in sys_ioprio_get() 8aaed94 UPSTREAM: HID: core: prevent out-of-bound readings b307df3 BACKPORT: tty: Prevent ldisc drivers from re-using stale tty fields d85e322 Don't show empty tag stats for unprivileged uids 991eaa6 UPSTREAM: proc: prevent accessing /proc/<PID>/environ until it's ready 12f0688 UPSTREAM: [media] xc2028: unlock on error in xc2028_set_config() 9469da1 UPSTREAM: [media] xc2028: avoid use after free 300e001 UPSTREAM: block: fix use-after-free in seq file 6a88f39 ANDROID: base-cfg: enable SECCOMP config 801c5f9 UPSTREAM: USB: cdc-acm: more sanity checking 2fac1c2 UPSTREAM: USB: iowarrior: fix oops with malicious USB descriptors e846f8e UPSTREAM: USB: usb_driver_claim_interface: add sanity checking 2633b8d UPSTREAM: USB: mct_u232: add sanity checking in probe 7a17891 UPSTREAM: USB: cypress_m8: add endpoint sanity check cb2cecc UPSTREAM: Input: powermate - fix oops with malicious USB descriptors 4f73004 Revert "netfilter: have ip*t REJECT set the sock err when an icmp is to be sent" 6ff842a ANDROID: MMC: Fix a 32 bit build breakage. d54ba4d UPSTREAM: af_unix: Guard against other == sk in unix_dgram_sendmsg 9e63349 UPSTREAM: ALSA: timer: Fix race among timer ioctls 4a55158 ASoC: check for null function pointer for dummy device read/write 2fbdb8e quadd: add nr_events check 209e5c6 Tegra TLK Driver missing kernel heap allocation succeeded check NB: removed commits already present, or that were added then reverted Signed-off-by: Mark Salyzyn <salyzyn@google.com> Bug: 31038224 Bug: 30952477 Bug: 31057326 Bug: 30946378 Bug: 30951261 Bug: 30951112 Bug: 31183296 Bug: 27577101 Bug: 27532522 Bug: 30951939 Bug: 30946097 Bug: 30942273 Bug: 28242610 Bug: 28719525 Bug: 28694392 Bug: 28838221 Bug: 29492476 Bug: 30259274 Change-Id: Ibfea605468379918ede2001a8d989d1d28a63653
| * | Merge branch android-3.10 into android-tegra-3.10Mark Salyzyn2016-09-091-0/+7
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | bdcd4484 UPSTREAM: capabilities: ambient capabilities 0e7ad12 BACKPORT: ALSA: usb-audio: Fix double-free in error paths after snd_usb_add_audio_stream() call 5982d2e BACKPORT: ALSA: usb-audio: Minor code cleanup in create_fixed_stream_quirk() b581331 pstore: drop pmsg bounce buffer fbb62d1 UPSTREAM: block: fix use-after-free in sys_ioprio_get() 8aaed94 UPSTREAM: HID: core: prevent out-of-bound readings b307df3 BACKPORT: tty: Prevent ldisc drivers from re-using stale tty fields 3f0cd28 UPSTREAM: tcp: fix use after free in tcp_xmit_retransmit_queue() d85e322 Don't show empty tag stats for unprivileged uids 991eaa6 UPSTREAM: proc: prevent accessing /proc/<PID>/environ until it's ready 12f0688 UPSTREAM: [media] xc2028: unlock on error in xc2028_set_config() 9469da1 UPSTREAM: [media] xc2028: avoid use after free 300e001 UPSTREAM: block: fix use-after-free in seq file 6a88f39 ANDROID: base-cfg: enable SECCOMP config 801c5f9 UPSTREAM: USB: cdc-acm: more sanity checking 2fac1c2 UPSTREAM: USB: iowarrior: fix oops with malicious USB descriptors e846f8e UPSTREAM: USB: usb_driver_claim_interface: add sanity checking 2633b8d UPSTREAM: USB: mct_u232: add sanity checking in probe 7a17891 UPSTREAM: USB: cypress_m8: add endpoint sanity check cb2cecc UPSTREAM: Input: powermate - fix oops with malicious USB descriptors 4f73004 Revert "netfilter: have ip*t REJECT set the sock err when an icmp is to be sent" 6ff842a ANDROID: MMC: Fix a 32 bit build breakage. d54ba4d UPSTREAM: af_unix: Guard against other == sk in unix_dgram_sendmsg 9e63349 UPSTREAM: ALSA: timer: Fix race among timer ioctls 4a55158 ASoC: check for null function pointer for dummy device read/write Signed-off-by: Mark Salyzyn <salyzyn@google.com> Bug: 31038224 Bug: 30952477 Bug: 31057326 Bug: 30946378 Bug: 30951261 Bug: 30951112 Bug: 31183296 Bug: 27577101 Bug: 27532522 Bug: 30951939 Bug: 30946097 Bug: 30942273 Bug: 28242610 Bug: 28719525 Bug: 28694392 Bug: 28838221 Change-Id: Ia2fc65097eed1d319eccd11fc6b4a2ffd2da73d4
| | * UPSTREAM: capabilities: ambient capabilitiesAndy Lutomirski2016-09-091-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Credit where credit is due: this idea comes from Christoph Lameter with a lot of valuable input from Serge Hallyn. This patch is heavily based on Christoph's patch. ===== The status quo ===== On Linux, there are a number of capabilities defined by the kernel. To perform various privileged tasks, processes can wield capabilities that they hold. Each task has four capability masks: effective (pE), permitted (pP), inheritable (pI), and a bounding set (X). When the kernel checks for a capability, it checks pE. The other capability masks serve to modify what capabilities can be in pE. Any task can remove capabilities from pE, pP, or pI at any time. If a task has a capability in pP, it can add that capability to pE and/or pI. If a task has CAP_SETPCAP, then it can add any capability to pI, and it can remove capabilities from X. Tasks are not the only things that can have capabilities; files can also have capabilities. A file can have no capabilty information at all [1]. If a file has capability information, then it has a permitted mask (fP) and an inheritable mask (fI) as well as a single effective bit (fE) [2]. File capabilities modify the capabilities of tasks that execve(2) them. A task that successfully calls execve has its capabilities modified for the file ultimately being excecuted (i.e. the binary itself if that binary is ELF or for the interpreter if the binary is a script.) [3] In the capability evolution rules, for each mask Z, pZ represents the old value and pZ' represents the new value. The rules are: pP' = (X & fP) | (pI & fI) pI' = pI pE' = (fE ? pP' : 0) X is unchanged For setuid binaries, fP, fI, and fE are modified by a moderately complicated set of rules that emulate POSIX behavior. Similarly, if euid == 0 or ruid == 0, then fP, fI, and fE are modified differently (primary, fP and fI usually end up being the full set). For nonroot users executing binaries with neither setuid nor file caps, fI and fP are empty and fE is false. As an extra complication, if you execute a process as nonroot and fE is set, then the "secure exec" rules are in effect: AT_SECURE gets set, LD_PRELOAD doesn't work, etc. This is rather messy. We've learned that making any changes is dangerous, though: if a new kernel version allows an unprivileged program to change its security state in a way that persists cross execution of a setuid program or a program with file caps, this persistent state is surprisingly likely to allow setuid or file-capped programs to be exploited for privilege escalation. ===== The problem ===== Capability inheritance is basically useless. If you aren't root and you execute an ordinary binary, fI is zero, so your capabilities have no effect whatsoever on pP'. This means that you can't usefully execute a helper process or a shell command with elevated capabilities if you aren't root. On current kernels, you can sort of work around this by setting fI to the full set for most or all non-setuid executable files. This causes pP' = pI for nonroot, and inheritance works. No one does this because it's a PITA and it isn't even supported on most filesystems. If you try this, you'll discover that every nonroot program ends up with secure exec rules, breaking many things. This is a problem that has bitten many people who have tried to use capabilities for anything useful. ===== The proposed change ===== This patch adds a fifth capability mask called the ambient mask (pA). pA does what most people expect pI to do. pA obeys the invariant that no bit can ever be set in pA if it is not set in both pP and pI. Dropping a bit from pP or pI drops that bit from pA. This ensures that existing programs that try to drop capabilities still do so, with a complication. Because capability inheritance is so broken, setting KEEPCAPS, using setresuid to switch to nonroot uids, and then calling execve effectively drops capabilities. Therefore, setresuid from root to nonroot conditionally clears pA unless SECBIT_NO_SETUID_FIXUP is set. Processes that don't like this can re-add bits to pA afterwards. The capability evolution rules are changed: pA' = (file caps or setuid or setgid ? 0 : pA) pP' = (X & fP) | (pI & fI) | pA' pI' = pI pE' = (fE ? pP' : pA') X is unchanged If you are nonroot but you have a capability, you can add it to pA. If you do so, your children get that capability in pA, pP, and pE. For example, you can set pA = CAP_NET_BIND_SERVICE, and your children can automatically bind low-numbered ports. Hallelujah! Unprivileged users can create user namespaces, map themselves to a nonzero uid, and create both privileged (relative to their namespace) and unprivileged process trees. This is currently more or less impossible. Hallelujah! You cannot use pA to try to subvert a setuid, setgid, or file-capped program: if you execute any such program, pA gets cleared and the resulting evolution rules are unchanged by this patch. Users with nonzero pA are unlikely to unintentionally leak that capability. If they run programs that try to drop privileges, dropping privileges will still work. It's worth noting that the degree of paranoia in this patch could possibly be reduced without causing serious problems. Specifically, if we allowed pA to persist across executing non-pA-aware setuid binaries and across setresuid, then, naively, the only capabilities that could leak as a result would be the capabilities in pA, and any attacker *already* has those capabilities. This would make me nervous, though -- setuid binaries that tried to privilege-separate might fail to do so, and putting CAP_DAC_READ_SEARCH or CAP_DAC_OVERRIDE into pA could have unexpected side effects. (Whether these unexpected side effects would be exploitable is an open question.) I've therefore taken the more paranoid route. We can revisit this later. An alternative would be to require PR_SET_NO_NEW_PRIVS before setting ambient capabilities. I think that this would be annoying and would make granting otherwise unprivileged users minor ambient capabilities (CAP_NET_BIND_SERVICE or CAP_NET_RAW for example) much less useful than it is with this patch. ===== Footnotes ===== [1] Files that are missing the "security.capability" xattr or that have unrecognized values for that xattr end up with has_cap set to false. The code that does that appears to be complicated for no good reason. [2] The libcap capability mask parsers and formatters are dangerously misleading and the documentation is flat-out wrong. fE is *not* a mask; it's a single bit. This has probably confused every single person who has tried to use file capabilities. [3] Linux very confusingly processes both the script and the interpreter if applicable, for reasons that elude me. The results from thinking about a script's file capabilities and/or setuid bits are mostly discarded. Preliminary userspace code is here, but it needs updating: https://git.kernel.org/cgit/linux/kernel/git/luto/util-linux-playground.git/commit/?h=cap_ambient&id=7f5afbd175d2 Here is a test program that can be used to verify the functionality (from Christoph): /* * Test program for the ambient capabilities. This program spawns a shell * that allows running processes with a defined set of capabilities. * * (C) 2015 Christoph Lameter <cl@linux.com> * Released under: GPL v3 or later. * * * Compile using: * * gcc -o ambient_test ambient_test.o -lcap-ng * * This program must have the following capabilities to run properly: * Permissions for CAP_NET_RAW, CAP_NET_ADMIN, CAP_SYS_NICE * * A command to equip the binary with the right caps is: * * setcap cap_net_raw,cap_net_admin,cap_sys_nice+p ambient_test * * * To get a shell with additional caps that can be inherited by other processes: * * ./ambient_test /bin/bash * * * Verifying that it works: * * From the bash spawed by ambient_test run * * cat /proc/$$/status * * and have a look at the capabilities. */ /* * Definitions from the kernel header files. These are going to be removed * when the /usr/include files have these defined. */ static void set_ambient_cap(int cap) { int rc; capng_get_caps_process(); rc = capng_update(CAPNG_ADD, CAPNG_INHERITABLE, cap); if (rc) { printf("Cannot add inheritable cap\n"); exit(2); } capng_apply(CAPNG_SELECT_CAPS); /* Note the two 0s at the end. Kernel checks for these */ if (prctl(PR_CAP_AMBIENT, PR_CAP_AMBIENT_RAISE, cap, 0, 0)) { perror("Cannot set cap"); exit(1); } } int main(int argc, char **argv) { int rc; set_ambient_cap(CAP_NET_RAW); set_ambient_cap(CAP_NET_ADMIN); set_ambient_cap(CAP_SYS_NICE); printf("Ambient_test forking shell\n"); if (execv(argv[1], argv + 1)) perror("Cannot exec"); return 0; } Signed-off-by: Christoph Lameter <cl@linux.com> # Original author Signed-off-by: Andy Lutomirski <luto@kernel.org> Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com> Acked-by: Kees Cook <keescook@chromium.org> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Aaron Jones <aaronmdjones@gmail.com> Cc: Ted Ts'o <tytso@mit.edu> Cc: Andrew G. Morgan <morgan@kernel.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Austin S Hemmelgarn <ahferroin7@gmail.com> Cc: Markku Savela <msa@moth.iki.fi> Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Cc: Michael Kerrisk <mtk.manpages@gmail.com> Cc: James Morris <james.l.morris@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> (cherry picked from commit 58319057b7847667f0c9585b9de0e8932b0fdb08) Bug: 31038224 Change-Id: I88bc5caa782dc6be23dc7e839ff8e11b9a903f8c Signed-off-by: Jorge Lucangeli Obes <jorgelo@google.com>
* | | Merge tag 'v3.10.103' into android-tegra-flounder-3.10-nyc-mr1Greg Hackmann2016-08-311-0/+3
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the 3.10.103 stable release Bug: 28242610 Bug: 30259163 Change-Id: I9c7adb67d707ab840232cea4b6ba5374b7d82a9e Signed-off-by: Greg Hackmann <ghackmann@google.com>
| * | | linux/const.h: Add _BITUL() and _BITULL()H. Peter Anvin2016-06-071-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 2fc016c5bd8aad2e201cdf71b9fb4573f94775bd upstream. Add macros for single bit definitions of a specific type. These are similar to the BIT() macro that already exists, but with a few exceptions: 1. The namespace is such that they can be used in uapi definitions. 2. The type is set with the _AC() macro to allow it to be used in assembly. 3. The type is explicitly specified to be UL or ULL. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com> Link: http://lkml.kernel.org/n/tip-nbca8p7cg6jyjoit7klh3o91@git.kernel.org [wt: backported to 3.10 only to keep next patch clean] Signed-off-by: Willy Tarreau <w@1wt.eu>
* | | | Revert "drivers: android: binder: add BINDER_PEER_SECURITY_CONTEXT ioctl"Mark Salyzyn2016-08-191-7/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 1dd641435e09ccf487da2109a4e4a58e8b560f1c. Signed-off-by: Mark Salyzyn <salyzyn@google.com> Bug: 29431260 Change-Id: I9e0152893e57cf858ddd65765517ae315037cecb
* | | | drivers: android: binder: add BINDER_PEER_SECURITY_CONTEXT ioctlGreg Hackmann2016-07-281-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | BINDER_PEER_SECURITY_CONTEXT allows userspace to retrieve the sender's security context. Binder transactions may be freed after reading, and we don't want to break ABI by embedding this information in struct binder_transaction_data. We instead keep the sender's secid inside the correponding (in-kernel) binder_buffer, and add a new ioctl to let recipients grab this information before they free the buffer. The design and implementation largely follow getsockopt(SO_PEERSEC) and SELinux's corresponding socket_getpeersec_stream() implementation (though written using the generic LSM API). Bug: 29431260 Change-Id: Id148d31dbdf1b661d386a8867364c4f419229181
* | | | Merge branch android-tegra-3.10 into android-tegra-flounder-3.10Mark Salyzyn2016-04-261-0/+1
|\ \ \ \ | | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3c71420 BACKPORT: f2fs: add a max block check for get_data_block_bmap 2564b24 fuse: Add support for d_canonical_path 1201271 vfs: change d_canonical_path to take two paths Conflicts resolved in fs/f2fs/data.c and fs/f2fs/super.c to match closer to upstream. Signed-off-by: Mark Salyzyn <salyzyn@google.com> Bug: 28271368 Bug: 23904372 Change-Id: I6e457228b4f13f3cd723aa84c6257132b076ada9
| * | | Merge branch android-3.10 into android-tegra-3.10Mark Salyzyn2016-04-261-0/+1
| |\ \ \ | | | |/ | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3c71420 BACKPORT: f2fs: add a max block check for get_data_block_bmap 2564b24 fuse: Add support for d_canonical_path 1201271 vfs: change d_canonical_path to take two paths Signed-off-by: Mark Salyzyn <salyzyn@google.com> Bug: 28271368 Bug: 23904372 Change-Id: I028c95ad17f47a0a75d0bb16a23e12a30e0dee54
| | * | fuse: Add support for d_canonical_pathDaniel Rosenberg2016-04-251-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allows FUSE to report to inotify that it is acting as a layered filesystem. The userspace component returns a string representing the location of the underlying file. If the string cannot be resolved into a path, the top level path is returned instead. bug: 23904372 Change-Id: Iabdca0bbedfbff59e9c820c58636a68ef9683d9f Signed-off-by: Daniel Rosenberg <drosen@google.com>
* | | | Merge branch android-tegra-3.10 into android-tegra-flounder-3.10Mark Salyzyn2016-03-281-0/+35
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 5dc2042 BACKPORT: nl80211: Stop scheduled scan if netlink client disappears 5586920 BACKPORT: cfg80211: allow userspace to take ownership of interfaces Signed-off-by: Mark Salyzyn <salyzyn@google.com> Bug: 25561044 Change-Id: Id956f0aab1113a7f3df936c21cef48122b93f30b
| * | | Merge branch android-3.10 into android-tegra-3.10Mark Salyzyn2016-03-281-0/+35
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 5dc2042 BACKPORT: nl80211: Stop scheduled scan if netlink client disappears 5586920 BACKPORT: cfg80211: allow userspace to take ownership of interfaces Signed-off-by: Mark Salyzyn <salyzyn@google.com> Bug: 25561044 Change-Id: I214cd05df4e585a8b8d9642a307f988c7b79a6ee
| | * | BACKPORT: nl80211: Stop scheduled scan if netlink client disappearsJukka Rissanen2016-03-241-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (cherry pick from commit 93a1e86ce10e4898f9ca9cd09d659a8a7780ee5e) An attribute NL80211_ATTR_SOCKET_OWNER can be set by the scan initiator. If present, the attribute will cause the scan to be stopped if the client dies. Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com> Bug: 25561044 Change-Id: Ibe4a555b29b64b6df1b9ed4cdcd0f05a69416d14
| | * | BACKPORT: cfg80211: allow userspace to take ownership of interfacesJohannes Berg2016-03-241-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (cherry pick from commit 78f22b6a3a9254460d23060530b48ae02a9394e3) When dynamically creating interfaces from userspace, e.g. for P2P usage, such interfaces are usually owned by the process that created them, i.e. wpa_supplicant. Should wpa_supplicant crash, such interfaces will often cease operating properly and cause problems on restarting the process. To avoid this problem, introduce an ownership concept for interfaces. If an interface is owned by a netlink socket, then it will be destroyed if the netlink socket is closed for any reason, including if the process it belongs to crashed. This gives us a race-free way to get rid of any such interfaces. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Bug: 25561044 Change-Id: I5a9c8883c5c204ac5d2917ab8492b44daf4b71e7
* | | | Merge branch 'android-tegra-3.10' into android-tegra-flounder-3.10Greg Hackmann2016-03-241-0/+2
|\| | | | | | | | | | | | | | | | | | | Change-Id: I55d6c5433d167cf7f80ffa0b35a3c297aae333cc Signed-off-by: Greg Hackmann <ghackmann@google.com>
| * | | Merge branch 'android-3.10' into android-tegra-3.10Greg Hackmann2016-03-241-0/+2
| |\| |
| | * | Initial port of sdcardfsDaniel Campello2016-03-211-0/+2
| | | | | | | | | | | | | | | | Change-Id: I5b5772a2bbff9f3a7dda641644630a7b8afacec0
* | | | Merge branch 'android-tegra-3.10' into android-tegra-flounder-3.10Greg Hackmann2016-03-174-1/+7
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: drivers/mmc/core/core.c fs/libfs.c Bug: 26927535 Bug: 26963541 Bug: 27701995 Change-Id: I0773b5f7e570fd720ca869894e548b2f8e339f83 Signed-off-by: Greg Hackmann <ghackmann@google.com>
| * | | Merge branch 'android-3.10.96' into android-tegra-3.10Greg Hackmann2016-03-164-1/+7
| |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: arch/arc/mm/fault.c arch/arm/kernel/process.c arch/arm/kernel/signal.c arch/arm/mm/mmu.c arch/arm64/Kconfig arch/arm64/kernel/setup.c arch/arm64/mm/fault.c arch/arm64/mm/mmu.c arch/powerpc/mm/fault.c arch/x86/kernel/entry_64.S arch/x86/kernel/tls.c drivers/md/dm-crypt.c drivers/regulator/core.c drivers/usb/class/cdc-acm.c drivers/usb/class/cdc-acm.h drivers/usb/core/hub.c drivers/video/console/Kconfig fs/pstore/ram_core.c include/linux/memcontrol.h include/linux/mm.h include/linux/mm_types.h include/linux/sched.h ipc/sem.c kernel/power/qos.c kernel/time/sched_clock.c mm/memcontrol.c mm/memory.c mm/oom_kill.c net/ipv4/ping.c net/wireless/nl80211.c sound/soc/codecs/max98090.c sound/usb/pcm.c Change-Id: If24d32d9e5f441d46ce483df4129a2f51260795d Signed-off-by: Greg Hackmann <ghackmann@google.com>
| | * | | Merge branch 'android-3.10' into android-3.10.yGreg Hackmann2016-02-034-0/+39
| | |\| | | | | | | | | | | | | | | | | Change-Id: I1b26e63e19292dc294c6856d8d695ac1fd3ed609
| | * | | Merge branch 'linux-3.10.y' into android-3.10.yGreg Hackmann2016-02-031-1/+2
| | |\ \ \ | | | | |/ | | | |/| | | | | | Change-Id: I65fb90fa727879ea53dd33aa72d0acb9b1ab28cc
| | | * | USB: usbfs: allow URBs to be reaped after disconnectionAlan Stern2015-08-031-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 3f2cee73b650921b2e214bf487b2061a1c266504 upstream. The usbfs API has a peculiar hole: Users are not allowed to reap their URBs after the device has been disconnected. There doesn't seem to be any good reason for this; it is an ad-hoc inconsistency. The patch allows users to issue the USBDEVFS_REAPURB and USBDEVFS_REAPURBNDELAY ioctls (together with their 32-bit counterparts on 64-bit systems) even after the device is gone. If no URBs are pending for a disconnected device then the ioctls will return -ENODEV rather than -EAGAIN, because obviously no new URBs will ever be able to complete. The patch also adds a new capability flag for USBDEVFS_GET_CAPABILITIES to indicate that the reap-after-disconnect feature is supported. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Tested-by: Chris Dickens <christopher.a.dickens@gmail.com> Acked-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| | * | | Merge branch 'android-3.10' into android-3.10.yGreg Hackmann2015-02-243-0/+352
| | |\ \ \ | | | | | | | | | | | | | | | | | | Change-Id: I3a254e912f9d09344dfc7d22f561798b9ce536ef
| | * \ \ \ Merge branch 'linux-3.10.y' into android-3.10.yGreg Hackmann2014-12-081-0/+2
| | |\ \ \ \ | | | | |/ / | | | |/| |
| | | * | | netfilter: xt_bpf: add mising opaque struct sk_filter definitionPablo Neira2014-11-211-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit e10038a8ec06ac819b7552bb67aaa6d2d6f850c1 upstream. This structure is not exposed to userspace, so fix this by defining struct sk_filter; so we skip the casting in kernelspace. This is safe since userspace has no way to lurk with that internal pointer. Fixes: e6f30c7 ("netfilter: x_tables: add xt_bpf match") Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Acked-by: Willem de Bruijn <willemb@google.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| | * | | | Merge branch 'android-3.10' into android-3.10.yGreg Hackmann2014-12-081-0/+1
| | |\ \ \ \
| | * \ \ \ \ Merge branch 'linux-3.10.y' into android-3.10.yGreg Hackmann2014-10-297-10/+25
| | |\ \ \ \ \ | | | | |/ / / | | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: arch/arm/mm/mmu.c arch/arm64/kernel/fpsimd.c drivers/hid/hid-core.c drivers/input/evdev.c include/linux/mm_types.h include/net/tcp.h kernel/fork.c kernel/futex.c net/ipv4/ping.c net/ipv4/raw.c net/ipv4/sysctl_net_ipv4.c net/ipv6/route.c net/wireless/nl80211.c Change-Id: Iee241dabd75fe89fdc02d27eaa146b1c4a52a014
| | | * | | | USB: cdc-wdm: properly include types.hGreg Kroah-Hartman2014-06-111-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 7ac3764fcafc06e72e1a79a9d998b9fdd900b2a6 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: 3edce1cf813a ("USB: cdc-wdm: implement IOCTL_WDM_MAX_COMMAND") Cc: Bjørn Mork <bjorn@mork.no> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>