Linux 4.9.299
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.9.299 kernel.
All users of the 4.9 kernel series must upgrade.
The updated 4.9.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.9.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/virtual/kvm/mmu.txt | 4 - Makefile | 2 arch/arm/Kconfig.debug | 44 +++++++++----- arch/x86/kvm/paging_tmpl.h | 44 +++++++++----- drivers/gpu/drm/i915/i915_drv.h | 5 + drivers/gpu/drm/i915/i915_gem.c | 72 ++++++++++++++++++++++++ drivers/gpu/drm/i915/i915_gem_gtt.c | 4 + drivers/gpu/drm/i915/i915_reg.h | 6 ++ drivers/media/firewire/firedtv-avc.c | 14 +++- drivers/media/firewire/firedtv-ci.c | 2 drivers/staging/android/ion/ion-ioctl.c | 96 ++++++++++++++++++++++++++++---- drivers/staging/android/ion/ion.c | 19 ++++-- drivers/staging/android/ion/ion.h | 4 + drivers/staging/android/ion/ion_priv.h | 4 + fs/nfs/nfs4client.c | 82 ++++++++++++++------------- lib/Kconfig.debug | 6 +- 16 files changed, 310 insertions(+), 98 deletions(-)
Dan Carpenter (1):
media: firewire: firedtv-avc: fix a buffer overflow in avc_ca_pmt()
Daniel Rosenberg (2):
ion: Fix use after free during ION_IOC_ALLOC
ion: Protect kref from userspace manipulation
Greg Kroah-Hartman (1):
Linux 4.9.299
Lai Jiangshan (1):
KVM: X86: MMU: Use the correct inherited permissions to get shadow page
Lee Jones (1):
ion: Do not 'put' ION handle until after its final use
Paolo Bonzini (1):
KVM: nVMX: fix EPT permissions as reported in exit qualification
Stefan Agner (1):
ARM: 8800/1: use choice for kernel unwinders
Trond Myklebust (1):
NFSv4: Initialise connection to the server in nfs4_alloc_client()
Tvrtko Ursulin (1):
drm/i915: Flush TLBs before releasing backing store
Greg Kroah-Hartman
maintainerDocumentation/virtual/kvm/mmu.txt +2 -2
@@ -152,8 +152,8 @@ Shadow pages contain the following information: shadow pages) so role.quadrant takes values in the range 0..3. Each quadrant maps 1GB virtual address space. role.access: - Inherited guest access permissions in the form uwx. Note execute - permission is positive, not negative. + Inherited guest access permissions from the parent ptes in the form uwx. + Note execute permission is positive, not negative. role.invalid: The page is invalid and should not be used. It is a root page that is currently pinned (by a cpu hardware register pointing to it); once it is
Makefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 9 -SUBLEVEL = 298 +SUBLEVEL = 299 EXTRAVERSION = NAME = Roaring Lionus
arch/arm/Kconfig.debug +28 -16
58 lines not on this page · raw message
arch/x86/kvm/paging_tmpl.h +28 -16
123 lines not on this page · raw message
drivers/gpu/drm/i915/i915_drv.h +4 -1
@@ -1763,6 +1763,8 @@ struct drm_i915_private {struct intel_uncore uncore; +struct mutex tlb_invalidate_lock; +struct i915_virtual_gpu vgpu;struct intel_gvt gvt;
@@ -2211,7 +2213,8 @@ struct drm_i915_gem_object {* rendering and so a non-zero seqno), and is not set if it i s on * inactive (ready to be unbound) list. */ -#define I915_BO_ACTIVE_SHIFT 0 +#define I915_BO_WAS_BOUND_BIT 0 +#define I915_BO_ACTIVE_SHIFT 1#define I915_BO_ACTIVE_MASK ((1 << I915_NUM_ENGINES) - 1)#define __I915_BO_ACTIVE (bo) \ ((READ_ONCE((bo)->flags) >> I915_BO_ACTIVE_SHIFT) & I915_BO_ACTIVE_MASK)
drivers/gpu/drm/i915/i915_gem.c +72 -0
90 lines not on this page · raw message
drivers/gpu/drm/i915/i915_gem_gtt.c +4 -0
@@ -3685,6 +3685,10 @@ int i915_vma_bind(struct i915_vma *vma, enum i915_cache_level cache_level,return ret; vma->flags |= bind_flags; + +if (vma->obj) +set_bit (I915_BO_WAS_BOUND_BIT , &vma->obj->flags); +return 0 ; }
drivers/gpu/drm/i915/i915_reg.h +6 -0
@@ -1698,6 +1698,12 @@ enum skl_disp_power_wells {#define GAMT_CHKN_BIT_REG _MMIO(0x4ab8)#define GAMT_CHKN_DISABLE_DYNAMIC_CREDIT_SHARING (1<<28) +#define GEN8_RTCR _MMIO(0x4260) +#define GEN8_M1TCR _MMIO(0x4264) +#define GEN8_M2TCR _MMIO(0x4268) +#define GEN8_BTCR _MMIO(0x426c) +#define GEN8_VTCR _MMIO(0x4270) +#if 0 #define PRB0_TAIL _MMIO(0x2030)#define PRB0_HEAD _MMIO(0x2034)
drivers/media/firewire/firedtv-avc.c +11 -3
@@ -1169,7 +1169,11 @@ int avc_ca_pmt(struct firedtv *fdtv, char *msg, int length) read_pos += program_info_length; write_pos += program_info_length; } -while (read_pos < length) { +while (read_pos +4 < length) { +if (write_pos +4 >=sizeof (c->operand) -4 ) { + ret = -EINVAL ; + goto out; + } c->operand[write_pos++] = msg[read_pos++]; c->operand[write_pos++] = msg[read_pos++]; c->operand[write_pos++] = msg[read_pos++];
@@ -1181,13 +1185,17 @@ int avc_ca_pmt(struct firedtv *fdtv, char *msg, int length) c->operand[write_pos++] = es_info_length >>8 ; c->operand[write_pos++] = es_info_length &0xff ;if (es_info_length >0 ) { +if (read_pos >= length) { + ret = -EINVAL ; + goto out; + } pmt_cmd_id = msg[read_pos++];if (pmt_cmd_id !=1 && pmt_cmd_id !=4 )dev_err (fdtv->device,"invalid pmt_cmd_id %d " "at stream level\n" , pmt_cmd_id); -if (es_info_length >sizeof (c->operand) -4 - - write_pos) { +if (es_info_length >sizeof (c->operand) -4 - write_pos || + es_info_length > length - read_pos) { ret = -EINVAL ; goto out; }
drivers/media/firewire/firedtv-ci.c +2 -0
@@ -138,6 +138,8 @@ static int fdtv_ca_pmt(struct firedtv *fdtv, void *arg) }else { data_length = msg->msg[3 ]; } +if (data_length >sizeof (msg->msg) - data_pos) +return -EINVAL ;return avc_ca_pmt (fdtv, &msg->msg[data_pos], data_length); }
drivers/staging/android/ion/ion-ioctl.c +85 -11
134 lines not on this page · raw message
drivers/staging/android/ion/ion.c +14 -5
@@ -363,8 +363,8 @@ struct ion_handle *ion_handle_get_by_id_nolock(struct ion_client *client,return ERR_PTR (-EINVAL ); } -static bool ion_handle_validate (struct ion_client *client, -struct ion_handle *handle) +bool ion_handle_validate (struct ion_client *client, +struct ion_handle *handle) {WARN_ON (!mutex_is_locked (&client->lock));return idr_find (&client->idr, handle->id) == handle;
@@ -401,9 +401,9 @@ static int ion_handle_add(struct ion_client *client, struct ion_handle *handle)return 0 ; } -struct ion_handle *ion_alloc (struct ion_client *client,size_t len, -size_t align,unsigned int heap_id_mask, -unsigned int flags) +struct ion_handle *__ion_alloc (struct ion_client *client,size_t len, +size_t align,unsigned int heap_id_mask, +unsigned int flags,bool grab_handle) {struct ion_handle *handle;struct ion_device *dev = client->dev;
@@ -453,6 +453,8 @@ struct ion_handle *ion_alloc(struct ion_client *client, size_t len,return handle;mutex_lock (&client->lock); +if (grab_handle) +ion_handle_get (handle); ret =ion_handle_add (client, handle);mutex_unlock (&client->lock);if (ret) {
@@ -462,6 +464,13 @@ struct ion_handle *ion_alloc(struct ion_client *client, size_t len,return handle; } + +struct ion_handle *ion_alloc (struct ion_client *client,size_t len, +size_t align,unsigned int heap_id_mask, +unsigned int flags) +{ +return __ion_alloc (client, len, align, heap_id_mask, flags, false); +}EXPORT_SYMBOL (ion_alloc); void ion_free_nolock(struct ion_client *client,
drivers/staging/android/ion/ion.h +4 -0
@@ -109,6 +109,10 @@ struct ion_handle *ion_alloc(struct ion_client *client, size_t len, size_t align, unsigned int heap_id_mask, unsigned int flags); +struct ion_handle *__ion_alloc (struct ion_client *client,size_t len, +size_t align,unsigned int heap_id_mask, +unsigned int flags,bool grab_handle); +/** * ion_free - free a handle * @client: the client
drivers/staging/android/ion/ion_priv.h +4 -0
@@ -149,6 +149,7 @@ struct ion_client {*/ struct ion_handle {struct kref ref; +unsigned int user_ref_count;struct ion_client *client;struct ion_buffer *buffer;struct rb_node node;
@@ -459,6 +460,9 @@ int ion_sync_for_device(struct ion_client *client, int fd);struct ion_handle *ion_handle_get_by_id_nolock (struct ion_client *client,int id); +bool ion_handle_validate (struct ion_client *client, +struct ion_handle *handle); +void ion_free_nolock (struct ion_client *client,struct ion_handle *handle);int ion_handle_put_nolock (struct ion_handle *handle);
fs/nfs/nfs4client.c +42 -40
107 lines not on this page · raw message
lib/Kconfig.debug +3 -3
@@ -1091,7 +1091,7 @@ config LOCKDEP bool depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT select STACKTRACE - select FRAME_POINTER if !MIPS && !PPC && !ARM_UNWIND && !S390 && !MICROBLAZE && !ARC && !SCORE + select FRAME_POINTER if !MIPS && !PPC && !ARM && !S390 && !MICROBLAZE && !ARC && !SCORE select KALLSYMS select KALLSYMS_ALL
@@ -1670,7 +1670,7 @@ config FAULT_INJECTION_STACKTRACE_FILTER depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT depends on !X86_64 select STACKTRACE - select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC && !SCORE + select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !SCORE help Provide stacktrace filter for fault-injection capabilities
@@ -1679,7 +1679,7 @@ config LATENCYTOP depends on DEBUG_KERNEL depends on STACKTRACE_SUPPORT depends on PROC_FS - select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC + select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC select KALLSYMS select KALLSYMS_ALL select STACKTRACE