Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 6917054e authored by derfelot's avatar derfelot
Browse files

Merge Linux 4.4.275 kernel

Changes in 4.4.275: (5 commits)
        scsi: sr: Return appropriate error code when disk is ejected
        drm/nouveau: fix dma_address check for CPU/GPU sync
        xen/events: reset active flag for lateeoi events later
        arm: kprobes: Allow to handle reentered kprobe on single-stepping
        Linux 4.4.275
parents fcb30fd6 ee3696c9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
VERSION = 4
PATCHLEVEL = 4
SUBLEVEL = 274
SUBLEVEL = 275
EXTRAVERSION =
NAME = Blurry Fish Butt

+6 −0
Original line number Diff line number Diff line
@@ -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();
+2 −2
Original line number Diff line number Diff line
@@ -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 */
+2 −0
Original line number Diff line number Diff line
@@ -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;
}

+19 −4
Original line number Diff line number Diff line
@@ -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)) {
	if (!VALID_EVTCHN(evtchn))
		return;

	do_mask(info, EVT_MASK_REASON_EOI_PENDING);
		ack_dynirq(data);
	}

	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)