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

Commit cec285f5 authored by Kevin Hilman's avatar Kevin Hilman
Browse files

Merge tag 'v3.18.20' into linux-linaro-lsk-v3.18

Linux 3.18.20

* tag 'v3.18.20': (52 commits)
  Linux 3.18.20
  blk-mq: fix CPU hotplug handling
  SCSI: add 1024 max sectors black list flag
  Fix firmware loader uevent buffer NULL pointer dereference
  arm64: Don't report clear pmds and puds as huge
  9p: don't leave a half-initialized inode sitting around
  9p: forgetting to cancel request on interrupted zero-copy RPC
  NFS: Fix size of NFSACL SETACL operations
  watchdog: omap: assert the counter being stopped before reprogramming
  of: return NUMA_NO_NODE from fallback of_node_to_nid()
  USB: usbfs: allow URBs to be reaped after disconnection
  dell-laptop: Fix allocating & freeing SMI buffer page
  mac80211: prevent possible crypto tx tailroom corruption
  security_syslog() should be called once only
  __bitmap_parselist: fix bug in empty string handling
  mmc: card: Fixup request missing in mmc_blk_issue_rw_rq
  iser-target: Fix possible deadlock in RDMA_CM connection error
  iscsi-target: Convert iscsi_thread_set usage to kthread.h
  ACPICA: Tables: Fix an issue that FACS initialization is performed twice
  Btrfs: fix memory leak in the extent_same ioctl
  ...
parents 524b802c e9fd6ddc
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -4,9 +4,9 @@ Required properties:
- compatible : "arm,pl022", "arm,primecell"
- reg : Offset and length of the register set for the device
- interrupts : Should contain SPI controller interrupt
- num-cs : total number of chipselects

Optional properties:
- num-cs : total number of chipselects
- cs-gpios : should specify GPIOs used for chipselects.
  The gpios will be referred to as reg = <index> in the SPI child nodes.
  If unspecified, a single SPI device without a chip select can be used.
+1 −1
Original line number Diff line number Diff line
VERSION = 3
PATCHLEVEL = 18
SUBLEVEL = 19
SUBLEVEL = 20
EXTRAVERSION =
NAME = Diseased Newt

+2 −2
Original line number Diff line number Diff line
@@ -40,13 +40,13 @@ int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep)

int pmd_huge(pmd_t pmd)
{
	return !(pmd_val(pmd) & PMD_TABLE_BIT);
	return pmd_val(pmd) && !(pmd_val(pmd) & PMD_TABLE_BIT);
}

int pud_huge(pud_t pud)
{
#ifndef __PAGETABLE_PMD_FOLDED
	return !(pud_val(pud) & PUD_TABLE_BIT);
	return pud_val(pud) && !(pud_val(pud) & PUD_TABLE_BIT);
#else
	return 0;
#endif
+13 −21
Original line number Diff line number Diff line
@@ -1473,22 +1473,6 @@ static int blk_mq_hctx_cpu_offline(struct blk_mq_hw_ctx *hctx, int cpu)
	return NOTIFY_OK;
}

static int blk_mq_hctx_cpu_online(struct blk_mq_hw_ctx *hctx, int cpu)
{
	struct request_queue *q = hctx->queue;
	struct blk_mq_tag_set *set = q->tag_set;

	if (set->tags[hctx->queue_num])
		return NOTIFY_OK;

	set->tags[hctx->queue_num] = blk_mq_init_rq_map(set, hctx->queue_num);
	if (!set->tags[hctx->queue_num])
		return NOTIFY_STOP;

	hctx->tags = set->tags[hctx->queue_num];
	return NOTIFY_OK;
}

static int blk_mq_hctx_notify(void *data, unsigned long action,
			      unsigned int cpu)
{
@@ -1496,8 +1480,11 @@ static int blk_mq_hctx_notify(void *data, unsigned long action,

	if (action == CPU_DEAD || action == CPU_DEAD_FROZEN)
		return blk_mq_hctx_cpu_offline(hctx, cpu);
	else if (action == CPU_ONLINE || action == CPU_ONLINE_FROZEN)
		return blk_mq_hctx_cpu_online(hctx, cpu);

	/*
	 * In case of CPU online, tags may be reallocated
	 * in blk_mq_map_swqueue() after mapping is updated.
	 */

	return NOTIFY_OK;
}
@@ -1682,6 +1669,7 @@ static void blk_mq_map_swqueue(struct request_queue *q)
	unsigned int i;
	struct blk_mq_hw_ctx *hctx;
	struct blk_mq_ctx *ctx;
	struct blk_mq_tag_set *set = q->tag_set;

	queue_for_each_hw_ctx(q, hctx, i) {
		cpumask_clear(hctx->cpumask);
@@ -1708,16 +1696,20 @@ static void blk_mq_map_swqueue(struct request_queue *q)
		 * disable it and free the request entries.
		 */
		if (!hctx->nr_ctx) {
			struct blk_mq_tag_set *set = q->tag_set;

			if (set->tags[i]) {
				blk_mq_free_rq_map(set, set->tags[i], i);
				set->tags[i] = NULL;
				hctx->tags = NULL;
			}
			hctx->tags = NULL;
			continue;
		}

		/* unmapped hw queue can be remapped after CPU topo changed */
		if (!set->tags[i])
			set->tags[i] = blk_mq_init_rq_map(set, i);
		hctx->tags = set->tags[i];
		WARN_ON(!hctx->tags);

		/*
		 * Initialize batch roundrobin counts
		 */
+6 −4
Original line number Diff line number Diff line
@@ -175,11 +175,13 @@ acpi_status __init acpi_enable_subsystem(u32 flags)
	 * Obtain a permanent mapping for the FACS. This is required for the
	 * Global Lock and the Firmware Waking Vector
	 */
	if (!(flags & ACPI_NO_FACS_INIT)) {
		status = acpi_tb_initialize_facs();
		if (ACPI_FAILURE(status)) {
			ACPI_WARNING((AE_INFO, "Could not map the FACS table"));
			return_ACPI_STATUS(status);
		}
	}
#endif				/* !ACPI_REDUCED_HARDWARE */

	/*
Loading