Linux 4.4.275
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.4.275 kernel.
All users of the 4.4 kernel series must upgrade.
The updated 4.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.4.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
------------
Makefile | 2 +- arch/arm/probes/kprobes/core.c | 6 ++++++ drivers/gpu/drm/nouveau/nouveau_bo.c | 4 ++-- drivers/scsi/sr.c | 2 ++ drivers/xen/events/events_base.c | 23 +++++++++++++++++++---- 5 files changed, 30 insertions(+), 7 deletions(-)
Christian König (1):
drm/nouveau: fix dma_address check for CPU/GPU sync
Greg Kroah-Hartman (1):
Linux 4.4.275
Juergen Gross (1):
xen/events: reset active flag for lateeoi events later
ManYi Li (1):
scsi: sr: Return appropriate error code when disk is ejected
Masami Hiramatsu (1):
arm: kprobes: Allow to handle reentered kprobe on single-stepping
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 4 -SUBLEVEL = 274 +SUBLEVEL = 275 EXTRAVERSION = NAME = Blurry Fish Butt
arch/arm/probes/kprobes/core.c +6 -0
@@ -270,6 +270,7 @@ void __kprobes kprobe_handler(struct pt_regs *regs)switch (kcb->kprobe_status) {case KPROBE_HIT_ACTIVE :case KPROBE_HIT_SSDONE : +case KPROBE_HIT_SS :/* A pre- or post-handler probe got us here. */ kprobes_inc_nmissed_count (p);save_previous_kprobe (kcb);
@@ -278,6 +279,11 @@ void __kprobes kprobe_handler(struct pt_regs *regs)singlestep (p, regs, kcb);restore_previous_kprobe (kcb);break ; +case KPROBE_REENTER : +/* A nested probe was hit in FIQ, it is a BUG */ +pr_warn ("Unrecoverable kprobe detected at %p.\n" , + p->addr); +/* fall through */ default :/* impossible cases */ BUG ();
drivers/gpu/drm/nouveau/nouveau_bo.c +2 -2
@@ -458,7 +458,7 @@ nouveau_bo_sync_for_device(struct nouveau_bo *nvbo)struct ttm_dma_tt *ttm_dma = (struct ttm_dma_tt *)nvbo->bo.ttm;int i; -if (!ttm_dma) +if (!ttm_dma || !ttm_dma->dma_address)return ;/* Don't waste time looping if the object is coherent */
@@ -478,7 +478,7 @@ nouveau_bo_sync_for_cpu(struct nouveau_bo *nvbo)struct ttm_dma_tt *ttm_dma = (struct ttm_dma_tt *)nvbo->bo.ttm;int i; -if (!ttm_dma) +if (!ttm_dma || !ttm_dma->dma_address)return ;/* Don't waste time looping if the object is coherent */
drivers/scsi/sr.c +2 -0
@@ -216,6 +216,8 @@ static unsigned int sr_get_events(struct scsi_device *sdev)return DISK_EVENT_EJECT_REQUEST ; else if (med->media_event_code == 2) return DISK_EVENT_MEDIA_CHANGE; + else if (med->media_event_code == 3) + return DISK_EVENT_EJECT_REQUEST;return 0 ; }
drivers/xen/events/events_base.c +19 -4
@@ -533,6 +533,9 @@ static void xen_irq_lateeoi_locked(struct irq_info *info, bool spurious) } info->eoi_time =0 ; + +/* is_active hasn't been reset yet, do it now. */ +smp_store_release (&info->is_active,0 );do_unmask (info,EVT_MASK_REASON_EOI_PENDING ); }
@@ -1777,10 +1780,22 @@ static void lateeoi_ack_dynirq(struct irq_data *data)struct irq_info *info =info_for_irq (data->irq);evtchn_port_t evtchn = info ? info->evtchn :0 ; -if (VALID_EVTCHN (evtchn)) { -do_mask (info,EVT_MASK_REASON_EOI_PENDING ); -ack_dynirq (data); - } +if (!VALID_EVTCHN (evtchn)) +return ; + +do_mask (info,EVT_MASK_REASON_EOI_PENDING ); + +if (unlikely (irqd_is_setaffinity_pending (data)) && +likely (!irqd_irq_disabled (data))) { +do_mask (info,EVT_MASK_REASON_TEMPORARY ); + +clear_evtchn (evtchn); + +irq_move_masked_irq (data); + +do_unmask (info,EVT_MASK_REASON_TEMPORARY ); + }else +clear_evtchn (evtchn); }static void lateeoi_mask_ack_dynirq (struct irq_data *data)