linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 3.12 01/83] core, nfqueue, openvswitch: fix compilation warning
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 02/83] arm64: Use the reserved TTBR0 if context switching to the init_mm Jiri Slaby
                   ` (83 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Jiri Slaby, Zoltan Kiss, David S. Miller,
	Ben Hutchings, Greg Kroah-Hartman

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

Stable commit "core, nfqueue, openvswitch: Orphan frags in
skb_zerocopy and handle errors", upstream commit
36d5fe6a000790f56039afe26834265db0a3ad4c, was not correctly backported
and missed to change a const 'from' parameter to non-const.  This
results in a new batch of warnings:

net/netfilter/nfnetlink_queue_core.c: In function ‘nfqnl_zcopy’:
net/netfilter/nfnetlink_queue_core.c:272:2: warning: passing argument 1 of ‘skb_orphan_frags’ discards ‘const’ qualifier from pointer target type [enabled by default]
  if (unlikely(skb_orphan_frags(from, GFP_ATOMIC))) {
  ^
In file included from net/netfilter/nfnetlink_queue_core.c:18:0:
include/linux/skbuff.h:1822:19: note: expected ‘struct sk_buff *’ but argument is of type ‘const struct sk_buff *’
 static inline int skb_orphan_frags(struct sk_buff *skb, gfp_t gfp_mask)
                   ^
net/netfilter/nfnetlink_queue_core.c:273:3: warning: passing argument 1 of ‘skb_tx_error’ discards ‘const’ qualifier from pointer target type [enabled by default]
   skb_tx_error(from);
   ^
In file included from net/netfilter/nfnetlink_queue_core.c:18:0:
include/linux/skbuff.h:630:13: note: expected ‘struct sk_buff *’ but argument is of type ‘const struct sk_buff *’
 extern void skb_tx_error(struct sk_buff *skb);

Remove const from the 'from' parameter, the same as in the upstream
commit.

As far as I can see, this leaked into 3.10, 3.12, and 3.13 already.

Cc: Zoltan Kiss <zoltan.kiss@citrix.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Ben Hutchings <ben@decadent.org.uk>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: stable@vger.kernel.org # v3.10, v3.12, v3.13
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 net/netfilter/nfnetlink_queue_core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/netfilter/nfnetlink_queue_core.c b/net/netfilter/nfnetlink_queue_core.c
index f5c34db24498..8abb522ec322 100644
--- a/net/netfilter/nfnetlink_queue_core.c
+++ b/net/netfilter/nfnetlink_queue_core.c
@@ -236,7 +236,7 @@ nfqnl_flush(struct nfqnl_instance *queue, nfqnl_cmpfn cmpfn, unsigned long data)
 }
 
 static int
-nfqnl_zcopy(struct sk_buff *to, const struct sk_buff *from, int len, int hlen)
+nfqnl_zcopy(struct sk_buff *to, struct sk_buff *from, int len, int hlen)
 {
 	int i, j = 0;
 	int plen = 0; /* length of skb->head fragment */
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 02/83] arm64: Use the reserved TTBR0 if context switching to the init_mm
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 01/83] core, nfqueue, openvswitch: fix compilation warning Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 03/83] powerpc/pseries: Little endian fixes for post mobility device tree update Jiri Slaby
                   ` (82 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Catalin Marinas, Jiri Slaby

From: Catalin Marinas <catalin.marinas@arm.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit e53f21bce4d35a93b23d8fa1a840860f6c74f59e upstream.

The idle_task_exit() function may call switch_mm() with next ==
&init_mm. On arm64, init_mm.pgd cannot be used for user mappings, so
this patch simply sets the reserved TTBR0.

Reported-by: Jon Medhurst (Tixy) <tixy@linaro.org>
Tested-by: Jon Medhurst (Tixy) <tixy@linaro.org>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 arch/arm64/include/asm/mmu_context.h | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/arch/arm64/include/asm/mmu_context.h b/arch/arm64/include/asm/mmu_context.h
index a9eee33dfa62..101a42bde728 100644
--- a/arch/arm64/include/asm/mmu_context.h
+++ b/arch/arm64/include/asm/mmu_context.h
@@ -151,6 +151,15 @@ switch_mm(struct mm_struct *prev, struct mm_struct *next,
 {
 	unsigned int cpu = smp_processor_id();
 
+	/*
+	 * init_mm.pgd does not contain any user mappings and it is always
+	 * active for kernel addresses in TTBR1. Just set the reserved TTBR0.
+	 */
+	if (next == &init_mm) {
+		cpu_set_reserved_ttbr0();
+		return;
+	}
+
 	if (!cpumask_test_and_set_cpu(cpu, mm_cpumask(next)) || prev != next)
 		check_and_switch_context(next, tsk);
 }
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 03/83] powerpc/pseries: Little endian fixes for post mobility device tree update
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 01/83] core, nfqueue, openvswitch: fix compilation warning Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 02/83] arm64: Use the reserved TTBR0 if context switching to the init_mm Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 04/83] net: ethernet: pcnet32: Setup the SRAM and NOUFLO on Am79C97{3, 5} Jiri Slaby
                   ` (81 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Tyrel Datwyler, Nathan Fontenot, Cyril Bur,
	Michael Ellerman, Jiri Slaby

From: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit f6ff04149637723261aa4738958b0098b929ee9e upstream.

We currently use the device tree update code in the kernel after resuming
from a suspend operation to re-sync the kernels view of the device tree with
that of the hypervisor. The code as it stands is not endian safe as it relies
on parsing buffers returned by RTAS calls that thusly contains data in big
endian format.

This patch annotates variables and structure members with __be types as well
as performing necessary byte swaps to cpu endian for data that needs to be
parsed.

Signed-off-by: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
Cc: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Cc: Cyril Bur <cyrilbur@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 arch/powerpc/platforms/pseries/mobility.c | 44 ++++++++++++++++---------------
 1 file changed, 23 insertions(+), 21 deletions(-)

diff --git a/arch/powerpc/platforms/pseries/mobility.c b/arch/powerpc/platforms/pseries/mobility.c
index cde4e0a095ae..bf3829242aff 100644
--- a/arch/powerpc/platforms/pseries/mobility.c
+++ b/arch/powerpc/platforms/pseries/mobility.c
@@ -24,10 +24,10 @@
 static struct kobject *mobility_kobj;
 
 struct update_props_workarea {
-	u32 phandle;
-	u32 state;
-	u64 reserved;
-	u32 nprops;
+	__be32 phandle;
+	__be32 state;
+	__be64 reserved;
+	__be32 nprops;
 } __packed;
 
 #define NODE_ACTION_MASK	0xff000000
@@ -53,11 +53,11 @@ static int mobility_rtas_call(int token, char *buf, s32 scope)
 	return rc;
 }
 
-static int delete_dt_node(u32 phandle)
+static int delete_dt_node(__be32 phandle)
 {
 	struct device_node *dn;
 
-	dn = of_find_node_by_phandle(phandle);
+	dn = of_find_node_by_phandle(be32_to_cpu(phandle));
 	if (!dn)
 		return -ENOENT;
 
@@ -126,7 +126,7 @@ static int update_dt_property(struct device_node *dn, struct property **prop,
 	return 0;
 }
 
-static int update_dt_node(u32 phandle, s32 scope)
+static int update_dt_node(__be32 phandle, s32 scope)
 {
 	struct update_props_workarea *upwa;
 	struct device_node *dn;
@@ -135,6 +135,7 @@ static int update_dt_node(u32 phandle, s32 scope)
 	char *prop_data;
 	char *rtas_buf;
 	int update_properties_token;
+	u32 nprops;
 	u32 vd;
 
 	update_properties_token = rtas_token("ibm,update-properties");
@@ -145,7 +146,7 @@ static int update_dt_node(u32 phandle, s32 scope)
 	if (!rtas_buf)
 		return -ENOMEM;
 
-	dn = of_find_node_by_phandle(phandle);
+	dn = of_find_node_by_phandle(be32_to_cpu(phandle));
 	if (!dn) {
 		kfree(rtas_buf);
 		return -ENOENT;
@@ -161,6 +162,7 @@ static int update_dt_node(u32 phandle, s32 scope)
 			break;
 
 		prop_data = rtas_buf + sizeof(*upwa);
+		nprops = be32_to_cpu(upwa->nprops);
 
 		/* On the first call to ibm,update-properties for a node the
 		 * the first property value descriptor contains an empty
@@ -169,17 +171,17 @@ static int update_dt_node(u32 phandle, s32 scope)
 		 */
 		if (*prop_data == 0) {
 			prop_data++;
-			vd = *(u32 *)prop_data;
+			vd = be32_to_cpu(*(__be32 *)prop_data);
 			prop_data += vd + sizeof(vd);
-			upwa->nprops--;
+			nprops--;
 		}
 
-		for (i = 0; i < upwa->nprops; i++) {
+		for (i = 0; i < nprops; i++) {
 			char *prop_name;
 
 			prop_name = prop_data;
 			prop_data += strlen(prop_name) + 1;
-			vd = *(u32 *)prop_data;
+			vd = be32_to_cpu(*(__be32 *)prop_data);
 			prop_data += sizeof(vd);
 
 			switch (vd) {
@@ -211,13 +213,13 @@ static int update_dt_node(u32 phandle, s32 scope)
 	return 0;
 }
 
-static int add_dt_node(u32 parent_phandle, u32 drc_index)
+static int add_dt_node(__be32 parent_phandle, __be32 drc_index)
 {
 	struct device_node *dn;
 	struct device_node *parent_dn;
 	int rc;
 
-	parent_dn = of_find_node_by_phandle(parent_phandle);
+	parent_dn = of_find_node_by_phandle(be32_to_cpu(parent_phandle));
 	if (!parent_dn)
 		return -ENOENT;
 
@@ -236,7 +238,7 @@ static int add_dt_node(u32 parent_phandle, u32 drc_index)
 int pseries_devicetree_update(s32 scope)
 {
 	char *rtas_buf;
-	u32 *data;
+	__be32 *data;
 	int update_nodes_token;
 	int rc;
 
@@ -253,17 +255,17 @@ int pseries_devicetree_update(s32 scope)
 		if (rc && rc != 1)
 			break;
 
-		data = (u32 *)rtas_buf + 4;
-		while (*data & NODE_ACTION_MASK) {
+		data = (__be32 *)rtas_buf + 4;
+		while (be32_to_cpu(*data) & NODE_ACTION_MASK) {
 			int i;
-			u32 action = *data & NODE_ACTION_MASK;
-			int node_count = *data & NODE_COUNT_MASK;
+			u32 action = be32_to_cpu(*data) & NODE_ACTION_MASK;
+			u32 node_count = be32_to_cpu(*data) & NODE_COUNT_MASK;
 
 			data++;
 
 			for (i = 0; i < node_count; i++) {
-				u32 phandle = *data++;
-				u32 drc_index;
+				__be32 phandle = *data++;
+				__be32 drc_index;
 
 				switch (action) {
 				case DELETE_DT_NODE:
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 04/83] net: ethernet: pcnet32: Setup the SRAM and NOUFLO on Am79C97{3, 5}
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (2 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 03/83] powerpc/pseries: Little endian fixes for post mobility device tree update Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 05/83] mfd: kempld-core: Fix callback return value check Jiri Slaby
                   ` (80 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Markos Chandras, netdev, Don Fry, David S. Miller,
	Jiri Slaby

From: Markos Chandras <markos.chandras@imgtec.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 87f966d97b89774162df04d2106c6350c8fe4cb3 upstream.

On a MIPS Malta board, tons of fifo underflow errors have been observed
when using u-boot as bootloader instead of YAMON. The reason for that
is that YAMON used to set the pcnet device to SRAM mode but u-boot does
not. As a result, the default Tx threshold (64 bytes) is now too small to
keep the fifo relatively used and it can result to Tx fifo underflow errors.
As a result of which, it's best to setup the SRAM on supported controllers
so we can always use the NOUFLO bit.

Cc: <netdev@vger.kernel.org>
Cc: <linux-kernel@vger.kernel.org>
Cc: Don Fry <pcnet32@frontier.com>
Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/net/ethernet/amd/pcnet32.c | 31 +++++++++++++++++++++++++++++--
 1 file changed, 29 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/amd/pcnet32.c b/drivers/net/ethernet/amd/pcnet32.c
index 2d8e28819779..048743573230 100644
--- a/drivers/net/ethernet/amd/pcnet32.c
+++ b/drivers/net/ethernet/amd/pcnet32.c
@@ -1516,7 +1516,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
 {
 	struct pcnet32_private *lp;
 	int i, media;
-	int fdx, mii, fset, dxsuflo;
+	int fdx, mii, fset, dxsuflo, sram;
 	int chip_version;
 	char *chipname;
 	struct net_device *dev;
@@ -1553,7 +1553,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
 	}
 
 	/* initialize variables */
-	fdx = mii = fset = dxsuflo = 0;
+	fdx = mii = fset = dxsuflo = sram = 0;
 	chip_version = (chip_version >> 12) & 0xffff;
 
 	switch (chip_version) {
@@ -1586,6 +1586,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
 		chipname = "PCnet/FAST III 79C973";	/* PCI */
 		fdx = 1;
 		mii = 1;
+		sram = 1;
 		break;
 	case 0x2626:
 		chipname = "PCnet/Home 79C978";	/* PCI */
@@ -1609,6 +1610,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
 		chipname = "PCnet/FAST III 79C975";	/* PCI */
 		fdx = 1;
 		mii = 1;
+		sram = 1;
 		break;
 	case 0x2628:
 		chipname = "PCnet/PRO 79C976";
@@ -1637,6 +1639,31 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
 		dxsuflo = 1;
 	}
 
+	/*
+	 * The Am79C973/Am79C975 controllers come with 12K of SRAM
+	 * which we can use for the Tx/Rx buffers but most importantly,
+	 * the use of SRAM allow us to use the BCR18:NOUFLO bit to avoid
+	 * Tx fifo underflows.
+	 */
+	if (sram) {
+		/*
+		 * The SRAM is being configured in two steps. First we
+		 * set the SRAM size in the BCR25:SRAM_SIZE bits. According
+		 * to the datasheet, each bit corresponds to a 512-byte
+		 * page so we can have at most 24 pages. The SRAM_SIZE
+		 * holds the value of the upper 8 bits of the 16-bit SRAM size.
+		 * The low 8-bits start at 0x00 and end at 0xff. So the
+		 * address range is from 0x0000 up to 0x17ff. Therefore,
+		 * the SRAM_SIZE is set to 0x17. The next step is to set
+		 * the BCR26:SRAM_BND midway through so the Tx and Rx
+		 * buffers can share the SRAM equally.
+		 */
+		a->write_bcr(ioaddr, 25, 0x17);
+		a->write_bcr(ioaddr, 26, 0xc);
+		/* And finally enable the NOUFLO bit */
+		a->write_bcr(ioaddr, 18, a->read_bcr(ioaddr, 18) | (1 << 11));
+	}
+
 	dev = alloc_etherdev(sizeof(*lp));
 	if (!dev) {
 		ret = -ENOMEM;
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 05/83] mfd: kempld-core: Fix callback return value check
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (3 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 04/83] net: ethernet: pcnet32: Setup the SRAM and NOUFLO on Am79C97{3, 5} Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 06/83] x86/reboot: Remove the duplicate C6100 entry in the reboot quirks list Jiri Slaby
                   ` (79 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Ameya Palande, Lee Jones, Jiri Slaby

From: Ameya Palande <2ameya@gmail.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit c8648508ebfc597058d2cd00b6c539110264a167 upstream.

On success, callback function returns 0. So invert the if condition
check so that we can break out of loop.

Signed-off-by: Ameya Palande <2ameya@gmail.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/mfd/kempld-core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/mfd/kempld-core.c b/drivers/mfd/kempld-core.c
index 38917a822335..2df3cbc968d1 100644
--- a/drivers/mfd/kempld-core.c
+++ b/drivers/mfd/kempld-core.c
@@ -629,7 +629,7 @@ static int __init kempld_init(void)
 	if (force_device_id[0]) {
 		for (id = kempld_dmi_table; id->matches[0].slot != DMI_NONE; id++)
 			if (strstr(id->ident, force_device_id))
-				if (id->callback && id->callback(id))
+				if (id->callback && !id->callback(id))
 					break;
 		if (id->matches[0].slot == DMI_NONE)
 			return -ENODEV;
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 06/83] x86/reboot: Remove the duplicate C6100 entry in the reboot quirks list
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (4 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 05/83] mfd: kempld-core: Fix callback return value check Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 07/83] x86/reboot: Sort reboot DMI quirks by vendor Jiri Slaby
                   ` (78 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Masoud Sharbiani, holt, Ingo Molnar, Jiri Slaby

From: Masoud Sharbiani <msharbiani@twitter.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit b5eafc6f07c95e9f3dd047e72737449cb03c9956 upstream.

Two entries for the same system type were added, with two different vendor
names: 'Dell' and 'Dell, Inc.'.

Since a prefix match is being used by the DMI parsing code, we can eliminate
the latter as redundant.

Reported-by: "H. Peter Anvin" <hpa@zytor.com>
Signed-off-by: Masoud Sharbiani <msharbiani@twitter.com>
Cc: holt@sgi.com
Link: http://lkml.kernel.org/r/1380216643-4683-1-git-send-email-masoud.sharbiani@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 arch/x86/kernel/reboot.c | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index 618ce264b237..e9b1d7e51ac6 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -370,14 +370,6 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = {
 		.callback = set_pci_reboot,
 		.ident = "Dell PowerEdge C6100",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "C6100"),
-		},
-	},
-	{	/* Some C6100 machines were shipped with vendor being 'Dell'. */
-		.callback = set_pci_reboot,
-		.ident = "Dell PowerEdge C6100",
-		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "Dell"),
 			DMI_MATCH(DMI_PRODUCT_NAME, "C6100"),
 		},
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 07/83] x86/reboot: Sort reboot DMI quirks by vendor
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (5 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 06/83] x86/reboot: Remove the duplicate C6100 entry in the reboot quirks list Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 08/83] x86/reboot: Add reboot quirk for Certec BPC600 Jiri Slaby
                   ` (77 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Jiri Slaby, Dave Jones, Ingo Molnar

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit e56e57f6613d5ed5c3127419341d1aa989a11971 upstream.

Grouping them by vendor should make it easier to spot duplicates.

Signed-off-by: Dave Jones <davej@fedoraproject.org>
Link: http://lkml.kernel.org/r/20131001203655.GA10719@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 arch/x86/kernel/reboot.c | 270 +++++++++++++++++++++++++----------------------
 1 file changed, 141 insertions(+), 129 deletions(-)

diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index e9b1d7e51ac6..92c7bc664c13 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -136,244 +136,256 @@ static int __init set_kbd_reboot(const struct dmi_system_id *d)
  * This is a single dmi_table handling all reboot quirks.
  */
 static struct dmi_system_id __initdata reboot_dmi_table[] = {
-	{	/* Handle problems with rebooting on Dell E520's */
-		.callback = set_bios_reboot,
-		.ident = "Dell E520",
+
+	/* Acer */
+	{	/* Handle reboot issue on Acer Aspire one */
+		.callback = set_kbd_reboot,
+		.ident = "Acer Aspire One A110",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Dell DM061"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "AOA110"),
 		},
 	},
-	{	/* Handle problems with rebooting on Dell 1300's */
-		.callback = set_bios_reboot,
-		.ident = "Dell PowerEdge 1300",
+
+	/* Apple */
+	{	/* Handle problems with rebooting on Apple MacBook5 */
+		.callback = set_pci_reboot,
+		.ident = "Apple MacBook5",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 1300/"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "MacBook5"),
 		},
 	},
-	{	/* Handle problems with rebooting on Dell 300's */
-		.callback = set_bios_reboot,
-		.ident = "Dell PowerEdge 300",
+	{	/* Handle problems with rebooting on Apple MacBookPro5 */
+		.callback = set_pci_reboot,
+		.ident = "Apple MacBookPro5",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 300/"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro5"),
 		},
 	},
-	{	/* Handle problems with rebooting on Dell Optiplex 745's SFF */
-		.callback = set_bios_reboot,
-		.ident = "Dell OptiPlex 745",
+	{	/* Handle problems with rebooting on Apple Macmini3,1 */
+		.callback = set_pci_reboot,
+		.ident = "Apple Macmini3,1",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Macmini3,1"),
 		},
 	},
-	{	/* Handle problems with rebooting on Dell Optiplex 745's DFF */
-		.callback = set_bios_reboot,
-		.ident = "Dell OptiPlex 745",
+	{	/* Handle problems with rebooting on the iMac9,1. */
+		.callback = set_pci_reboot,
+		.ident = "Apple iMac9,1",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"),
-			DMI_MATCH(DMI_BOARD_NAME, "0MM599"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "iMac9,1"),
 		},
 	},
-	{	/* Handle problems with rebooting on Dell Optiplex 745 with 0KW626 */
+
+	/* ASUS */
+	{	/* Handle problems with rebooting on ASUS P4S800 */
 		.callback = set_bios_reboot,
-		.ident = "Dell OptiPlex 745",
+		.ident = "ASUS P4S800",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"),
-			DMI_MATCH(DMI_BOARD_NAME, "0KW626"),
+			DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
+			DMI_MATCH(DMI_BOARD_NAME, "P4S800"),
 		},
 	},
-	{	/* Handle problems with rebooting on Dell Optiplex 330 with 0KP561 */
+
+	/* Dell */
+	{	/* Handle problems with rebooting on Dell DXP061 */
 		.callback = set_bios_reboot,
-		.ident = "Dell OptiPlex 330",
+		.ident = "Dell DXP061",
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 330"),
-			DMI_MATCH(DMI_BOARD_NAME, "0KP561"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Dell DXP061"),
 		},
 	},
-	{	/* Handle problems with rebooting on Dell Optiplex 360 with 0T656F */
+	{	/* Handle problems with rebooting on Dell E520's */
 		.callback = set_bios_reboot,
-		.ident = "Dell OptiPlex 360",
+		.ident = "Dell E520",
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 360"),
-			DMI_MATCH(DMI_BOARD_NAME, "0T656F"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Dell DM061"),
 		},
 	},
-	{	/* Handle problems with rebooting on Dell OptiPlex 760 with 0G919G */
-		.callback = set_bios_reboot,
-		.ident = "Dell OptiPlex 760",
+	{	/* Handle problems with rebooting on the Latitude E5410. */
+		.callback = set_pci_reboot,
+		.ident = "Dell Latitude E5410",
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 760"),
-			DMI_MATCH(DMI_BOARD_NAME, "0G919G"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E5410"),
 		},
 	},
-	{	/* Handle problems with rebooting on Dell 2400's */
-		.callback = set_bios_reboot,
-		.ident = "Dell PowerEdge 2400",
+	{	/* Handle problems with rebooting on the Latitude E5420. */
+		.callback = set_pci_reboot,
+		.ident = "Dell Latitude E5420",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 2400"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E5420"),
 		},
 	},
-	{	/* Handle problems with rebooting on Dell T5400's */
-		.callback = set_bios_reboot,
-		.ident = "Dell Precision T5400",
+	{	/* Handle problems with rebooting on the Latitude E6320. */
+		.callback = set_pci_reboot,
+		.ident = "Dell Latitude E6320",
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation T5400"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6320"),
 		},
 	},
-	{	/* Handle problems with rebooting on Dell T7400's */
-		.callback = set_bios_reboot,
-		.ident = "Dell Precision T7400",
+	{	/* Handle problems with rebooting on the Latitude E6420. */
+		.callback = set_pci_reboot,
+		.ident = "Dell Latitude E6420",
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation T7400"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6420"),
 		},
 	},
-	{	/* Handle problems with rebooting on HP laptops */
+	{	/* Handle problems with rebooting on Dell Optiplex 330 with 0KP561 */
 		.callback = set_bios_reboot,
-		.ident = "HP Compaq Laptop",
+		.ident = "Dell OptiPlex 330",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 330"),
+			DMI_MATCH(DMI_BOARD_NAME, "0KP561"),
 		},
 	},
-	{	/* Handle problems with rebooting on Dell XPS710 */
+	{	/* Handle problems with rebooting on Dell Optiplex 360 with 0T656F */
 		.callback = set_bios_reboot,
-		.ident = "Dell XPS710",
+		.ident = "Dell OptiPlex 360",
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Dell XPS710"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 360"),
+			DMI_MATCH(DMI_BOARD_NAME, "0T656F"),
 		},
 	},
-	{	/* Handle problems with rebooting on Dell DXP061 */
+	{	/* Handle problems with rebooting on Dell Optiplex 745's SFF */
 		.callback = set_bios_reboot,
-		.ident = "Dell DXP061",
+		.ident = "Dell OptiPlex 745",
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Dell DXP061"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"),
 		},
 	},
-	{	/* Handle problems with rebooting on Sony VGN-Z540N */
+	{	/* Handle problems with rebooting on Dell Optiplex 745's DFF */
 		.callback = set_bios_reboot,
-		.ident = "Sony VGN-Z540N",
+		.ident = "Dell OptiPlex 745",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "VGN-Z540N"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"),
+			DMI_MATCH(DMI_BOARD_NAME, "0MM599"),
 		},
 	},
-	{	/* Handle problems with rebooting on ASUS P4S800 */
+	{	/* Handle problems with rebooting on Dell Optiplex 745 with 0KW626 */
 		.callback = set_bios_reboot,
-		.ident = "ASUS P4S800",
+		.ident = "Dell OptiPlex 745",
 		.matches = {
-			DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
-			DMI_MATCH(DMI_BOARD_NAME, "P4S800"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"),
+			DMI_MATCH(DMI_BOARD_NAME, "0KW626"),
 		},
 	},
-
-	{	/* Handle reboot issue on Acer Aspire one */
-		.callback = set_kbd_reboot,
-		.ident = "Acer Aspire One A110",
+	{	/* Handle problems with rebooting on Dell OptiPlex 760 with 0G919G */
+		.callback = set_bios_reboot,
+		.ident = "Dell OptiPlex 760",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "AOA110"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 760"),
+			DMI_MATCH(DMI_BOARD_NAME, "0G919G"),
 		},
 	},
-	{	/* Handle problems with rebooting on Apple MacBook5 */
+	{	/* Handle problems with rebooting on the OptiPlex 990. */
 		.callback = set_pci_reboot,
-		.ident = "Apple MacBook5",
+		.ident = "Dell OptiPlex 990",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "MacBook5"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 990"),
 		},
 	},
-	{	/* Handle problems with rebooting on Apple MacBookPro5 */
-		.callback = set_pci_reboot,
-		.ident = "Apple MacBookPro5",
+	{	/* Handle problems with rebooting on Dell 300's */
+		.callback = set_bios_reboot,
+		.ident = "Dell PowerEdge 300",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro5"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 300/"),
 		},
 	},
-	{	/* Handle problems with rebooting on Apple Macmini3,1 */
-		.callback = set_pci_reboot,
-		.ident = "Apple Macmini3,1",
+	{	/* Handle problems with rebooting on Dell 1300's */
+		.callback = set_bios_reboot,
+		.ident = "Dell PowerEdge 1300",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Macmini3,1"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 1300/"),
 		},
 	},
-	{	/* Handle problems with rebooting on the iMac9,1. */
-		.callback = set_pci_reboot,
-		.ident = "Apple iMac9,1",
+	{	/* Handle problems with rebooting on Dell 2400's */
+		.callback = set_bios_reboot,
+		.ident = "Dell PowerEdge 2400",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "iMac9,1"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 2400"),
 		},
 	},
-	{	/* Handle problems with rebooting on the Latitude E6320. */
+	{	/* Handle problems with rebooting on the Dell PowerEdge C6100. */
 		.callback = set_pci_reboot,
-		.ident = "Dell Latitude E6320",
+		.ident = "Dell PowerEdge C6100",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6320"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "C6100"),
 		},
 	},
-	{	/* Handle problems with rebooting on the Latitude E5410. */
+	{	/* Handle problems with rebooting on the Precision M6600. */
 		.callback = set_pci_reboot,
-		.ident = "Dell Latitude E5410",
+		.ident = "Dell Precision M6600",
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E5410"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Precision M6600"),
 		},
 	},
-	{	/* Handle problems with rebooting on the Latitude E5420. */
-		.callback = set_pci_reboot,
-		.ident = "Dell Latitude E5420",
+	{	/* Handle problems with rebooting on Dell T5400's */
+		.callback = set_bios_reboot,
+		.ident = "Dell Precision T5400",
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E5420"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation T5400"),
 		},
 	},
-	{	/* Handle problems with rebooting on the Latitude E6420. */
-		.callback = set_pci_reboot,
-		.ident = "Dell Latitude E6420",
+	{	/* Handle problems with rebooting on Dell T7400's */
+		.callback = set_bios_reboot,
+		.ident = "Dell Precision T7400",
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6420"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation T7400"),
 		},
 	},
-	{	/* Handle problems with rebooting on the OptiPlex 990. */
-		.callback = set_pci_reboot,
-		.ident = "Dell OptiPlex 990",
+	{	/* Handle problems with rebooting on Dell XPS710 */
+		.callback = set_bios_reboot,
+		.ident = "Dell XPS710",
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 990"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Dell XPS710"),
 		},
 	},
-	{	/* Handle problems with rebooting on the Precision M6600. */
-		.callback = set_pci_reboot,
-		.ident = "Dell Precision M6600",
+
+	/* Hewlett-Packard */
+	{	/* Handle problems with rebooting on HP laptops */
+		.callback = set_bios_reboot,
+		.ident = "HP Compaq Laptop",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Precision M6600"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq"),
 		},
 	},
-	{	/* Handle problems with rebooting on the Dell PowerEdge C6100. */
-		.callback = set_pci_reboot,
-		.ident = "Dell PowerEdge C6100",
+
+	/* Sony */
+	{	/* Handle problems with rebooting on Sony VGN-Z540N */
+		.callback = set_bios_reboot,
+		.ident = "Sony VGN-Z540N",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "C6100"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "VGN-Z540N"),
 		},
 	},
+
 	{ }
 };
 
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 08/83] x86/reboot: Add reboot quirk for Certec BPC600
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (6 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 07/83] x86/reboot: Sort reboot DMI quirks by vendor Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 09/83] n_tty: Merge .receive_buf() flavors Jiri Slaby
                   ` (76 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Christian Gmeiner, Matthew Garrett, Li Aubrey,
	Andrew Morton, Dave Jones, Fenghua Yu, Linus Torvalds,
	Ingo Molnar, Jiri Slaby

From: Christian Gmeiner <christian.gmeiner@gmail.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit aadca6fa4068ad1f92c492bc8507b7ed350825a2 upstream.

Certec BPC600 needs reboot=pci to actually reboot.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Cc: Matthew Garrett <mjg59@srcf.ucam.org>
Cc: Li Aubrey <aubrey.li@linux.intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Dave Jones <davej@redhat.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/1399446114-2147-1-git-send-email-christian.gmeiner@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 arch/x86/kernel/reboot.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index 92c7bc664c13..d04cb3821e56 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -191,6 +191,16 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = {
 		},
 	},
 
+	/* Certec */
+	{       /* Handle problems with rebooting on Certec BPC600 */
+		.callback = set_pci_reboot,
+		.ident = "Certec BPC600",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Certec"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "BPC600"),
+		},
+	},
+
 	/* Dell */
 	{	/* Handle problems with rebooting on Dell DXP061 */
 		.callback = set_bios_reboot,
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 09/83] n_tty: Merge .receive_buf() flavors
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (7 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 08/83] x86/reboot: Add reboot quirk for Certec BPC600 Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 10/83] conditionally define U32_MAX Jiri Slaby
                   ` (75 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Peter Hurley, Greg Kroah-Hartman, Jiri Slaby

From: Peter Hurley <peter@hurleysoftware.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 5c32d12378313e0096ea0d450462aa638a90fb6e upstream.

N_TTY's direct and flow-controlled flavors of the .receive_buf()
method are nearly identical; fold together.

Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/tty/n_tty.c | 43 ++++++++++++++++---------------------------
 1 file changed, 16 insertions(+), 27 deletions(-)

diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c
index d711dbb6d9fb..0b2c50757b89 100644
--- a/drivers/tty/n_tty.c
+++ b/drivers/tty/n_tty.c
@@ -1683,32 +1683,9 @@ static void __receive_buf(struct tty_struct *tty, const unsigned char *cp,
 	}
 }
 
-static void n_tty_receive_buf(struct tty_struct *tty, const unsigned char *cp,
-			      char *fp, int count)
-{
-	int room, n;
-
-	down_read(&tty->termios_rwsem);
-
-	while (1) {
-		room = receive_room(tty);
-		n = min(count, room);
-		if (!n)
-			break;
-		__receive_buf(tty, cp, fp, n);
-		cp += n;
-		if (fp)
-			fp += n;
-		count -= n;
-	}
-
-	tty->receive_room = room;
-	n_tty_check_throttle(tty);
-	up_read(&tty->termios_rwsem);
-}
-
-static int n_tty_receive_buf2(struct tty_struct *tty, const unsigned char *cp,
-			      char *fp, int count)
+static int
+n_tty_receive_buf_common(struct tty_struct *tty, const unsigned char *cp,
+			 char *fp, int count, int flow)
 {
 	struct n_tty_data *ldata = tty->disc_data;
 	int room, n, rcvd = 0;
@@ -1719,7 +1696,7 @@ static int n_tty_receive_buf2(struct tty_struct *tty, const unsigned char *cp,
 		room = receive_room(tty);
 		n = min(count, room);
 		if (!n) {
-			if (!room)
+			if (flow && !room)
 				ldata->no_room = 1;
 			break;
 		}
@@ -1738,6 +1715,18 @@ static int n_tty_receive_buf2(struct tty_struct *tty, const unsigned char *cp,
 	return rcvd;
 }
 
+static void n_tty_receive_buf(struct tty_struct *tty, const unsigned char *cp,
+			      char *fp, int count)
+{
+	n_tty_receive_buf_common(tty, cp, fp, count, 0);
+}
+
+static int n_tty_receive_buf2(struct tty_struct *tty, const unsigned char *cp,
+			      char *fp, int count)
+{
+	return n_tty_receive_buf_common(tty, cp, fp, count, 1);
+}
+
 int is_ignored(int sig)
 {
 	return (sigismember(&current->blocked, sig) ||
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 10/83] conditionally define U32_MAX
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (8 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 09/83] n_tty: Merge .receive_buf() flavors Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 11/83] kernel.h: define u8, s8, u32, etc. limits Jiri Slaby
                   ` (74 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Alex Elder, Alex Elder, Sage Weil, David Miller,
	Andrew Morton, Linus Torvalds, Jiri Slaby

From: Alex Elder <alex.elder@linaro.org>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 77719536dc00f8fd8f5abe6dadbde5331c37f996 upstream.

The symbol U32_MAX is defined in several spots.  Change these
definitions to be conditional.  This is in preparation for the next
patch, which centralizes the definition in <linux/kernel.h>.

Signed-off-by: Alex Elder <elder@linaro.org>
Cc: Sage Weil <sage@inktank.com>
Cc: David Miller <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 fs/reiserfs/reiserfs.h      | 2 ++
 include/linux/ceph/decode.h | 2 ++
 net/ipv4/tcp_illinois.c     | 2 ++
 3 files changed, 6 insertions(+)

diff --git a/fs/reiserfs/reiserfs.h b/fs/reiserfs/reiserfs.h
index f8adaee537c2..66a2e832fa8d 100644
--- a/fs/reiserfs/reiserfs.h
+++ b/fs/reiserfs/reiserfs.h
@@ -1958,7 +1958,9 @@ struct treepath var = {.path_length = ILLEGAL_PATH_ELEMENT_OFFSET, .reada = 0,}
 #define MAX_US_INT 0xffff
 
 // reiserfs version 2 has max offset 60 bits. Version 1 - 32 bit offset
+#ifndef U32_MAX
 #define U32_MAX (~(__u32)0)
+#endif /* !U32_MAX */
 
 static inline loff_t max_reiserfs_offset(struct inode *inode)
 {
diff --git a/include/linux/ceph/decode.h b/include/linux/ceph/decode.h
index 0442c3d800f0..27fe66a279b1 100644
--- a/include/linux/ceph/decode.h
+++ b/include/linux/ceph/decode.h
@@ -10,6 +10,7 @@
 
 /* This seemed to be the easiest place to define these */
 
+#ifndef U32_MAX
 #define	U8_MAX	((u8)(~0U))
 #define	U16_MAX	((u16)(~0U))
 #define	U32_MAX	((u32)(~0U))
@@ -24,6 +25,7 @@
 #define	S16_MIN	((s16)(-S16_MAX - 1))
 #define	S32_MIN	((s32)(-S32_MAX - 1))
 #define	S64_MIN	((s64)(-S64_MAX - 1LL))
+#endif /* !U32_MAX */
 
 /*
  * in all cases,
diff --git a/net/ipv4/tcp_illinois.c b/net/ipv4/tcp_illinois.c
index 834857f3c871..ffb2615d286f 100644
--- a/net/ipv4/tcp_illinois.c
+++ b/net/ipv4/tcp_illinois.c
@@ -23,7 +23,9 @@
 #define ALPHA_MIN	((3*ALPHA_SCALE)/10)	/* ~0.3 */
 #define ALPHA_MAX	(10*ALPHA_SCALE)	/* 10.0 */
 #define ALPHA_BASE	ALPHA_SCALE		/* 1.0 */
+#ifndef U32_MAX
 #define U32_MAX		((u32)~0U)
+#endif /* !U32_MAX */
 #define RTT_MAX		(U32_MAX / ALPHA_MAX)	/* 3.3 secs */
 
 #define BETA_SHIFT	6
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 11/83] kernel.h: define u8, s8, u32, etc. limits
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (9 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 10/83] conditionally define U32_MAX Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 12/83] remove extra definitions of U32_MAX Jiri Slaby
                   ` (73 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Alex Elder, Alex Elder, Sage Weil, David Miller,
	Andrew Morton, Linus Torvalds, Jiri Slaby

From: Alex Elder <alex.elder@linaro.org>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 89a0714106aac7309c7dfa0f004b39e1e89d2942 upstream.

Create constants that define the maximum and minimum values
representable by the kernel types u8, s8, u16, s16, and so on.

Signed-off-by: Alex Elder <elder@linaro.org>
Cc: Sage Weil <sage@inktank.com>
Cc: David Miller <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 include/linux/kernel.h | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 672ddc4de4af..93bfc3a7e0a3 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -29,6 +29,19 @@
 #define ULLONG_MAX	(~0ULL)
 #define SIZE_MAX	(~(size_t)0)
 
+#define U8_MAX		((u8)~0U)
+#define S8_MAX		((s8)(U8_MAX>>1))
+#define S8_MIN		((s8)(-S8_MAX - 1))
+#define U16_MAX		((u16)~0U)
+#define S16_MAX		((s16)(U16_MAX>>1))
+#define S16_MIN		((s16)(-S16_MAX - 1))
+#define U32_MAX		((u32)~0U)
+#define S32_MAX		((s32)(U32_MAX>>1))
+#define S32_MIN		((s32)(-S32_MAX - 1))
+#define U64_MAX		((u64)~0ULL)
+#define S64_MAX		((s64)(U64_MAX>>1))
+#define S64_MIN		((s64)(-S64_MAX - 1))
+
 #define STACK_MAGIC	0xdeadbeef
 
 #define REPEAT_BYTE(x)	((~0ul / 0xff) * (x))
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 12/83] remove extra definitions of U32_MAX
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (10 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 11/83] kernel.h: define u8, s8, u32, etc. limits Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 13/83] ALSA: hda - Add one more node in the EAPD supporting candidate list Jiri Slaby
                   ` (72 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Alex Elder, Alex Elder, Andrew Morton,
	Linus Torvalds, Jiri Slaby

From: Alex Elder <alex.elder@linaro.org>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 04f9b74e4d96d349de12fdd4e6626af4a9f75e09 upstream.

Now that the definition is centralized in <linux/kernel.h>, the
definitions of U32_MAX (and related) elsewhere in the kernel can be
removed.

Signed-off-by: Alex Elder <elder@linaro.org>
Acked-by: Sage Weil <sage@inktank.com>
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 fs/reiserfs/reiserfs.h      |  4 ----
 include/linux/ceph/decode.h | 19 -------------------
 net/ipv4/tcp_illinois.c     |  3 ---
 3 files changed, 26 deletions(-)

diff --git a/fs/reiserfs/reiserfs.h b/fs/reiserfs/reiserfs.h
index 66a2e832fa8d..dfb617b2bad2 100644
--- a/fs/reiserfs/reiserfs.h
+++ b/fs/reiserfs/reiserfs.h
@@ -1958,10 +1958,6 @@ struct treepath var = {.path_length = ILLEGAL_PATH_ELEMENT_OFFSET, .reada = 0,}
 #define MAX_US_INT 0xffff
 
 // reiserfs version 2 has max offset 60 bits. Version 1 - 32 bit offset
-#ifndef U32_MAX
-#define U32_MAX (~(__u32)0)
-#endif /* !U32_MAX */
-
 static inline loff_t max_reiserfs_offset(struct inode *inode)
 {
 	if (get_inode_item_key_version(inode) == KEY_FORMAT_3_5)
diff --git a/include/linux/ceph/decode.h b/include/linux/ceph/decode.h
index 27fe66a279b1..a6ef9cc267ec 100644
--- a/include/linux/ceph/decode.h
+++ b/include/linux/ceph/decode.h
@@ -8,25 +8,6 @@
 
 #include <linux/ceph/types.h>
 
-/* This seemed to be the easiest place to define these */
-
-#ifndef U32_MAX
-#define	U8_MAX	((u8)(~0U))
-#define	U16_MAX	((u16)(~0U))
-#define	U32_MAX	((u32)(~0U))
-#define	U64_MAX	((u64)(~0ULL))
-
-#define	S8_MAX	((s8)(U8_MAX >> 1))
-#define	S16_MAX	((s16)(U16_MAX >> 1))
-#define	S32_MAX	((s32)(U32_MAX >> 1))
-#define	S64_MAX	((s64)(U64_MAX >> 1LL))
-
-#define	S8_MIN	((s8)(-S8_MAX - 1))
-#define	S16_MIN	((s16)(-S16_MAX - 1))
-#define	S32_MIN	((s32)(-S32_MAX - 1))
-#define	S64_MIN	((s64)(-S64_MAX - 1LL))
-#endif /* !U32_MAX */
-
 /*
  * in all cases,
  *   void **p     pointer to position pointer
diff --git a/net/ipv4/tcp_illinois.c b/net/ipv4/tcp_illinois.c
index ffb2615d286f..86183c4e4fd5 100644
--- a/net/ipv4/tcp_illinois.c
+++ b/net/ipv4/tcp_illinois.c
@@ -23,9 +23,6 @@
 #define ALPHA_MIN	((3*ALPHA_SCALE)/10)	/* ~0.3 */
 #define ALPHA_MAX	(10*ALPHA_SCALE)	/* 10.0 */
 #define ALPHA_BASE	ALPHA_SCALE		/* 1.0 */
-#ifndef U32_MAX
-#define U32_MAX		((u32)~0U)
-#endif /* !U32_MAX */
 #define RTT_MAX		(U32_MAX / ALPHA_MAX)	/* 3.3 secs */
 
 #define BETA_SHIFT	6
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 00/83] 3.12.41-stable review
@ 2015-04-27 21:31 Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 01/83] core, nfqueue, openvswitch: fix compilation warning Jiri Slaby
                   ` (84 more replies)
  0 siblings, 85 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable; +Cc: linux, shuah.kh, linux-kernel, Jiri Slaby

This is the start of the stable review cycle for the 3.12.41 release.
There are 83 patches in this series, all will be posted as a response
to this one.  If anyone has any issues with these being applied, please
let me know.

Responses should be made by Wed Apr 29 20:39:50 CEST 2015.
Anything received after that time might be too late.

The whole patch series can be found in one patch at:
	http://kernel.org/pub/linux/kernel/people/jirislaby/stable-review/patch-3.12.41-rc1.xz
and the diffstat can be found below.

thanks,
js

===============


Al Viro (3):
  ocfs2: _really_ sync the right range
  ioctx_alloc(): fix vma (and file) leak on failure
  nick kvfree() from apparmor

Alex Elder (3):
  conditionally define U32_MAX
  kernel.h: define u8, s8, u32, etc. limits
  remove extra definitions of U32_MAX

Ameya Palande (1):
  mfd: kempld-core: Fix callback return value check

Andreas Werner (1):
  can: flexcan: Deferred on Regulator return EPROBE_DEFER

Bart Van Assche (1):
  Defer processing of REQ_PREEMPT requests for blocked devices

Ben Hutchings (1):
  tcp: Fix crash in TCP Fast Open

Bjorn Helgaas (1):
  Input: sirfsoc-onkey - fix GPL v2 license string typo

Brian Silverman (1):
  sched: Fix RLIMIT_RTTIME when PI-boosting to RT

Catalin Marinas (1):
  arm64: Use the reserved TTBR0 if context switching to the init_mm

Chen Gang (1):
  [media] drivers: media: usb: b2c2: use usb_*_coherent() instead of
    pci_*_consistent() in flexcop-usb.c

Christian Borntraeger (1):
  KVM: remove redundant assignments in __kvm_set_memory_region

Christian Gmeiner (1):
  x86/reboot: Add reboot quirk for Certec BPC600

D.S. Ljungmark (1):
  ipv6: Don't reduce hop limit for an interface

Darshana Padmadas (1):
  iio: imu: Use iio_trigger_get for indio_dev->trig assignment

David Disseldorp (1):
  cifs: fix use-after-free bug in find_writable_file

David Miller (1):
  radeon: Do not directly dereference pointers to BIOS area.

Dmitry M. Fedin (1):
  ALSA: usb - Creative USB X-Fi Pro SB1095 volume knob support

Dmitry Tunin (2):
  Bluetooth: ath3k: Add support of MCI 13d3:3408 bt device
  Bluetooth: ath3k: Add support of AR3012 bluetooth 13d3:3423 device

Doug Goldstein (2):
  USB: ftdi_sio: Added custom PID for Synapse Wireless product
  USB: ftdi_sio: Use jtag quirk for SNAP Connect E10

Emmanuel Grumbach (1):
  iwlwifi: dvm: run INIT firmware again upon .start()

Eric Dumazet (1):
  tcp: tcp_make_synack() should clear skb->tstamp

Eric W. Biederman (8):
  8139cp: Call dev_kfree_skby_any instead of kfree_skb.
  8139too: Call dev_kfree_skby_any instead of dev_kfree_skb.
  r8169: Call dev_kfree_skby_any instead of dev_kfree_skb.
  bonding: Call dev_kfree_skby_any instead of kfree_skb.
  bnx2: Call dev_kfree_skby_any instead of dev_kfree_skb.
  tg3: Call dev_kfree_skby_any instead of dev_kfree_skb.
  ixgb: Call dev_kfree_skby_any instead of dev_kfree_skb.
  benet: Call dev_kfree_skby_any instead of kfree_skb.

Ethan Zhao (1):
  cpufreq: fix a NULL pointer dereference in __cpufreq_governor()

Florian Westphal (1):
  netfilter: conntrack: disable generic tracking for known protocols

Gu Zheng (1):
  mm/memory hotplug: postpone the reset of obsolete pgdat

Hans Verkuil (1):
  sh_veu: v4l2_dev wasn't set

Hui Wang (1):
  ALSA: hda - Add one more node in the EAPD supporting candidate list

Igor Mammedov (1):
  kvm: avoid page allocation failure in kvm_set_memory_region()

Janne Heikkinen (1):
  Bluetooth: Add USB device 04ca:3010 as Atheros AR3012

Jim Snow (1):
  sb_edac: Fix erroneous bytes->gigabytes conversion

Jiri Slaby (2):
  core, nfqueue, openvswitch: fix compilation warning
  x86/reboot: Sort reboot DMI quirks by vendor

Joe Perches (1):
  selinux: fix sel_write_enforce broken return value

John Soni Jose (1):
  be2iscsi: Fix kernel panic when device initialization fails

Kailang Yang (1):
  ALSA: hda/realtek - Make more stable to get pin sense for ALC283

Konstantin Khlebnikov (1):
  proc/pagemap: walk page tables under pte lock

Lennart Sorensen (1):
  crypto: testmgr - fix 3.12.40 regression

Lu Baolu (2):
  usb: xhci: handle Config Error Change (CEC) in xhci driver
  usb: xhci: apply XHCI_AVOID_BEI quirk to all Intel xHCI controllers

Majd Dibbiny (1):
  IB/mlx4: Saturate RoCE port PMA counters in case of overflow

Marek Szyprowski (1):
  media: s5p-mfc: fix mmap support for 64bit arch

Mark Brown (1):
  video: vgacon: Don't build on arm64

Markos Chandras (1):
  net: ethernet: pcnet32: Setup the SRAM and NOUFLO on Am79C97{3, 5}

Martin K. Petersen (1):
  libata: Blacklist queued TRIM on Samsung SSD 850 Pro

Masoud Sharbiani (1):
  x86/reboot: Remove the duplicate C6100 entry in the reboot quirks list

Michal Kubeček (1):
  tcp: prevent fetching dst twice in early demux code

Mike Christie (1):
  iscsi target: fix oops when adding reject pdu

Nadav Amit (1):
  KVM: x86: SYSENTER emulation is broken

Neal Cardwell (1):
  tcp: fix FRTO undo on cumulative ACK of SACKed range

NeilBrown (1):
  Input: twl4030-pwrbutton - ensure a wakeup event is recorded.

Paolo Bonzini (1):
  kvm: commonize allocation of the new memory slots

Peter Feiner (1):
  mm: softdirty: unmapped addresses between VMAs are clean

Peter Hurley (2):
  n_tty: Merge .receive_buf() flavors
  n_tty: Fix read buffer overwrite when no newline

Peter Ujfalusi (1):
  dmaengine: omap-dma: Fix memory leak when terminating running transfer

Rainer Koenig (1):
  Input: elantech - add more Fujtisu notebooks to force crc_enabled

Sasha Levin (2):
  net: rds: use correct size for max unacked packets and bytes
  net: llc: use correct size for sysctl timeout entries

Seth Jennings (1):
  sb_edac: avoid INTERNAL ERROR message in EDAC with unspecified channel

Shachar Raindel (1):
  IB/uverbs: Prevent integer overflow in ib_umem_get address arithmetic

Stefan Agner (1):
  tty: serial: fsl_lpuart: clear receive flag on FIFO flush

Stefan Lippers-Hollmann (1):
  x86/reboot: Add ASRock Q1900DC-ITX mainboard reboot quirk

Sudip Mukherjee (1):
  nbd: fix possible memory leak

Takashi Iwai (1):
  ALSA: hda - Fix headphone pin config for Lifebook T731

Tejun Heo (2):
  writeback: add missing INITIAL_JIFFIES init in
    global_update_bandwidth()
  writeback: fix possible underflow in write bandwidth calculation

Tyrel Datwyler (1):
  powerpc/pseries: Little endian fixes for post mobility device tree
    update

Ulrik De Bie (1):
  Input: elantech - fix crc_enabled for Fujitsu H730

Vineet Gupta (1):
  ARC: SA_SIGINFO ucontext regs off-by-one

Viorel Suman (1):
  iio: inv_mpu6050: Clear timestamps fifo while resetting hardware fifo

 arch/arc/kernel/signal.c                        |   4 +-
 arch/arm64/include/asm/mmu_context.h            |   9 +
 arch/powerpc/platforms/pseries/mobility.c       |  44 ++--
 arch/x86/kernel/reboot.c                        | 296 +++++++++++++-----------
 arch/x86/kvm/emulate.c                          |  27 +--
 crypto/testmgr.c                                |   2 +
 drivers/ata/libata-core.c                       |   1 +
 drivers/block/nbd.c                             |   8 +-
 drivers/bluetooth/ath3k.c                       |   6 +
 drivers/bluetooth/btusb.c                       |   3 +
 drivers/cpufreq/cpufreq.c                       |   7 +
 drivers/dma/omap-dma.c                          |   1 +
 drivers/edac/sb_edac.c                          |  46 ++--
 drivers/gpu/drm/radeon/radeon_bios.c            |  10 +-
 drivers/iio/imu/adis_trigger.c                  |   2 +-
 drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c      |  25 +-
 drivers/infiniband/core/umem.c                  |   8 +
 drivers/infiniband/hw/mlx4/mad.c                |  20 +-
 drivers/input/misc/sirfsoc-onkey.c              |   2 +-
 drivers/input/misc/twl4030-pwrbutton.c          |   1 +
 drivers/input/mouse/elantech.c                  |  35 ++-
 drivers/media/platform/s5p-mfc/s5p_mfc_common.h |   2 +-
 drivers/media/platform/sh_veu.c                 |   1 +
 drivers/media/usb/b2c2/flexcop-usb.c            |   6 +-
 drivers/mfd/kempld-core.c                       |   2 +-
 drivers/net/bonding/bond_3ad.c                  |   2 +-
 drivers/net/bonding/bond_alb.c                  |   2 +-
 drivers/net/bonding/bond_main.c                 |  10 +-
 drivers/net/can/flexcan.c                       |  11 +-
 drivers/net/ethernet/amd/pcnet32.c              |  31 ++-
 drivers/net/ethernet/broadcom/bnx2.c            |   6 +-
 drivers/net/ethernet/broadcom/tg3.c             |  14 +-
 drivers/net/ethernet/emulex/benet/be_main.c     |   2 +-
 drivers/net/ethernet/intel/ixgb/ixgb_main.c     |   6 +-
 drivers/net/ethernet/realtek/8139cp.c           |   2 +-
 drivers/net/ethernet/realtek/8139too.c          |   4 +-
 drivers/net/ethernet/realtek/r8169.c            |   6 +-
 drivers/net/wireless/iwlwifi/dvm/dev.h          |   1 -
 drivers/net/wireless/iwlwifi/dvm/ucode.c        |   5 -
 drivers/scsi/be2iscsi/be_main.c                 |   2 +-
 drivers/scsi/scsi_lib.c                         |   4 +-
 drivers/target/iscsi/iscsi_target.c             |   2 +-
 drivers/tty/n_tty.c                             | 143 ++++++++----
 drivers/tty/serial/fsl_lpuart.c                 |   3 +
 drivers/usb/host/xhci-hub.c                     |   9 +-
 drivers/usb/host/xhci-pci.c                     |   2 +-
 drivers/usb/serial/ftdi_sio.c                   |   9 +-
 drivers/usb/serial/ftdi_sio_ids.h               |   6 +
 drivers/video/console/Kconfig                   |   3 +-
 fs/aio.c                                        |   3 +
 fs/cifs/file.c                                  |   1 +
 fs/ocfs2/file.c                                 |  14 +-
 fs/proc/task_mmu.c                              |  68 ++++--
 fs/reiserfs/reiserfs.h                          |   2 -
 include/linux/blk_types.h                       |   4 +-
 include/linux/ceph/decode.h                     |  17 --
 include/linux/kernel.h                          |  13 ++
 include/linux/mm.h                              |   2 +
 kernel/sched/core.c                             |   5 +-
 mm/memory_hotplug.c                             |  13 +-
 mm/page-writeback.c                             |   7 +-
 mm/util.c                                       |  10 +
 net/ipv4/tcp_illinois.c                         |   1 -
 net/ipv4/tcp_input.c                            |   7 +-
 net/ipv4/tcp_ipv4.c                             |   2 +-
 net/ipv4/tcp_output.c                           |   3 +
 net/ipv6/ndisc.c                                |   9 +-
 net/ipv6/tcp_ipv6.c                             |   2 +-
 net/llc/sysctl_net_llc.c                        |   8 +-
 net/netfilter/nf_conntrack_proto_generic.c      |  26 ++-
 net/netfilter/nfnetlink_queue_core.c            |   2 +-
 net/rds/sysctl.c                                |   4 +-
 security/apparmor/include/apparmor.h            |   1 -
 security/apparmor/lib.c                         |  14 --
 security/selinux/selinuxfs.c                    |   2 +-
 sound/pci/hda/patch_realtek.c                   |  13 +-
 sound/usb/mixer_quirks.c                        |   1 +
 virt/kvm/kvm_main.c                             |  41 ++--
 78 files changed, 708 insertions(+), 440 deletions(-)

-- 
2.3.5


^ permalink raw reply	[flat|nested] 87+ messages in thread

* [PATCH 3.12 13/83] ALSA: hda - Add one more node in the EAPD supporting candidate list
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (11 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 12/83] remove extra definitions of U32_MAX Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 14/83] ALSA: usb - Creative USB X-Fi Pro SB1095 volume knob support Jiri Slaby
                   ` (71 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Hui Wang, Takashi Iwai, Jiri Slaby

From: Hui Wang <hui.wang@canonical.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit af95b41426e0b58279f8ff0ebe420df49a4e96b8 upstream.

We have a HP machine which use the codec node 0x17 connecting the
internal speaker, and from the node capability, we saw the EAPD,
if we don't set the EAPD on for this node, the internal speaker
can't output any sound.

BugLink: https://bugs.launchpad.net/bugs/1436745
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 sound/pci/hda/patch_realtek.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 09193457d0b0..754882b588d4 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -270,7 +270,7 @@ static void alc_auto_setup_eapd(struct hda_codec *codec, bool on)
 {
 	/* We currently only handle front, HP */
 	static hda_nid_t pins[] = {
-		0x0f, 0x10, 0x14, 0x15, 0
+		0x0f, 0x10, 0x14, 0x15, 0x17, 0
 	};
 	hda_nid_t *p;
 	for (p = pins; *p; p++)
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 14/83] ALSA: usb - Creative USB X-Fi Pro SB1095 volume knob support
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (12 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 13/83] ALSA: hda - Add one more node in the EAPD supporting candidate list Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 15/83] ALSA: hda/realtek - Make more stable to get pin sense for ALC283 Jiri Slaby
                   ` (70 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Dmitry M. Fedin, Takashi Iwai, Jiri Slaby

From: "Dmitry M. Fedin" <dmitry.fedin@gmail.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 3dc8523fa7412e731441c01fb33f003eb3cfece1 upstream.

Adds an entry for Creative USB X-Fi to the rc_config array in
mixer_quirks.c to allow use of volume knob on the device.
Adds support for newer X-Fi Pro card, known as "Model No. SB1095"
with USB ID "041e:3237"

Signed-off-by: Dmitry M. Fedin <dmitry.fedin@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 sound/usb/mixer_quirks.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sound/usb/mixer_quirks.c b/sound/usb/mixer_quirks.c
index ea4b9a8a90bd..ca2d07378807 100644
--- a/sound/usb/mixer_quirks.c
+++ b/sound/usb/mixer_quirks.c
@@ -178,6 +178,7 @@ static const struct rc_config {
 	{ USB_ID(0x041e, 0x3040), 2, 2, 6, 6,  2,  0x6e91 }, /* Live! 24-bit */
 	{ USB_ID(0x041e, 0x3042), 0, 1, 1, 1,  1,  0x000d }, /* Usb X-Fi S51 */
 	{ USB_ID(0x041e, 0x30df), 0, 1, 1, 1,  1,  0x000d }, /* Usb X-Fi S51 Pro */
+	{ USB_ID(0x041e, 0x3237), 0, 1, 1, 1,  1,  0x000d }, /* Usb X-Fi S51 Pro */
 	{ USB_ID(0x041e, 0x3048), 2, 2, 6, 6,  2,  0x6e91 }, /* Toshiba SB0500 */
 };
 
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 15/83] ALSA: hda/realtek - Make more stable to get pin sense for ALC283
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (13 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 14/83] ALSA: usb - Creative USB X-Fi Pro SB1095 volume knob support Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 16/83] ALSA: hda - Fix headphone pin config for Lifebook T731 Jiri Slaby
                   ` (69 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Kailang Yang, Takashi Iwai, Jiri Slaby

From: Kailang Yang <kailang@realtek.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit a59d7199f62b8336570972dcc288321d0ec999fe upstream.

Pin sense will active when power pin is wake up.
Power pin will not wake up immediately during resume state.
Add some delay to wait for power pin activated.

Signed-off-by: Kailang Yang <kailang@realtek.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 sound/pci/hda/patch_realtek.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 754882b588d4..1cc403e83644 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -2723,6 +2723,8 @@ static void alc283_init(struct hda_codec *codec)
 
 	if (!hp_pin)
 		return;
+
+	msleep(30);
 	hp_pin_sense = snd_hda_jack_detect(codec, hp_pin);
 
 	/* Index 0x43 Direct Drive HP AMP LPM Control 1 */
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 16/83] ALSA: hda - Fix headphone pin config for Lifebook T731
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (14 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 15/83] ALSA: hda/realtek - Make more stable to get pin sense for ALC283 Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 17/83] ARC: SA_SIGINFO ucontext regs off-by-one Jiri Slaby
                   ` (68 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Takashi Iwai, Jiri Slaby

From: Takashi Iwai <tiwai@suse.de>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit cc7016ab1a22fb26f388c2fb2b692b89897cbc3e upstream.

Some BIOS version of Fujitsu Lifebook T731 seems to set up the
headphone pin (0x21) without the assoc number 0x0f while it's set only
to the output on the docking port (0x1a).  With the recent commit
[03ad6a8c93b6: ALSA: hda - Fix "PCM" name being used on one DAC when
 there are two DACs], this resulted in the weird mixer element
mapping where the headphone on the laptop is assigned as a shared
volume with the speaker and the docking port is assigned as an
individual headphone.

This patch improves the situation by correcting the headphone pin
config to the more appropriate value.

Reported-and-tested-by: Taylor Smock <smocktaylor@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 sound/pci/hda/patch_realtek.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 1cc403e83644..f2db52abc73a 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -3710,6 +3710,7 @@ enum {
 	ALC269_FIXUP_QUANTA_MUTE,
 	ALC269_FIXUP_LIFEBOOK,
 	ALC269_FIXUP_LIFEBOOK_EXTMIC,
+	ALC269_FIXUP_LIFEBOOK_HP_PIN,
 	ALC269_FIXUP_AMIC,
 	ALC269_FIXUP_DMIC,
 	ALC269VB_FIXUP_AMIC,
@@ -3834,6 +3835,13 @@ static const struct hda_fixup alc269_fixups[] = {
 			{ }
 		},
 	},
+	[ALC269_FIXUP_LIFEBOOK_HP_PIN] = {
+		.type = HDA_FIXUP_PINS,
+		.v.pins = (const struct hda_pintbl[]) {
+			{ 0x21, 0x0221102f }, /* HP out */
+			{ }
+		},
+	},
 	[ALC269_FIXUP_AMIC] = {
 		.type = HDA_FIXUP_PINS,
 		.v.pins = (const struct hda_pintbl[]) {
@@ -4133,6 +4141,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
 	SND_PCI_QUIRK(0x104d, 0x9084, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ),
 	SND_PCI_QUIRK_VENDOR(0x104d, "Sony VAIO", ALC269_FIXUP_SONY_VAIO),
 	SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook", ALC269_FIXUP_LIFEBOOK),
+	SND_PCI_QUIRK(0x10cf, 0x15dc, "Lifebook T731", ALC269_FIXUP_LIFEBOOK_HP_PIN),
 	SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC),
 	SND_PCI_QUIRK(0x17aa, 0x20f2, "Thinkpad SL410/510", ALC269_FIXUP_SKU_IGNORE),
 	SND_PCI_QUIRK(0x17aa, 0x215e, "Thinkpad L512", ALC269_FIXUP_SKU_IGNORE),
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 17/83] ARC: SA_SIGINFO ucontext regs off-by-one
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (15 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 16/83] ALSA: hda - Fix headphone pin config for Lifebook T731 Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 18/83] selinux: fix sel_write_enforce broken return value Jiri Slaby
                   ` (67 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Vineet Gupta, Jiri Slaby

From: Vineet Gupta <vgupta@synopsys.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 6914e1e3f63caa829431160f0f7093292daef2d5 upstream.

The regfile provided to SA_SIGINFO signal handler as ucontext was off by
one due to pt_regs gutter cleanups in 2013.

Before handling signal, user pt_regs are copied onto user_regs_struct and copied
back later. Both structs are binary compatible. This was all fine until
commit 2fa919045b72 (ARC: pt_regs update #2) which removed the empty stack slot
at top of pt_regs (corresponding to first pad) and made the corresponding
fixup in struct user_regs_struct (the pad in there was moved out of
@scratch - not removed altogether as it is part of ptrace ABI)

 struct user_regs_struct {
+       long pad;
        struct {
-               long pad;
                long bta, lp_start, lp_end,....
        } scratch;
 ...
 }

This meant that now user_regs_struct was off by 1 reg w.r.t pt_regs and
signal code needs to user_regs_struct.scratch to reflect it as pt_regs,
which is what this commit does.

This problem was hidden for 2 years, because both save/restore, despite
using wrong location, were using the same location. Only an interim
inspection (reproducer below) exposed the issue.

     void handle_segv(int signo, siginfo_t *info, void *context)
     {
 	ucontext_t *uc = context;
	struct user_regs_struct *regs = &(uc->uc_mcontext.regs);

	printf("regs %x %x\n",               <=== prints 7 8 (vs. 8 9)
               regs->scratch.r8, regs->scratch.r9);
     }

     int main()
     {
	struct sigaction sa;

	sa.sa_sigaction = handle_segv;
	sa.sa_flags = SA_SIGINFO;
	sigemptyset(&sa.sa_mask);
	sigaction(SIGSEGV, &sa, NULL);

	asm volatile(
	"mov	r7, 7	\n"
	"mov	r8, 8	\n"
	"mov	r9, 9	\n"
	"mov	r10, 10	\n"
	:::"r7","r8","r9","r10");

	*((unsigned int*)0x10) = 0;
     }

Fixes: 2fa919045b72ec892e "ARC: pt_regs update #2: Remove unused gutter at start of pt_regs"
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 arch/arc/kernel/signal.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arc/kernel/signal.c b/arch/arc/kernel/signal.c
index 7e95e1a86510..d68b410595c8 100644
--- a/arch/arc/kernel/signal.c
+++ b/arch/arc/kernel/signal.c
@@ -67,7 +67,7 @@ stash_usr_regs(struct rt_sigframe __user *sf, struct pt_regs *regs,
 	       sigset_t *set)
 {
 	int err;
-	err = __copy_to_user(&(sf->uc.uc_mcontext.regs), regs,
+	err = __copy_to_user(&(sf->uc.uc_mcontext.regs.scratch), regs,
 			     sizeof(sf->uc.uc_mcontext.regs.scratch));
 	err |= __copy_to_user(&sf->uc.uc_sigmask, set, sizeof(sigset_t));
 
@@ -83,7 +83,7 @@ static int restore_usr_regs(struct pt_regs *regs, struct rt_sigframe __user *sf)
 	if (!err)
 		set_current_blocked(&set);
 
-	err |= __copy_from_user(regs, &(sf->uc.uc_mcontext.regs),
+	err |= __copy_from_user(regs, &(sf->uc.uc_mcontext.regs.scratch),
 				sizeof(sf->uc.uc_mcontext.regs.scratch));
 
 	return err;
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 18/83] selinux: fix sel_write_enforce broken return value
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (16 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 17/83] ARC: SA_SIGINFO ucontext regs off-by-one Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 19/83] tcp: Fix crash in TCP Fast Open Jiri Slaby
                   ` (66 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Joe Perches, Paul Moore, Jiri Slaby

From: Joe Perches <joe@perches.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 6436a123a147db51a0b06024a8350f4c230e73ff upstream.

Return a negative error value like the rest of the entries in this function.

Signed-off-by: Joe Perches <joe@perches.com>
Acked-by:  Stephen Smalley <sds@tycho.nsa.gov>
[PM: tweaked subject line]
Signed-off-by: Paul Moore <pmoore@redhat.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 security/selinux/selinuxfs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c
index 86f969437f5d..a96bed4db3e8 100644
--- a/security/selinux/selinuxfs.c
+++ b/security/selinux/selinuxfs.c
@@ -150,7 +150,7 @@ static ssize_t sel_write_enforce(struct file *file, const char __user *buf,
 		goto out;
 
 	/* No partial writes. */
-	length = EINVAL;
+	length = -EINVAL;
 	if (*ppos != 0)
 		goto out;
 
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 19/83] tcp: Fix crash in TCP Fast Open
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (17 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 18/83] selinux: fix sel_write_enforce broken return value Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 20/83] IB/uverbs: Prevent integer overflow in ib_umem_get address arithmetic Jiri Slaby
                   ` (65 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Ben Hutchings, Jiri Slaby

From: Ben Hutchings <ben@decadent.org.uk>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

Commit 355a901e6cf1 ("tcp: make connect() mem charging friendly")
changed tcp_send_syn_data() to perform an open-coded copy of the 'syn'
skb rather than using skb_copy_expand().

The open-coded copy does not cover the skb_shared_info::gso_segs
field, so in the new skb it is left set to 0.  When this commit was
backported into stable branches between 3.10.y and 3.16.7-ckty
inclusive, it triggered the BUG() in tcp_transmit_skb().

Since Linux 3.18 the GSO segment count is kept in the
tcp_skb_cb::tcp_gso_segs field and tcp_send_syn_data() does copy the
tcp_skb_cb structure to the new skb, so mainline and newer stable
branches are not affected.

Set skb_shared_info::gso_segs to the correct value of 1.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 net/ipv4/tcp_output.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index e07ccba040be..56db79dbc633 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -2919,6 +2919,7 @@ static int tcp_send_syn_data(struct sock *sk, struct sk_buff *syn)
 		goto fallback;
 	syn_data->ip_summed = CHECKSUM_PARTIAL;
 	memcpy(syn_data->cb, syn->cb, sizeof(syn->cb));
+	skb_shinfo(syn_data)->gso_segs = 1;
 	if (unlikely(memcpy_fromiovecend(skb_put(syn_data, space),
 					 fo->data->msg_iov, 0, space))) {
 		kfree_skb(syn_data);
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 20/83] IB/uverbs: Prevent integer overflow in ib_umem_get address arithmetic
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (18 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 19/83] tcp: Fix crash in TCP Fast Open Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 21/83] iwlwifi: dvm: run INIT firmware again upon .start() Jiri Slaby
                   ` (64 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Shachar Raindel, Jack Morgenstein, Or Gerlitz,
	Roland Dreier, Jiri Slaby

From: Shachar Raindel <raindel@mellanox.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 8494057ab5e40df590ef6ef7d66324d3ae33356b upstream.

Properly verify that the resulting page aligned end address is larger
than both the start address and the length of the memory area requested.

Both the start and length arguments for ib_umem_get are controlled by
the user. A misbehaving user can provide values which will cause an
integer overflow when calculating the page aligned end address.

This overflow can cause also miscalculation of the number of pages
mapped, and additional logic issues.

Addresses: CVE-2014-8159
Signed-off-by: Shachar Raindel <raindel@mellanox.com>
Signed-off-by: Jack Morgenstein <jackm@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/infiniband/core/umem.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c
index a84112322071..055ebebc07dd 100644
--- a/drivers/infiniband/core/umem.c
+++ b/drivers/infiniband/core/umem.c
@@ -94,6 +94,14 @@ struct ib_umem *ib_umem_get(struct ib_ucontext *context, unsigned long addr,
 	if (dmasync)
 		dma_set_attr(DMA_ATTR_WRITE_BARRIER, &attrs);
 
+	/*
+	 * If the combination of the addr and size requested for this memory
+	 * region causes an integer overflow, return error.
+	 */
+	if ((PAGE_ALIGN(addr + size) <= size) ||
+	    (PAGE_ALIGN(addr + size) <= addr))
+		return ERR_PTR(-EINVAL);
+
 	if (!can_do_mlock())
 		return ERR_PTR(-EPERM);
 
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 21/83] iwlwifi: dvm: run INIT firmware again upon .start()
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (19 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 20/83] IB/uverbs: Prevent integer overflow in ib_umem_get address arithmetic Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 22/83] nbd: fix possible memory leak Jiri Slaby
                   ` (63 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Emmanuel Grumbach, Jiri Slaby

From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 9c8928f5176766bec79f272bd47b7124e11cccbd upstream.

The assumption before this patch was that we don't need to
run again the INIT firmware after the system booted. The
INIT firmware runs calibrations which impact the physical
layer's behavior.
Users reported that it may be helpful to run these
calibrations again every time the interface is brought up.
The penatly is minimal, since the calibrations run fast.
This fixes:
https://bugzilla.kernel.org/show_bug.cgi?id=94341

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/net/wireless/iwlwifi/dvm/dev.h   | 1 -
 drivers/net/wireless/iwlwifi/dvm/ucode.c | 5 -----
 2 files changed, 6 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/dvm/dev.h b/drivers/net/wireless/iwlwifi/dvm/dev.h
index a79fdd137f95..3b19335f9c50 100644
--- a/drivers/net/wireless/iwlwifi/dvm/dev.h
+++ b/drivers/net/wireless/iwlwifi/dvm/dev.h
@@ -708,7 +708,6 @@ struct iwl_priv {
 	unsigned long reload_jiffies;
 	int reload_count;
 	bool ucode_loaded;
-	bool init_ucode_run;		/* Don't run init uCode again */
 
 	u8 plcp_delta_threshold;
 
diff --git a/drivers/net/wireless/iwlwifi/dvm/ucode.c b/drivers/net/wireless/iwlwifi/dvm/ucode.c
index 86270b69cd02..72801849adf5 100644
--- a/drivers/net/wireless/iwlwifi/dvm/ucode.c
+++ b/drivers/net/wireless/iwlwifi/dvm/ucode.c
@@ -425,9 +425,6 @@ int iwl_run_init_ucode(struct iwl_priv *priv)
 	if (!priv->fw->img[IWL_UCODE_INIT].sec[0].len)
 		return 0;
 
-	if (priv->init_ucode_run)
-		return 0;
-
 	iwl_init_notification_wait(&priv->notif_wait, &calib_wait,
 				   calib_complete, ARRAY_SIZE(calib_complete),
 				   iwlagn_wait_calib, priv);
@@ -447,8 +444,6 @@ int iwl_run_init_ucode(struct iwl_priv *priv)
 	 */
 	ret = iwl_wait_notification(&priv->notif_wait, &calib_wait,
 					UCODE_CALIB_TIMEOUT);
-	if (!ret)
-		priv->init_ucode_run = true;
 
 	goto out;
 
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 22/83] nbd: fix possible memory leak
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (20 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 21/83] iwlwifi: dvm: run INIT firmware again upon .start() Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 23/83] mm/memory hotplug: postpone the reset of obsolete pgdat Jiri Slaby
                   ` (62 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Sudip Mukherjee, Sudip Mukherjee, Markus Pargmann,
	Jiri Slaby

From: Sudip Mukherjee <sudipm.mukherjee@gmail.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit ff6b8090e26ef7649ef0cc6b42389141ef48b0cf upstream.

we have already allocated memory for nbd_dev, but we were not
releasing that memory and just returning the error value.

Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
Acked-by: Paul Clements <Paul.Clements@SteelEye.com>
Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/block/nbd.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index 2dc3b5153f0d..b71f4397bcfb 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -814,10 +814,6 @@ static int __init nbd_init(void)
 		return -EINVAL;
 	}
 
-	nbd_dev = kcalloc(nbds_max, sizeof(*nbd_dev), GFP_KERNEL);
-	if (!nbd_dev)
-		return -ENOMEM;
-
 	part_shift = 0;
 	if (max_part > 0) {
 		part_shift = fls(max_part);
@@ -839,6 +835,10 @@ static int __init nbd_init(void)
 	if (nbds_max > 1UL << (MINORBITS - part_shift))
 		return -EINVAL;
 
+	nbd_dev = kcalloc(nbds_max, sizeof(*nbd_dev), GFP_KERNEL);
+	if (!nbd_dev)
+		return -ENOMEM;
+
 	for (i = 0; i < nbds_max; i++) {
 		struct gendisk *disk = alloc_disk(1 << part_shift);
 		if (!disk)
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 23/83] mm/memory hotplug: postpone the reset of obsolete pgdat
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (21 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 22/83] nbd: fix possible memory leak Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 24/83] sched: Fix RLIMIT_RTTIME when PI-boosting to RT Jiri Slaby
                   ` (61 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Gu Zheng, David Rientjes, Yasuaki Ishimatsu,
	Taku Izumi, Tang Chen, Xie XiuQi, Andrew Morton, Linus Torvalds,
	Jiri Slaby

From: Gu Zheng <guz.fnst@cn.fujitsu.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit b0dc3a342af36f95a68fe229b8f0f73552c5ca08 upstream.

Qiu Xishi reported the following BUG when testing hot-add/hot-remove node under
stress condition:

  BUG: unable to handle kernel paging request at 0000000000025f60
  IP: next_online_pgdat+0x1/0x50
  PGD 0
  Oops: 0000 [#1] SMP
  ACPI: Device does not support D3cold
  Modules linked in: fuse nls_iso8859_1 nls_cp437 vfat fat loop dm_mod coretemp mperf crc32c_intel ghash_clmulni_intel aesni_intel ablk_helper cryptd lrw gf128mul glue_helper aes_x86_64 pcspkr microcode igb dca i2c_algo_bit ipv6 megaraid_sas iTCO_wdt i2c_i801 i2c_core iTCO_vendor_support tg3 sg hwmon ptp lpc_ich pps_core mfd_core acpi_pad rtc_cmos button ext3 jbd mbcache sd_mod crc_t10dif scsi_dh_alua scsi_dh_rdac scsi_dh_hp_sw scsi_dh_emc scsi_dh ahci libahci libata scsi_mod [last unloaded: rasf]
  CPU: 23 PID: 238 Comm: kworker/23:1 Tainted: G           O 3.10.15-5885-euler0302 #1
  Hardware name: HUAWEI TECHNOLOGIES CO.,LTD. Huawei N1/Huawei N1, BIOS V100R001 03/02/2015
  Workqueue: events vmstat_update
  task: ffffa800d32c0000 ti: ffffa800d32ae000 task.ti: ffffa800d32ae000
  RIP: 0010: next_online_pgdat+0x1/0x50
  RSP: 0018:ffffa800d32afce8  EFLAGS: 00010286
  RAX: 0000000000001440 RBX: ffffffff81da53b8 RCX: 0000000000000082
  RDX: 0000000000000000 RSI: 0000000000000082 RDI: 0000000000000000
  RBP: ffffa800d32afd28 R08: ffffffff81c93bfc R09: ffffffff81cbdc96
  R10: 00000000000040ec R11: 00000000000000a0 R12: ffffa800fffb3440
  R13: ffffa800d32afd38 R14: 0000000000000017 R15: ffffa800e6616800
  FS:  0000000000000000(0000) GS:ffffa800e6600000(0000) knlGS:0000000000000000
  CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
  CR2: 0000000000025f60 CR3: 0000000001a0b000 CR4: 00000000001407e0
  DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
  DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
  Call Trace:
    refresh_cpu_vm_stats+0xd0/0x140
    vmstat_update+0x11/0x50
    process_one_work+0x194/0x3d0
    worker_thread+0x12b/0x410
    kthread+0xc6/0xd0
    ret_from_fork+0x7c/0xb0

The cause is the "memset(pgdat, 0, sizeof(*pgdat))" at the end of
try_offline_node, which will reset all the content of pgdat to 0, as the
pgdat is accessed lock-free, so that the users still using the pgdat
will panic, such as the vmstat_update routine.

process A:				offline node XX:

vmstat_updat()
   refresh_cpu_vm_stats()
     for_each_populated_zone()
       find online node XX
     cond_resched()
					offline cpu and memory, then try_offline_node()
					node_set_offline(nid), and memset(pgdat, 0, sizeof(*pgdat))
       zone = next_zone(zone)
         pg_data_t *pgdat = zone->zone_pgdat;  // here pgdat is NULL now
           next_online_pgdat(pgdat)
             next_online_node(pgdat->node_id);  // NULL pointer access

So the solution here is postponing the reset of obsolete pgdat from
try_offline_node() to hotadd_new_pgdat(), and just resetting
pgdat->nr_zones and pgdat->classzone_idx to be 0 rather than the memset
0 to avoid breaking pointer information in pgdat.

Signed-off-by: Gu Zheng <guz.fnst@cn.fujitsu.com>
Reported-by: Xishi Qiu <qiuxishi@huawei.com>
Suggested-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
Cc: Taku Izumi <izumi.taku@jp.fujitsu.com>
Cc: Tang Chen <tangchen@cn.fujitsu.com>
Cc: Xie XiuQi <xiexiuqi@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 mm/memory_hotplug.c | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index d31730564617..db7314fcd441 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -1018,6 +1018,10 @@ static pg_data_t __ref *hotadd_new_pgdat(int nid, u64 start)
 			return NULL;
 
 		arch_refresh_nodedata(nid, pgdat);
+	} else {
+		/* Reset the nr_zones and classzone_idx to 0 before reuse */
+		pgdat->nr_zones = 0;
+		pgdat->classzone_idx = 0;
 	}
 
 	/* we can use NODE_DATA(nid) from here */
@@ -1821,15 +1825,6 @@ void try_offline_node(int nid)
 		if (is_vmalloc_addr(zone->wait_table))
 			vfree(zone->wait_table);
 	}
-
-	/*
-	 * Since there is no way to guarentee the address of pgdat/zone is not
-	 * on stack of any kernel threads or used by other kernel objects
-	 * without reference counting or other symchronizing method, do not
-	 * reset node_data and free pgdat here. Just reset it to 0 and reuse
-	 * the memory when the node is online again.
-	 */
-	memset(pgdat, 0, sizeof(*pgdat));
 }
 EXPORT_SYMBOL(try_offline_node);
 
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 24/83] sched: Fix RLIMIT_RTTIME when PI-boosting to RT
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (22 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 23/83] mm/memory hotplug: postpone the reset of obsolete pgdat Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 25/83] writeback: add missing INITIAL_JIFFIES init in global_update_bandwidth() Jiri Slaby
                   ` (60 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Brian Silverman, Peter Zijlstra (Intel),
	austin, Ingo Molnar, Jiri Slaby

From: Brian Silverman <brian@peloton-tech.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 746db9443ea57fd9c059f62c4bfbf41cf224fe13 upstream.

When non-realtime tasks get priority-inheritance boosted to a realtime
scheduling class, RLIMIT_RTTIME starts to apply to them. However, the
counter used for checking this (the same one used for SCHED_RR
timeslices) was not getting reset. This meant that tasks running with a
non-realtime scheduling class which are repeatedly boosted to a realtime
one, but never block while they are running realtime, eventually hit the
timeout without ever running for a time over the limit. This patch
resets the realtime timeslice counter when un-PI-boosting from an RT to
a non-RT scheduling class.

I have some test code with two threads and a shared PTHREAD_PRIO_INHERIT
mutex which induces priority boosting and spins while boosted that gets
killed by a SIGXCPU on non-fixed kernels but doesn't with this patch
applied. It happens much faster with a CONFIG_PREEMPT_RT kernel, and
does happen eventually with PREEMPT_VOLUNTARY kernels.

Signed-off-by: Brian Silverman <brian@peloton-tech.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: austin@peloton-tech.com
Link: http://lkml.kernel.org/r/1424305436-6716-1-git-send-email-brian@peloton-tech.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 kernel/sched/core.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index f09e22163be3..0030db473c99 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -3060,8 +3060,11 @@ void rt_mutex_setprio(struct task_struct *p, int prio)
 
 	if (rt_prio(prio))
 		p->sched_class = &rt_sched_class;
-	else
+	else {
+		if (rt_prio(oldprio))
+			p->rt.timeout = 0;
 		p->sched_class = &fair_sched_class;
+	}
 
 	p->prio = prio;
 
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 25/83] writeback: add missing INITIAL_JIFFIES init in global_update_bandwidth()
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (23 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 24/83] sched: Fix RLIMIT_RTTIME when PI-boosting to RT Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 26/83] writeback: fix possible underflow in write bandwidth calculation Jiri Slaby
                   ` (59 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Tejun Heo, Wu Fengguang, Jens Axboe, Jens Axboe,
	Jiri Slaby

From: Tejun Heo <tj@kernel.org>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 7d70e15480c0450d2bfafaad338a32e884fc215e upstream.

global_update_bandwidth() uses static variable update_time as the
timestamp for the last update but forgets to initialize it to
INITIALIZE_JIFFIES.

This means that global_dirty_limit will be 5 mins into the future on
32bit and some large amount jiffies into the past on 64bit.  This
isn't critical as the only effect is that global_dirty_limit won't be
updated for the first 5 mins after booting on 32bit machines,
especially given the auxiliary nature of global_dirty_limit's role -
protecting against global dirty threshold's sudden dips; however, it
does lead to unintended suboptimal behavior.  Fix it.

Fixes: c42843f2f0bb ("writeback: introduce smoothed global dirty limit")
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Jan Kara <jack@suse.cz>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Cc: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Jens Axboe <axboe@fb.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 mm/page-writeback.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index 9f45f87a5859..d3653325a255 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -943,7 +943,7 @@ static void global_update_bandwidth(unsigned long thresh,
 				    unsigned long now)
 {
 	static DEFINE_SPINLOCK(dirty_lock);
-	static unsigned long update_time;
+	static unsigned long update_time = INITIAL_JIFFIES;
 
 	/*
 	 * check locklessly first to optimize away locking for the most time
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 26/83] writeback: fix possible underflow in write bandwidth calculation
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (24 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 25/83] writeback: add missing INITIAL_JIFFIES init in global_update_bandwidth() Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 27/83] radeon: Do not directly dereference pointers to BIOS area Jiri Slaby
                   ` (58 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Tejun Heo, Jens Axboe, Jan Kara, Wu Fengguang,
	Greg Thelen, Jens Axboe, Jiri Slaby

From: Tejun Heo <tj@kernel.org>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit c72efb658f7c8b27ca3d0efb5cfd5ded9fcac89e upstream.

>From 1ebf33901ecc75d9496862dceb1ef0377980587c Mon Sep 17 00:00:00 2001
From: Tejun Heo <tj@kernel.org>
Date: Mon, 23 Mar 2015 00:08:19 -0400

2f800fbd777b ("writeback: fix dirtied pages accounting on redirty")
introduced account_page_redirty() which reverts stat updates for a
redirtied page, making BDI_DIRTIED no longer monotonically increasing.

bdi_update_write_bandwidth() uses the delta in BDI_DIRTIED as the
basis for bandwidth calculation.  While unlikely, since the above
patch, the newer value may be lower than the recorded past value and
underflow the bandwidth calculation leading to a wild result.

Fix it by subtracing min of the old and new values when calculating
delta.  AFAIK, there hasn't been any report of it happening but the
resulting erratic behavior would be non-critical and temporary, so
it's possible that the issue is happening without being reported.  The
risk of the fix is very low, so tagged for -stable.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Jan Kara <jack@suse.cz>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Cc: Greg Thelen <gthelen@google.com>
Fixes: 2f800fbd777b ("writeback: fix dirtied pages accounting on redirty")
Signed-off-by: Jens Axboe <axboe@fb.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 mm/page-writeback.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index d3653325a255..51d8d15f48d7 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -878,8 +878,11 @@ static void bdi_update_write_bandwidth(struct backing_dev_info *bdi,
 	 *                   bw * elapsed + write_bandwidth * (period - elapsed)
 	 * write_bandwidth = ---------------------------------------------------
 	 *                                          period
+	 *
+	 * @written may have decreased due to account_page_redirty().
+	 * Avoid underflowing @bw calculation.
 	 */
-	bw = written - bdi->written_stamp;
+	bw = written - min(written, bdi->written_stamp);
 	bw *= HZ;
 	if (unlikely(elapsed > period)) {
 		do_div(bw, elapsed);
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 27/83] radeon: Do not directly dereference pointers to BIOS area.
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (25 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 26/83] writeback: fix possible underflow in write bandwidth calculation Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:31 ` [PATCH 3.12 28/83] USB: ftdi_sio: Added custom PID for Synapse Wireless product Jiri Slaby
                   ` (57 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, David Miller, Alex Deucher, Jiri Slaby

From: David Miller <davem@davemloft.net>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit f2c9e560b406f2f6b14b345c7da33467dee9cdf2 upstream.

Use readb() and memcpy_fromio() accessors instead.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/gpu/drm/radeon/radeon_bios.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_bios.c b/drivers/gpu/drm/radeon/radeon_bios.c
index b131520521e4..72b02483ff03 100644
--- a/drivers/gpu/drm/radeon/radeon_bios.c
+++ b/drivers/gpu/drm/radeon/radeon_bios.c
@@ -76,7 +76,7 @@ static bool igp_read_bios_from_vram(struct radeon_device *rdev)
 
 static bool radeon_read_bios(struct radeon_device *rdev)
 {
-	uint8_t __iomem *bios;
+	uint8_t __iomem *bios, val1, val2;
 	size_t size;
 
 	rdev->bios = NULL;
@@ -86,15 +86,19 @@ static bool radeon_read_bios(struct radeon_device *rdev)
 		return false;
 	}
 
-	if (size == 0 || bios[0] != 0x55 || bios[1] != 0xaa) {
+	val1 = readb(&bios[0]);
+	val2 = readb(&bios[1]);
+
+	if (size == 0 || val1 != 0x55 || val2 != 0xaa) {
 		pci_unmap_rom(rdev->pdev, bios);
 		return false;
 	}
-	rdev->bios = kmemdup(bios, size, GFP_KERNEL);
+	rdev->bios = kzalloc(size, GFP_KERNEL);
 	if (rdev->bios == NULL) {
 		pci_unmap_rom(rdev->pdev, bios);
 		return false;
 	}
+	memcpy_fromio(rdev->bios, bios, size);
 	pci_unmap_rom(rdev->pdev, bios);
 	return true;
 }
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 28/83] USB: ftdi_sio: Added custom PID for Synapse Wireless product
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (26 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 27/83] radeon: Do not directly dereference pointers to BIOS area Jiri Slaby
@ 2015-04-27 21:31 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 29/83] USB: ftdi_sio: Use jtag quirk for SNAP Connect E10 Jiri Slaby
                   ` (56 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:31 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Doug Goldstein, Johan Hovold, Jiri Slaby

From: Doug Goldstein <cardoe@cardoe.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 4899c054a90439477b24da8977db8d738376fe90 upstream.

Synapse Wireless uses the FTDI VID with a custom PID of 0x9090 for their
SNAP Stick 200 product.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/usb/serial/ftdi_sio.c     | 1 +
 drivers/usb/serial/ftdi_sio_ids.h | 6 ++++++
 2 files changed, 7 insertions(+)

diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index 97abe6bef2f9..16c6316d8d49 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -618,6 +618,7 @@ static struct usb_device_id id_table_combined [] = {
 		.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
 	{ USB_DEVICE(FTDI_VID, FTDI_NT_ORIONLXM_PID),
 		.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+	{ USB_DEVICE(FTDI_VID, FTDI_SYNAPSE_SS200_PID) },
 	/*
 	 * ELV devices:
 	 */
diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
index 56b1b55c4751..4e4f46f3c89c 100644
--- a/drivers/usb/serial/ftdi_sio_ids.h
+++ b/drivers/usb/serial/ftdi_sio_ids.h
@@ -561,6 +561,12 @@
  */
 #define FTDI_NT_ORIONLXM_PID	0x7c90	/* OrionLXm Substation Automation Platform */
 
+/*
+ * Synapse Wireless product ids (FTDI_VID)
+ * http://www.synapse-wireless.com
+ */
+#define FTDI_SYNAPSE_SS200_PID 0x9090 /* SS200 - SNAP Stick 200 */
+
 
 /********************************/
 /** third-party VID/PID combos **/
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 29/83] USB: ftdi_sio: Use jtag quirk for SNAP Connect E10
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (27 preceding siblings ...)
  2015-04-27 21:31 ` [PATCH 3.12 28/83] USB: ftdi_sio: Added custom PID for Synapse Wireless product Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 30/83] Defer processing of REQ_PREEMPT requests for blocked devices Jiri Slaby
                   ` (55 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Doug Goldstein, Johan Hovold, Jiri Slaby

From: Doug Goldstein <cardoe@cardoe.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit b229a0f840f774d29d8fedbf5deb344ca36b7f1a upstream.

This patch uses the existing CALAO Systems ftdi_8u2232c_probe in order
to avoid attaching a TTY to the JTAG port as this board is based on the
CALAO Systems reference design and needs the same fix up.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
[johan: clean up probe logic ]
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/usb/serial/ftdi_sio.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index 16c6316d8d49..cc436511ac76 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -1906,8 +1906,12 @@ static int ftdi_8u2232c_probe(struct usb_serial *serial)
 {
 	struct usb_device *udev = serial->dev;
 
-	if ((udev->manufacturer && !strcmp(udev->manufacturer, "CALAO Systems")) ||
-	    (udev->product && !strcmp(udev->product, "BeagleBone/XDS100V2")))
+	if (udev->manufacturer && !strcmp(udev->manufacturer, "CALAO Systems"))
+		return ftdi_jtag_probe(serial);
+
+	if (udev->product &&
+		(!strcmp(udev->product, "BeagleBone/XDS100V2") ||
+		 !strcmp(udev->product, "SNAP Connect E10")))
 		return ftdi_jtag_probe(serial);
 
 	return 0;
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 30/83] Defer processing of REQ_PREEMPT requests for blocked devices
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (28 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 29/83] USB: ftdi_sio: Use jtag quirk for SNAP Connect E10 Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 31/83] iio: inv_mpu6050: Clear timestamps fifo while resetting hardware fifo Jiri Slaby
                   ` (54 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Bart Van Assche, James Bottomley, Jiri Slaby

From: Bart Van Assche <bart.vanassche@sandisk.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit bba0bdd7ad4713d82338bcd9b72d57e9335a664b upstream.

SCSI transport drivers and SCSI LLDs block a SCSI device if the
transport layer is not operational. This means that in this state
no requests should be processed, even if the REQ_PREEMPT flag has
been set. This patch avoids that a rescan shortly after a cable
pull sporadically triggers the following kernel oops:

BUG: unable to handle kernel paging request at ffffc9001a6bc084
IP: [<ffffffffa04e08f2>] mlx4_ib_post_send+0xd2/0xb30 [mlx4_ib]
Process rescan-scsi-bus (pid: 9241, threadinfo ffff88053484a000, task ffff880534aae100)
Call Trace:
 [<ffffffffa0718135>] srp_post_send+0x65/0x70 [ib_srp]
 [<ffffffffa071b9df>] srp_queuecommand+0x1cf/0x3e0 [ib_srp]
 [<ffffffffa0001ff1>] scsi_dispatch_cmd+0x101/0x280 [scsi_mod]
 [<ffffffffa0009ad1>] scsi_request_fn+0x411/0x4d0 [scsi_mod]
 [<ffffffff81223b37>] __blk_run_queue+0x27/0x30
 [<ffffffff8122a8d2>] blk_execute_rq_nowait+0x82/0x110
 [<ffffffff8122a9c2>] blk_execute_rq+0x62/0xf0
 [<ffffffffa000b0e8>] scsi_execute+0xe8/0x190 [scsi_mod]
 [<ffffffffa000b2f3>] scsi_execute_req+0xa3/0x130 [scsi_mod]
 [<ffffffffa000c1aa>] scsi_probe_lun+0x17a/0x450 [scsi_mod]
 [<ffffffffa000ce86>] scsi_probe_and_add_lun+0x156/0x480 [scsi_mod]
 [<ffffffffa000dc2f>] __scsi_scan_target+0xdf/0x1f0 [scsi_mod]
 [<ffffffffa000dfa3>] scsi_scan_host_selected+0x183/0x1c0 [scsi_mod]
 [<ffffffffa000edfb>] scsi_scan+0xdb/0xe0 [scsi_mod]
 [<ffffffffa000ee13>] store_scan+0x13/0x20 [scsi_mod]
 [<ffffffff811c8d9b>] sysfs_write_file+0xcb/0x160
 [<ffffffff811589de>] vfs_write+0xce/0x140
 [<ffffffff81158b53>] sys_write+0x53/0xa0
 [<ffffffff81464592>] system_call_fastpath+0x16/0x1b
 [<00007f611c9d9300>] 0x7f611c9d92ff

Reported-by: Max Gurtuvoy <maxg@mellanox.com>
Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/scsi/scsi_lib.c   | 4 +++-
 include/linux/blk_types.h | 4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index ad43b987bc57..0c6a2660d1d5 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -1258,9 +1258,11 @@ int scsi_prep_state_check(struct scsi_device *sdev, struct request *req)
 				    "rejecting I/O to dead device\n");
 			ret = BLKPREP_KILL;
 			break;
-		case SDEV_QUIESCE:
 		case SDEV_BLOCK:
 		case SDEV_CREATED_BLOCK:
+			ret = BLKPREP_DEFER;
+			break;
+		case SDEV_QUIESCE:
 			/*
 			 * If the devices is blocked we defer normal commands.
 			 */
diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
index fa1abeb45b76..49c48dda162d 100644
--- a/include/linux/blk_types.h
+++ b/include/linux/blk_types.h
@@ -170,7 +170,9 @@ enum rq_flag_bits {
 	__REQ_ELVPRIV,		/* elevator private data attached */
 	__REQ_FAILED,		/* set if the request failed */
 	__REQ_QUIET,		/* don't worry about errors */
-	__REQ_PREEMPT,		/* set for "ide_preempt" requests */
+	__REQ_PREEMPT,		/* set for "ide_preempt" requests and also
+				   for requests for which the SCSI "quiesce"
+				   state must be ignored. */
 	__REQ_ALLOCED,		/* request came from our alloc pool */
 	__REQ_COPY_USER,	/* contains copies of user pages */
 	__REQ_FLUSH_SEQ,	/* request for flush sequence */
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 31/83] iio: inv_mpu6050: Clear timestamps fifo while resetting hardware fifo
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (29 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 30/83] Defer processing of REQ_PREEMPT requests for blocked devices Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 32/83] iio: imu: Use iio_trigger_get for indio_dev->trig assignment Jiri Slaby
                   ` (53 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Viorel Suman, Jonathan Cameron, Jiri Slaby

From: Viorel Suman <viorel.suman@gmail.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 4dac0a8eefd55bb1f157d1a5a084531334a2d74c upstream.

A hardware fifo reset always imply an invalidation of the
existing timestamps, so we'll clear timestamps fifo on
successfull hardware fifo reset.

Signed-off-by: Viorel Suman <viorel.suman@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
index 7da0832f187b..01d661e0fa6c 100644
--- a/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
+++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
@@ -25,6 +25,16 @@
 #include <linux/poll.h>
 #include "inv_mpu_iio.h"
 
+static void inv_clear_kfifo(struct inv_mpu6050_state *st)
+{
+	unsigned long flags;
+
+	/* take the spin lock sem to avoid interrupt kick in */
+	spin_lock_irqsave(&st->time_stamp_lock, flags);
+	kfifo_reset(&st->timestamps);
+	spin_unlock_irqrestore(&st->time_stamp_lock, flags);
+}
+
 int inv_reset_fifo(struct iio_dev *indio_dev)
 {
 	int result;
@@ -51,6 +61,10 @@ int inv_reset_fifo(struct iio_dev *indio_dev)
 					INV_MPU6050_BIT_FIFO_RST);
 	if (result)
 		goto reset_fifo_fail;
+
+	/* clear timestamps fifo */
+	inv_clear_kfifo(st);
+
 	/* enable interrupt */
 	if (st->chip_config.accl_fifo_enable ||
 	    st->chip_config.gyro_fifo_enable) {
@@ -84,16 +98,6 @@ reset_fifo_fail:
 	return result;
 }
 
-static void inv_clear_kfifo(struct inv_mpu6050_state *st)
-{
-	unsigned long flags;
-
-	/* take the spin lock sem to avoid interrupt kick in */
-	spin_lock_irqsave(&st->time_stamp_lock, flags);
-	kfifo_reset(&st->timestamps);
-	spin_unlock_irqrestore(&st->time_stamp_lock, flags);
-}
-
 /**
  * inv_mpu6050_irq_handler() - Cache a timestamp at each data ready interrupt.
  */
@@ -187,7 +191,6 @@ end_session:
 flush_fifo:
 	/* Flush HW and SW FIFOs. */
 	inv_reset_fifo(indio_dev);
-	inv_clear_kfifo(st);
 	mutex_unlock(&indio_dev->mlock);
 	iio_trigger_notify_done(indio_dev->trig);
 
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 32/83] iio: imu: Use iio_trigger_get for indio_dev->trig assignment
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (30 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 31/83] iio: inv_mpu6050: Clear timestamps fifo while resetting hardware fifo Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 33/83] dmaengine: omap-dma: Fix memory leak when terminating running transfer Jiri Slaby
                   ` (52 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Darshana Padmadas, Jonathan Cameron, Jiri Slaby

From: Darshana Padmadas <darshanapadmadas@gmail.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 4ce7ca89d6e8eae9e201cd0e972ba323f33e2fb4 upstream.

This patch uses iio_trigger_get to increment the reference
count of trigger device, to avoid incorrect assignment.
Can result in a null pointer dereference during removal if the
trigger has been changed before removal.

This patch refers to a similar situation encountered through the
following discussion:
http://www.spinics.net/lists/linux-iio/msg13669.html

Signed-off-by: Darshana Padmadas <darshanapadmadas@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/iio/imu/adis_trigger.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/imu/adis_trigger.c b/drivers/iio/imu/adis_trigger.c
index e0017c22bb9c..f53e9a803a0e 100644
--- a/drivers/iio/imu/adis_trigger.c
+++ b/drivers/iio/imu/adis_trigger.c
@@ -60,7 +60,7 @@ int adis_probe_trigger(struct adis *adis, struct iio_dev *indio_dev)
 	iio_trigger_set_drvdata(adis->trig, adis);
 	ret = iio_trigger_register(adis->trig);
 
-	indio_dev->trig = adis->trig;
+	indio_dev->trig = iio_trigger_get(adis->trig);
 	if (ret)
 		goto error_free_irq;
 
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 33/83] dmaengine: omap-dma: Fix memory leak when terminating running transfer
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (31 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 32/83] iio: imu: Use iio_trigger_get for indio_dev->trig assignment Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 34/83] x86/reboot: Add ASRock Q1900DC-ITX mainboard reboot quirk Jiri Slaby
                   ` (51 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Peter Ujfalusi, linux-omap, Vinod Koul, Jiri Slaby

From: Peter Ujfalusi <peter.ujfalusi@ti.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 02d88b735f5a60f04dbf6d051b76e1877a0d0844 upstream.

In omap_dma_start_desc the vdesc->node is removed from the virt-dma
framework managed lists (to be precise from the desc_issued list).
If a terminate_all comes before the transfer finishes the omap_desc will
not be freed up because it is not in any of the lists and we stopped the
DMA channel so the transfer will not going to complete.
There is no special sequence for leaking memory when using cyclic (audio)
transfer: with every start and stop of a cyclic transfer the driver leaks
struct omap_desc worth of memory.

Free up the allocated memory directly in omap_dma_terminate_all() since the
framework will not going to do that for us.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
CC: <linux-omap@vger.kernel.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/dma/omap-dma.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/dma/omap-dma.c b/drivers/dma/omap-dma.c
index ec3fc4fd9160..b94a37630e36 100644
--- a/drivers/dma/omap-dma.c
+++ b/drivers/dma/omap-dma.c
@@ -487,6 +487,7 @@ static int omap_dma_terminate_all(struct omap_chan *c)
 	 * c->desc is NULL and exit.)
 	 */
 	if (c->desc) {
+		omap_dma_desc_free(&c->desc->vd);
 		c->desc = NULL;
 		/* Avoid stopping the dma twice */
 		if (!c->paused)
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 34/83] x86/reboot: Add ASRock Q1900DC-ITX mainboard reboot quirk
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (32 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 33/83] dmaengine: omap-dma: Fix memory leak when terminating running transfer Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 35/83] can: flexcan: Deferred on Regulator return EPROBE_DEFER Jiri Slaby
                   ` (50 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Stefan Lippers-Hollmann, Matt Fleming, Ingo Molnar,
	Jiri Slaby

From: Stefan Lippers-Hollmann <s.l-h@gmx.de>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 80313b3078fcd2ca51970880d90757f05879a193 upstream.

The ASRock Q1900DC-ITX mainboard (Baytrail-D) hangs randomly in
both BIOS and UEFI mode while rebooting unless reboot=pci is
used. Add a quirk to reboot via the pci method.

The problem is very intermittent and hard to debug, it might succeed
rebooting just fine 40 times in a row - but fails half a dozen times
the next day. It seems to be slightly less common in BIOS CSM mode
than native UEFI (with the CSM disabled), but it does happen in either
mode. Since I've started testing this patch in late january, rebooting
has been 100% reliable.

Most of the time it already hangs during POST, but occasionally it
might even make it through the bootloader and the kernel might even
start booting, but then hangs before the mode switch. The same symptoms
occur with grub-efi, gummiboot and grub-pc, just as well as (at least)
kernel 3.16-3.19 and 4.0-rc6 (I haven't tried older kernels than 3.16).
Upgrading to the most current mainboard firmware of the ASRock
Q1900DC-ITX, version 1.20, does not improve the situation.

( Searching the web seems to suggest that other Bay Trail-D mainboards
  might be affected as well. )
--
Signed-off-by: Stefan Lippers-Hollmann <s.l-h@gmx.de>
Cc: Matt Fleming <matt.fleming@intel.com>
Link: http://lkml.kernel.org/r/20150330224427.0fb58e42@mir
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 arch/x86/kernel/reboot.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index d04cb3821e56..cb74a04c56c8 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -181,6 +181,16 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = {
 		},
 	},
 
+	/* ASRock */
+	{	/* Handle problems with rebooting on ASRock Q1900DC-ITX */
+		.callback = set_pci_reboot,
+		.ident = "ASRock Q1900DC-ITX",
+		.matches = {
+			DMI_MATCH(DMI_BOARD_VENDOR, "ASRock"),
+			DMI_MATCH(DMI_BOARD_NAME, "Q1900DC-ITX"),
+		},
+	},
+
 	/* ASUS */
 	{	/* Handle problems with rebooting on ASUS P4S800 */
 		.callback = set_bios_reboot,
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 35/83] can: flexcan: Deferred on Regulator return EPROBE_DEFER
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (33 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 34/83] x86/reboot: Add ASRock Q1900DC-ITX mainboard reboot quirk Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 36/83] usb: xhci: handle Config Error Change (CEC) in xhci driver Jiri Slaby
                   ` (49 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Andreas Werner, Marc Kleine-Budde, Jiri Slaby

From: Andreas Werner <kernel@andy89.org>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 555828ef45f825d6ee06559f0304163550eed380 upstream.

Return EPROBE_DEFER if Regulator returns EPROBE_DEFER

If the Flexcan driver is built into kernel and a regulator is used to
enable the CAN transceiver, the Flexcan driver may not use the regulator.

When initializing the Flexcan device with a regulator defined in the device
tree, but not initialized, the regulator subsystem returns EPROBE_DEFER, hence
the Flexcan init fails.

The solution for this is to return EPROBE_DEFER if regulator is not initialized
and wait until the regulator is initialized.

Signed-off-by: Andreas Werner <kernel@andy89.org>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/net/can/flexcan.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index e381142d636f..ef57e1561229 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -1046,12 +1046,19 @@ static int flexcan_probe(struct platform_device *pdev)
 	const struct flexcan_devtype_data *devtype_data;
 	struct net_device *dev;
 	struct flexcan_priv *priv;
+	struct regulator *reg_xceiver;
 	struct resource *mem;
 	struct clk *clk_ipg = NULL, *clk_per = NULL;
 	void __iomem *base;
 	int err, irq;
 	u32 clock_freq = 0;
 
+	reg_xceiver = devm_regulator_get(&pdev->dev, "xceiver");
+	if (PTR_ERR(reg_xceiver) == -EPROBE_DEFER)
+		return -EPROBE_DEFER;
+	else if (IS_ERR(reg_xceiver))
+		reg_xceiver = NULL;
+
 	if (pdev->dev.of_node)
 		of_property_read_u32(pdev->dev.of_node,
 						"clock-frequency", &clock_freq);
@@ -1113,9 +1120,7 @@ static int flexcan_probe(struct platform_device *pdev)
 	priv->pdata = pdev->dev.platform_data;
 	priv->devtype_data = devtype_data;
 
-	priv->reg_xceiver = devm_regulator_get(&pdev->dev, "xceiver");
-	if (IS_ERR(priv->reg_xceiver))
-		priv->reg_xceiver = NULL;
+	priv->reg_xceiver = reg_xceiver;
 
 	netif_napi_add(dev, &priv->napi, flexcan_poll, FLEXCAN_NAPI_WEIGHT);
 
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 36/83] usb: xhci: handle Config Error Change (CEC) in xhci driver
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (34 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 35/83] can: flexcan: Deferred on Regulator return EPROBE_DEFER Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 37/83] usb: xhci: apply XHCI_AVOID_BEI quirk to all Intel xHCI controllers Jiri Slaby
                   ` (48 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Lu Baolu, Mathias Nyman, Jiri Slaby

From: Lu Baolu <baolu.lu@linux.intel.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 9425183d177aa4a2f09d01a74925124f0778b595 upstream.

Linux xHCI driver doesn't report and handle port cofig error change.
If Port Configure Error for root hub port occurs, CEC bit in PORTSC
would be set by xHC and remains 1. This happends when the root port
fails to configure its link partner, e.g. the port fails to exchange
port capabilities information using Port Capability LMPs.

Then the Port Status Change Events will be blocked until all status
change bits(CEC is one of the change bits) are cleared('0') (refer to
xHCI spec 4.19.2). Otherwise, the port status change event for this
root port will not be generated anymore, then root port would look
like dead for user and can't be recovered until a Host Controller
Reset(HCRST).

This patch is to check CEC bit in PORTSC in xhci_get_port_status()
and set a Config Error in the return status if CEC is set. This will
cause a ClearPortFeature request, where CEC bit is cleared in
xhci_clear_port_change_bit().

[The commit log is based on initial Marvell patch posted at
http://marc.info/?l=linux-kernel&m=142323612321434&w=2]

Reported-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/usb/host/xhci-hub.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c
index cd478409cad3..abb36165515a 100644
--- a/drivers/usb/host/xhci-hub.c
+++ b/drivers/usb/host/xhci-hub.c
@@ -383,6 +383,10 @@ static void xhci_clear_port_change_bit(struct xhci_hcd *xhci, u16 wValue,
 		status = PORT_PLC;
 		port_change_bit = "link state";
 		break;
+	case USB_PORT_FEAT_C_PORT_CONFIG_ERROR:
+		status = PORT_CEC;
+		port_change_bit = "config error";
+		break;
 	default:
 		/* Should never happen */
 		return;
@@ -583,6 +587,8 @@ static u32 xhci_get_port_status(struct usb_hcd *hcd,
 			status |= USB_PORT_STAT_C_LINK_STATE << 16;
 		if ((raw_port_status & PORT_WRC))
 			status |= USB_PORT_STAT_C_BH_RESET << 16;
+		if ((raw_port_status & PORT_CEC))
+			status |= USB_PORT_STAT_C_CONFIG_ERROR << 16;
 	}
 
 	if (hcd->speed != HCD_USB3) {
@@ -1001,6 +1007,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
 		case USB_PORT_FEAT_C_OVER_CURRENT:
 		case USB_PORT_FEAT_C_ENABLE:
 		case USB_PORT_FEAT_C_PORT_LINK_STATE:
+		case USB_PORT_FEAT_C_PORT_CONFIG_ERROR:
 			xhci_clear_port_change_bit(xhci, wValue, wIndex,
 					port_array[wIndex], temp);
 			break;
@@ -1066,7 +1073,7 @@ int xhci_hub_status_data(struct usb_hcd *hcd, char *buf)
 	 */
 	status = bus_state->resuming_ports;
 
-	mask = PORT_CSC | PORT_PEC | PORT_OCC | PORT_PLC | PORT_WRC;
+	mask = PORT_CSC | PORT_PEC | PORT_OCC | PORT_PLC | PORT_WRC | PORT_CEC;
 
 	spin_lock_irqsave(&xhci->lock, flags);
 	/* For each port, did anything change?  If so, set that bit in buf. */
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 37/83] usb: xhci: apply XHCI_AVOID_BEI quirk to all Intel xHCI controllers
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (35 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 36/83] usb: xhci: handle Config Error Change (CEC) in xhci driver Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 38/83] tty: serial: fsl_lpuart: clear receive flag on FIFO flush Jiri Slaby
                   ` (47 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Lu Baolu, Mathias Nyman, Jiri Slaby

From: Lu Baolu <baolu.lu@linux.intel.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 227a4fd801c8a9fa2c4700ab98ec1aec06e3b44d upstream.

When a device with an isochronous endpoint is plugged into the Intel
xHCI host controller, and the driver submits multiple frames per URB,
the xHCI driver will set the Block Event Interrupt (BEI) flag on all
but the last TD for the URB. This causes the host controller to place
an event on the event ring, but not send an interrupt. When the last
TD for the URB completes, BEI is cleared, and we get an interrupt for
the whole URB.

However, under Intel xHCI host controllers, if the event ring is full
of events from transfers with BEI set,  an "Event Ring is Full" event
will be posted to the last entry of the event ring,  but no interrupt
is generated. Host will cease all transfer and command executions and
wait until software completes handling the pending events in the event
ring.  That means xHC stops, but event of "event ring is full" is not
notified. As the result, the xHC looks like dead to user.

This patch is to apply XHCI_AVOID_BEI quirk to Intel xHC devices. And
it should be backported to kernels as old as 3.0, that contains the
commit 69e848c2090a ("Intel xhci: Support EHCI/xHCI port switching.").

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Tested-by: Alistair Grant <akgrant0710@gmail.com>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/usb/host/xhci-pci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index 2a2e1de244d8..4ddceb7e05c3 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -108,6 +108,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
 	if (pdev->vendor == PCI_VENDOR_ID_INTEL) {
 		xhci->quirks |= XHCI_LPM_SUPPORT;
 		xhci->quirks |= XHCI_INTEL_HOST;
+		xhci->quirks |= XHCI_AVOID_BEI;
 	}
 	if (pdev->vendor == PCI_VENDOR_ID_INTEL &&
 			pdev->device == PCI_DEVICE_ID_INTEL_PANTHERPOINT_XHCI) {
@@ -123,7 +124,6 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
 		 * PPT chipsets.
 		 */
 		xhci->quirks |= XHCI_SPURIOUS_REBOOT;
-		xhci->quirks |= XHCI_AVOID_BEI;
 	}
 	if (pdev->vendor == PCI_VENDOR_ID_INTEL &&
 		pdev->device == PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_XHCI) {
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 38/83] tty: serial: fsl_lpuart: clear receive flag on FIFO flush
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (36 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 37/83] usb: xhci: apply XHCI_AVOID_BEI quirk to all Intel xHCI controllers Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 39/83] n_tty: Fix read buffer overwrite when no newline Jiri Slaby
                   ` (46 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Stefan Agner, Jiri Slaby

From: Stefan Agner <stefan@agner.ch>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 8e4934c6d6c659e22b1b746af4196683e77ce6ca upstream.

When the receiver was enabled during startup, a character could
have been in the FIFO when the UART get initially used. The
driver configures the (receive) watermark level, and flushes the
FIFO. However, the receive flag (RDRF) could still be set at that
stage (as mentioned in the register description of UARTx_RWFIFO).
This leads to an interrupt which won't be handled properly in
interrupt mode: The receive interrupt function lpuart_rxint checks
the FIFO count, which is 0 at that point (due to the flush
during initialization). The problem does not manifest when using
DMA to receive characters.

Fix this situation by explicitly read the status register, which
leads to clearing of the RDRF flag. Due to the flush just after
the status flag read, a explicit data read is not to required.

Signed-off-by: Stefan Agner <stefan@agner.ch>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/tty/serial/fsl_lpuart.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c
index 175f123f4f09..501c465feb59 100644
--- a/drivers/tty/serial/fsl_lpuart.c
+++ b/drivers/tty/serial/fsl_lpuart.c
@@ -362,6 +362,9 @@ static void lpuart_setup_watermark(struct lpuart_port *sport)
 	writeb(val | UARTPFIFO_TXFE | UARTPFIFO_RXFE,
 			sport->port.membase + UARTPFIFO);
 
+	/* explicitly clear RDRF */
+	readb(sport->port.membase + UARTSR1);
+
 	/* flush Tx and Rx FIFO */
 	writeb(UARTCFIFO_TXFLUSH | UARTCFIFO_RXFLUSH,
 			sport->port.membase + UARTCFIFO);
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 39/83] n_tty: Fix read buffer overwrite when no newline
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (37 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 38/83] tty: serial: fsl_lpuart: clear receive flag on FIFO flush Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 40/83] cifs: fix use-after-free bug in find_writable_file Jiri Slaby
                   ` (45 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Peter Hurley, Jiri Slaby, Joseph Salisbury

From: Peter Hurley <peter@hurleysoftware.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit fb5ef9e7da39968fec6d6f37f20a23d23740c75e upstream.

In canon mode, the read buffer head will advance over the buffer tail
if the input > 4095 bytes without receiving a line termination char.

Discard additional input until a line termination is received.
Before evaluating for overflow, the 'room' value is normalized for
I_PARMRK and 1 byte is reserved for line termination (even in !icanon
mode, in case the mode is switched). The following table shows the
transform:

 actual buffer |  'room' value before overflow calc
  space avail  |    !I_PARMRK    |    I_PARMRK
 --------------------------------------------------
      0        |       -1        |       -1
      1        |        0        |        0
      2        |        1        |        0
      3        |        2        |        0
      4+       |        3        |        1

When !icanon or when icanon and the read buffer contains newlines,
normalized 'room' values of -1 and 0 are clamped to 0, and
'overflow' is 0, so read_head is not adjusted and the input i/o loop
exits (setting no_room if called from flush_to_ldisc()). No input
is discarded since the reader does have input available to read
which ensures forward progress.

When icanon and the read buffer does not contain newlines and the
normalized 'room' value is 0, then overflow and room are reset to 1,
so that the i/o loop will process the next input char normally
(except for parity errors which are ignored). Thus, erasures, signalling
chars, 7-bit mode, etc. will continue to be handled properly.

If the input char processed was not a line termination char, then
the canon_head index will not have advanced, so the normalized 'room'
value will now be -1 and 'overflow' will be set, which indicates the
read_head can safely be reset, effectively erasing the last char
processed.

If the input char processed was a line termination, then the
canon_head index will have advanced, so 'overflow' is cleared to 0,
the read_head is not reset, and 'room' is cleared to 0, which exits
the i/o loop (because the reader now have input available to read
which ensures forward progress).

Note that it is possible for a line termination to be received, and
for the reader to copy the line to the user buffer before the
input i/o loop is ready to process the next input char. This is
why the i/o loop recomputes the room/overflow state with every
input char while handling overflow.

Finally, if the input data was processed without receiving
a line termination (so that overflow is still set), the pty
driver must receive a write wakeup. A pty writer may be waiting
to write more data in n_tty_write() but without unthrottling
here that wakeup will not arrive, and forward progress will halt.
(Normally, the pty writer is woken when the reader reads data out
of the buffer and more space become available).

Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
(backported from commit fb5ef9e7da39968fec6d6f37f20a23d23740c75e)
Signed-off-by: Joseph Salisbury <joseph.salisbury@canonical.com>
---
 drivers/tty/n_tty.c | 106 +++++++++++++++++++++++++++++++++++++++-------------
 1 file changed, 79 insertions(+), 27 deletions(-)

diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c
index 0b2c50757b89..632b0fb6b008 100644
--- a/drivers/tty/n_tty.c
+++ b/drivers/tty/n_tty.c
@@ -246,8 +246,6 @@ static void n_tty_write_wakeup(struct tty_struct *tty)
 
 static void n_tty_check_throttle(struct tty_struct *tty)
 {
-	if (tty->driver->type == TTY_DRIVER_TYPE_PTY)
-		return;
 	/*
 	 * Check the remaining room for the input canonicalization
 	 * mode.  We don't want to throttle the driver if we're in
@@ -1511,23 +1509,6 @@ n_tty_receive_char_lnext(struct tty_struct *tty, unsigned char c, char flag)
 		n_tty_receive_char_flagged(tty, c, flag);
 }
 
-/**
- *	n_tty_receive_buf	-	data receive
- *	@tty: terminal device
- *	@cp: buffer
- *	@fp: flag buffer
- *	@count: characters
- *
- *	Called by the terminal driver when a block of characters has
- *	been received. This function must be called from soft contexts
- *	not from interrupt context. The driver is responsible for making
- *	calls one at a time and in order (or using flush_to_ldisc)
- *
- *	n_tty_receive_buf()/producer path:
- *		claims non-exclusive termios_rwsem
- *		publishes read_head and canon_head
- */
-
 static void
 n_tty_receive_buf_real_raw(struct tty_struct *tty, const unsigned char *cp,
 			   char *fp, int count)
@@ -1683,24 +1664,85 @@ static void __receive_buf(struct tty_struct *tty, const unsigned char *cp,
 	}
 }
 
+/**
+ *	n_tty_receive_buf_common	-	process input
+ *	@tty: device to receive input
+ *	@cp: input chars
+ *	@fp: flags for each char (if NULL, all chars are TTY_NORMAL)
+ *	@count: number of input chars in @cp
+ *
+ *	Called by the terminal driver when a block of characters has
+ *	been received. This function must be called from soft contexts
+ *	not from interrupt context. The driver is responsible for making
+ *	calls one at a time and in order (or using flush_to_ldisc)
+ *
+ *	Returns the # of input chars from @cp which were processed.
+ *
+ *	In canonical mode, the maximum line length is 4096 chars (including
+ *	the line termination char); lines longer than 4096 chars are
+ *	truncated. After 4095 chars, input data is still processed but
+ *	not stored. Overflow processing ensures the tty can always
+ *	receive more input until at least one line can be read.
+ *
+ *	In non-canonical mode, the read buffer will only accept 4095 chars;
+ *	this provides the necessary space for a newline char if the input
+ *	mode is switched to canonical.
+ *
+ *	Note it is possible for the read buffer to _contain_ 4096 chars
+ *	in non-canonical mode: the read buffer could already contain the
+ *	maximum canon line of 4096 chars when the mode is switched to
+ *	non-canonical.
+ *
+ *	n_tty_receive_buf()/producer path:
+ *		claims non-exclusive termios_rwsem
+ *		publishes commit_head or canon_head
+ */
 static int
 n_tty_receive_buf_common(struct tty_struct *tty, const unsigned char *cp,
 			 char *fp, int count, int flow)
 {
 	struct n_tty_data *ldata = tty->disc_data;
-	int room, n, rcvd = 0;
+	int room, n, rcvd = 0, overflow;
 
 	down_read(&tty->termios_rwsem);
 
 	while (1) {
-		room = receive_room(tty);
+		/*
+		 * When PARMRK is set, each input char may take up to 3 chars
+		 * in the read buf; reduce the buffer space avail by 3x
+		 *
+		 * If we are doing input canonicalization, and there are no
+		 * pending newlines, let characters through without limit, so
+		 * that erase characters will be handled.  Other excess
+		 * characters will be beeped.
+		 *
+		 * paired with store in *_copy_from_read_buf() -- guarantees
+		 * the consumer has loaded the data in read_buf up to the new
+		 * read_tail (so this producer will not overwrite unread data)
+		 */
+		size_t tail = ldata->read_tail;
+
+		room = N_TTY_BUF_SIZE - (ldata->read_head - tail);
+		if (I_PARMRK(tty))
+			room = (room + 2) / 3;
+		room--;
+		if (room <= 0) {
+			overflow = ldata->icanon && ldata->canon_head == tail;
+			if (overflow && room < 0)
+				ldata->read_head--;
+			room = overflow;
+			ldata->no_room = flow && !room;
+		} else
+			overflow = 0;
+
 		n = min(count, room);
-		if (!n) {
-			if (flow && !room)
-				ldata->no_room = 1;
+		if (!n)
 			break;
-		}
-		__receive_buf(tty, cp, fp, n);
+
+		/* ignore parity errors if handling overflow */
+		if (!overflow || !fp || *fp != TTY_PARITY)
+			__receive_buf(tty, cp, fp, n);
+
 		cp += n;
 		if (fp)
 			fp += n;
@@ -1709,7 +1751,17 @@ n_tty_receive_buf_common(struct tty_struct *tty, const unsigned char *cp,
 	}
 
 	tty->receive_room = room;
-	n_tty_check_throttle(tty);
+
+	/* Unthrottle if handling overflow on pty */
+	if (tty->driver->type == TTY_DRIVER_TYPE_PTY) {
+		if (overflow) {
+			tty_set_flow_change(tty, TTY_UNTHROTTLE_SAFE);
+			tty_unthrottle_safe(tty);
+			__tty_set_flow_change(tty, 0);
+		}
+	} else
+		n_tty_check_throttle(tty);
+
 	up_read(&tty->termios_rwsem);
 
 	return rcvd;
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 40/83] cifs: fix use-after-free bug in find_writable_file
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (38 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 39/83] n_tty: Fix read buffer overwrite when no newline Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 41/83] be2iscsi: Fix kernel panic when device initialization fails Jiri Slaby
                   ` (44 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, David Disseldorp, Steve French, Jiri Slaby

From: David Disseldorp <ddiss@suse.de>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit e1e9bda22d7ddf88515e8fe401887e313922823e upstream.

Under intermittent network outages, find_writable_file() is susceptible
to the following race condition, which results in a user-after-free in
the cifs_writepages code-path:

Thread 1                                        Thread 2
========                                        ========

inv_file = NULL
refind = 0
spin_lock(&cifs_file_list_lock)

// invalidHandle found on openFileList

inv_file = open_file
// inv_file->count currently 1

cifsFileInfo_get(inv_file)
// inv_file->count = 2

spin_unlock(&cifs_file_list_lock);

cifs_reopen_file()                            cifs_close()
// fails (rc != 0)                            ->cifsFileInfo_put()
                                       spin_lock(&cifs_file_list_lock)
                                       // inv_file->count = 1
                                       spin_unlock(&cifs_file_list_lock)

spin_lock(&cifs_file_list_lock);
list_move_tail(&inv_file->flist,
      &cifs_inode->openFileList);
spin_unlock(&cifs_file_list_lock);

cifsFileInfo_put(inv_file);
->spin_lock(&cifs_file_list_lock)

  // inv_file->count = 0
  list_del(&cifs_file->flist);
  // cleanup!!
  kfree(cifs_file);

  spin_unlock(&cifs_file_list_lock);

spin_lock(&cifs_file_list_lock);
++refind;
// refind = 1
goto refind_writable;

At this point we loop back through with an invalid inv_file pointer
and a refind value of 1. On second pass, inv_file is not overwritten on
openFileList traversal, and is subsequently dereferenced.

Signed-off-by: David Disseldorp <ddiss@suse.de>
Reviewed-by: Jeff Layton <jlayton@samba.org>
Signed-off-by: Steve French <smfrench@gmail.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 fs/cifs/file.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index ead2473f6839..381e60e6ef92 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -1821,6 +1821,7 @@ refind_writable:
 			cifsFileInfo_put(inv_file);
 			spin_lock(&cifs_file_list_lock);
 			++refind;
+			inv_file = NULL;
 			goto refind_writable;
 		}
 	}
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 41/83] be2iscsi: Fix kernel panic when device initialization fails
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (39 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 40/83] cifs: fix use-after-free bug in find_writable_file Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 42/83] ocfs2: _really_ sync the right range Jiri Slaby
                   ` (43 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, John Soni Jose, James Bottomley, Jiri Slaby

From: John Soni Jose <sony.john-n@emulex.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 2e7cee027b26cbe7e6685a7a14bd2850bfe55d33 upstream.

Kernel panic was happening as iscsi_host_remove() was called on
a host which was not yet added.

Signed-off-by: John Soni Jose <sony.john-n@emulex.com>
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/scsi/be2iscsi/be_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index b19dee79e1c4..68ceb15f4ac3 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -5080,9 +5080,9 @@ free_port:
 hba_free:
 	if (phba->msix_enabled)
 		pci_disable_msix(phba->pcidev);
-	iscsi_host_remove(phba->shost);
 	pci_dev_put(phba->pcidev);
 	iscsi_host_free(phba->shost);
+	pci_set_drvdata(pcidev, NULL);
 disable_pci:
 	pci_disable_device(pcidev);
 	return ret;
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 42/83] ocfs2: _really_ sync the right range
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (40 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 41/83] be2iscsi: Fix kernel panic when device initialization fails Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 43/83] ioctx_alloc(): fix vma (and file) leak on failure Jiri Slaby
                   ` (42 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Al Viro, Jiri Slaby

From: Al Viro <viro@zeniv.linux.org.uk>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 64b4e2526d1cf6e6a4db6213d6e2b6e6ab59479a upstream.

"ocfs2 syncs the wrong range" had been broken; prior to it the
code was doing the wrong thing in case of O_APPEND, all right,
but _after_ it we were syncing the wrong range in 100% cases.
*ppos, aka iocb->ki_pos is incremented prior to that point,
so we are always doing sync on the area _after_ the one we'd
written to.

Spotted by Joseph Qi <joseph.qi@huawei.com> back in January;
unfortunately, I'd missed his mail back then ;-/

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 fs/ocfs2/file.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
index 8add05c84ae5..1c01e723e780 100644
--- a/fs/ocfs2/file.c
+++ b/fs/ocfs2/file.c
@@ -2369,10 +2369,14 @@ out_dio:
 	/* buffered aio wouldn't have proper lock coverage today */
 	BUG_ON(ret == -EIOCBQUEUED && !(file->f_flags & O_DIRECT));
 
+	if (unlikely(written <= 0))
+		goto no_sync;
+
 	if (((file->f_flags & O_DSYNC) && !direct_io) || IS_SYNC(inode) ||
 	    ((file->f_flags & O_DIRECT) && !direct_io)) {
-		ret = filemap_fdatawrite_range(file->f_mapping, *ppos,
-					       *ppos + count - 1);
+		ret = filemap_fdatawrite_range(file->f_mapping,
+					       iocb->ki_pos - written,
+					       iocb->ki_pos - 1);
 		if (ret < 0)
 			written = ret;
 
@@ -2383,10 +2387,12 @@ out_dio:
 		}
 
 		if (!ret)
-			ret = filemap_fdatawait_range(file->f_mapping, *ppos,
-						      *ppos + count - 1);
+			ret = filemap_fdatawait_range(file->f_mapping,
+						      iocb->ki_pos - written,
+						      iocb->ki_pos - 1);
 	}
 
+no_sync:
 	/*
 	 * deep in g_f_a_w_n()->ocfs2_direct_IO we pass in a ocfs2_dio_end_io
 	 * function pointer which is called when o_direct io completes so that
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 43/83] ioctx_alloc(): fix vma (and file) leak on failure
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (41 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 42/83] ocfs2: _really_ sync the right range Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 44/83] iscsi target: fix oops when adding reject pdu Jiri Slaby
                   ` (41 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Al Viro, Jiri Slaby

From: Al Viro <viro@zeniv.linux.org.uk>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit deeb8525f9bcea60f5e86521880c1161de7a5829 upstream.

If we fail past the aio_setup_ring(), we need to destroy the
mapping.  We don't need to care about anybody having found ctx,
or added requests to it, since the last failure exit is exactly
the failure to make ctx visible to lookups.

Reproducer (based on one by Joe Mario <jmario@redhat.com>):

void count(char *p)
{
	char s[80];
	printf("%s: ", p);
	fflush(stdout);
	sprintf(s, "/bin/cat /proc/%d/maps|/bin/fgrep -c '/[aio] (deleted)'", getpid());
	system(s);
}

int main()
{
	io_context_t *ctx;
	int created, limit, i, destroyed;
	FILE *f;

	count("before");
	if ((f = fopen("/proc/sys/fs/aio-max-nr", "r")) == NULL)
		perror("opening aio-max-nr");
	else if (fscanf(f, "%d", &limit) != 1)
		fprintf(stderr, "can't parse aio-max-nr\n");
	else if ((ctx = calloc(limit, sizeof(io_context_t))) == NULL)
		perror("allocating aio_context_t array");
	else {
		for (i = 0, created = 0; i < limit; i++) {
			if (io_setup(1000, ctx + created) == 0)
				created++;
		}
		for (i = 0, destroyed = 0; i < created; i++)
			if (io_destroy(ctx[i]) == 0)
				destroyed++;
		printf("created %d, failed %d, destroyed %d\n",
			created, limit - created, destroyed);
		count("after");
	}
}

Found-by: Joe Mario <jmario@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 fs/aio.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/fs/aio.c b/fs/aio.c
index 307d7708dc00..7bdf3467bf24 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -718,6 +718,9 @@ static struct kioctx *ioctx_alloc(unsigned nr_events)
 err_cleanup:
 	aio_nr_sub(ctx->max_reqs);
 err_ctx:
+	atomic_set(&ctx->dead, 1);
+	if (ctx->mmap_size)
+		vm_munmap(ctx->mmap_base, ctx->mmap_size);
 	aio_free_ring(ctx);
 err:
 	mutex_unlock(&ctx->ring_lock);
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 44/83] iscsi target: fix oops when adding reject pdu
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (42 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 43/83] ioctx_alloc(): fix vma (and file) leak on failure Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 45/83] sh_veu: v4l2_dev wasn't set Jiri Slaby
                   ` (40 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Mike Christie, Nicholas Bellinger, Jiri Slaby

From: Mike Christie <michaelc@cs.wisc.edu>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit b815fc12d4dd2b5586184fb4f867caff05a810d4 upstream.

This fixes a oops due to a double list add when adding a reject PDU for
iscsit_allocate_iovecs allocation failures. The cmd has already been
added to the conn_cmd_list in iscsit_setup_scsi_cmd, so this has us call
iscsit_reject_cmd.

Note that for ERL0 the reject PDU is not actually sent, so this patch
is not completely tested. Just verified we do not oops. The problem is the
add reject functions return -1 which is returned all the way up to
iscsi_target_rx_thread which for ERL0 will drop the connection.

Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/target/iscsi/iscsi_target.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
index 8ec8dc92baf4..a16a6ff73db9 100644
--- a/drivers/target/iscsi/iscsi_target.c
+++ b/drivers/target/iscsi/iscsi_target.c
@@ -1172,7 +1172,7 @@ iscsit_handle_scsi_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
 	 * traditional iSCSI block I/O.
 	 */
 	if (iscsit_allocate_iovecs(cmd) < 0) {
-		return iscsit_add_reject_cmd(cmd,
+		return iscsit_reject_cmd(cmd,
 				ISCSI_REASON_BOOKMARK_NO_RESOURCES, buf);
 	}
 	immed_data = cmd->immediate_data;
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 45/83] sh_veu: v4l2_dev wasn't set
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (43 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 44/83] iscsi target: fix oops when adding reject pdu Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 46/83] media: s5p-mfc: fix mmap support for 64bit arch Jiri Slaby
                   ` (39 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Hans Verkuil, Hans Verkuil, Mauro Carvalho Chehab,
	Jiri Slaby

From: Hans Verkuil <hverkuil@xs4all.nl>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit ab3120300be067a2d41a027c41db0b2c662ab200 upstream.

The v4l2_dev field of struct video_device must be set correctly.
This was never done for this driver, so no video nodes were created
anymore.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/media/platform/sh_veu.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/platform/sh_veu.c b/drivers/media/platform/sh_veu.c
index 744e43b480bc..f698e322a1cd 100644
--- a/drivers/media/platform/sh_veu.c
+++ b/drivers/media/platform/sh_veu.c
@@ -1183,6 +1183,7 @@ static int sh_veu_probe(struct platform_device *pdev)
 	}
 
 	*vdev = sh_veu_videodev;
+	vdev->v4l2_dev = &veu->v4l2_dev;
 	spin_lock_init(&veu->lock);
 	mutex_init(&veu->fop_lock);
 	vdev->lock = &veu->fop_lock;
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 46/83] media: s5p-mfc: fix mmap support for 64bit arch
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (44 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 45/83] sh_veu: v4l2_dev wasn't set Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 47/83] net: rds: use correct size for max unacked packets and bytes Jiri Slaby
                   ` (38 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Marek Szyprowski, Kamil Debski,
	Mauro Carvalho Chehab, Jiri Slaby

From: Marek Szyprowski <m.szyprowski@samsung.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 05b676ab42f624425d5f6519276e506b812fa058 upstream.

TASK_SIZE is depends on the systems architecture (32 or 64 bits) and it
should not be used for defining offset boundary for mmaping buffers for
CAPTURE and OUTPUT queues. This patch fixes support for MMAP calls on
the CAPTURE queue on 64bit architectures (like ARM64).

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Kamil Debski <k.debski@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/media/platform/s5p-mfc/s5p_mfc_common.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_common.h b/drivers/media/platform/s5p-mfc/s5p_mfc_common.h
index 823812c6b9b0..b8734ed909f4 100644
--- a/drivers/media/platform/s5p-mfc/s5p_mfc_common.h
+++ b/drivers/media/platform/s5p-mfc/s5p_mfc_common.h
@@ -30,7 +30,7 @@
 
 /* Offset base used to differentiate between CAPTURE and OUTPUT
 *  while mmaping */
-#define DST_QUEUE_OFF_BASE      (TASK_SIZE / 2)
+#define DST_QUEUE_OFF_BASE	(1 << 30)
 
 #define MFC_BANK1_ALLOC_CTX	0
 #define MFC_BANK2_ALLOC_CTX	1
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 47/83] net: rds: use correct size for max unacked packets and bytes
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (45 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 46/83] media: s5p-mfc: fix mmap support for 64bit arch Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 48/83] net: llc: use correct size for sysctl timeout entries Jiri Slaby
                   ` (37 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Sasha Levin, David S. Miller, Jiri Slaby

From: Sasha Levin <sasha.levin@oracle.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit db27ebb111e9f69efece08e4cb6a34ff980f8896 upstream.

Max unacked packets/bytes is an int while sizeof(long) was used in the
sysctl table.

This means that when they were getting read we'd also leak kernel memory
to userspace along with the timeout values.

Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 net/rds/sysctl.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/rds/sysctl.c b/net/rds/sysctl.c
index b5cb2aa08f33..35773ad6d23d 100644
--- a/net/rds/sysctl.c
+++ b/net/rds/sysctl.c
@@ -71,14 +71,14 @@ static struct ctl_table rds_sysctl_rds_table[] = {
 	{
 		.procname	= "max_unacked_packets",
 		.data		= &rds_sysctl_max_unacked_packets,
-		.maxlen         = sizeof(unsigned long),
+		.maxlen         = sizeof(int),
 		.mode           = 0644,
 		.proc_handler   = proc_dointvec,
 	},
 	{
 		.procname	= "max_unacked_bytes",
 		.data		= &rds_sysctl_max_unacked_bytes,
-		.maxlen         = sizeof(unsigned long),
+		.maxlen         = sizeof(int),
 		.mode           = 0644,
 		.proc_handler   = proc_dointvec,
 	},
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 48/83] net: llc: use correct size for sysctl timeout entries
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (46 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 47/83] net: rds: use correct size for max unacked packets and bytes Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 49/83] IB/mlx4: Saturate RoCE port PMA counters in case of overflow Jiri Slaby
                   ` (36 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Sasha Levin, David S. Miller, Jiri Slaby

From: Sasha Levin <sasha.levin@oracle.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 6b8d9117ccb4f81b1244aafa7bc70ef8fa45fc49 upstream.

The timeout entries are sizeof(int) rather than sizeof(long), which
means that when they were getting read we'd also leak kernel memory
to userspace along with the timeout values.

Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 net/llc/sysctl_net_llc.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/net/llc/sysctl_net_llc.c b/net/llc/sysctl_net_llc.c
index 612a5ddaf93b..799bafc2af39 100644
--- a/net/llc/sysctl_net_llc.c
+++ b/net/llc/sysctl_net_llc.c
@@ -18,28 +18,28 @@ static struct ctl_table llc2_timeout_table[] = {
 	{
 		.procname	= "ack",
 		.data		= &sysctl_llc2_ack_timeout,
-		.maxlen		= sizeof(long),
+		.maxlen		= sizeof(sysctl_llc2_ack_timeout),
 		.mode		= 0644,
 		.proc_handler   = proc_dointvec_jiffies,
 	},
 	{
 		.procname	= "busy",
 		.data		= &sysctl_llc2_busy_timeout,
-		.maxlen		= sizeof(long),
+		.maxlen		= sizeof(sysctl_llc2_busy_timeout),
 		.mode		= 0644,
 		.proc_handler   = proc_dointvec_jiffies,
 	},
 	{
 		.procname	= "p",
 		.data		= &sysctl_llc2_p_timeout,
-		.maxlen		= sizeof(long),
+		.maxlen		= sizeof(sysctl_llc2_p_timeout),
 		.mode		= 0644,
 		.proc_handler   = proc_dointvec_jiffies,
 	},
 	{
 		.procname	= "rej",
 		.data		= &sysctl_llc2_rej_timeout,
-		.maxlen		= sizeof(long),
+		.maxlen		= sizeof(sysctl_llc2_rej_timeout),
 		.mode		= 0644,
 		.proc_handler   = proc_dointvec_jiffies,
 	},
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 49/83] IB/mlx4: Saturate RoCE port PMA counters in case of overflow
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (47 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 48/83] net: llc: use correct size for sysctl timeout entries Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 50/83] [media] drivers: media: usb: b2c2: use usb_*_coherent() instead of pci_*_consistent() in flexcop-usb.c Jiri Slaby
                   ` (35 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Majd Dibbiny, Eran Ben Elisha, Hadar Hen Zion,
	Or Gerlitz, David S. Miller, Jiri Slaby

From: Majd Dibbiny <majd@mellanox.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 61a3855bb726cbb062ef02a31a832dea455456e0 upstream.

For RoCE ports, we set the u32 PMA values based on u64 HCA counters. In case of
overflow, according to the IB spec, we have to saturate a counter to its
max value, do that.

Fixes: c37791349cc7 ('IB/mlx4: Support PMA counters for IBoE')
Signed-off-by: Majd Dibbiny <majd@mellanox.com>
Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Signed-off-by: Hadar Hen Zion <hadarh@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/infiniband/hw/mlx4/mad.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/drivers/infiniband/hw/mlx4/mad.c b/drivers/infiniband/hw/mlx4/mad.c
index f2a3f48107e7..2592ab5f21b1 100644
--- a/drivers/infiniband/hw/mlx4/mad.c
+++ b/drivers/infiniband/hw/mlx4/mad.c
@@ -64,6 +64,14 @@ enum {
 #define GUID_TBL_BLK_NUM_ENTRIES 8
 #define GUID_TBL_BLK_SIZE (GUID_TBL_ENTRY_SIZE * GUID_TBL_BLK_NUM_ENTRIES)
 
+/* Counters should be saturate once they reach their maximum value */
+#define ASSIGN_32BIT_COUNTER(counter, value) do {\
+	if ((value) > U32_MAX)			 \
+		counter = cpu_to_be32(U32_MAX); \
+	else					 \
+		counter = cpu_to_be32(value);	 \
+} while (0)
+
 struct mlx4_mad_rcv_buf {
 	struct ib_grh grh;
 	u8 payload[256];
@@ -730,10 +738,14 @@ static int ib_process_mad(struct ib_device *ibdev, int mad_flags, u8 port_num,
 static void edit_counter(struct mlx4_counter *cnt,
 					struct ib_pma_portcounters *pma_cnt)
 {
-	pma_cnt->port_xmit_data = cpu_to_be32((be64_to_cpu(cnt->tx_bytes)>>2));
-	pma_cnt->port_rcv_data  = cpu_to_be32((be64_to_cpu(cnt->rx_bytes)>>2));
-	pma_cnt->port_xmit_packets = cpu_to_be32(be64_to_cpu(cnt->tx_frames));
-	pma_cnt->port_rcv_packets  = cpu_to_be32(be64_to_cpu(cnt->rx_frames));
+	ASSIGN_32BIT_COUNTER(pma_cnt->port_xmit_data,
+			     (be64_to_cpu(cnt->tx_bytes) >> 2));
+	ASSIGN_32BIT_COUNTER(pma_cnt->port_rcv_data,
+			     (be64_to_cpu(cnt->rx_bytes) >> 2));
+	ASSIGN_32BIT_COUNTER(pma_cnt->port_xmit_packets,
+			     be64_to_cpu(cnt->tx_frames));
+	ASSIGN_32BIT_COUNTER(pma_cnt->port_rcv_packets,
+			     be64_to_cpu(cnt->rx_frames));
 }
 
 static int iboe_process_mad(struct ib_device *ibdev, int mad_flags, u8 port_num,
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 50/83] [media] drivers: media: usb: b2c2: use usb_*_coherent() instead of pci_*_consistent() in flexcop-usb.c
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (48 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 49/83] IB/mlx4: Saturate RoCE port PMA counters in case of overflow Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 51/83] video: vgacon: Don't build on arm64 Jiri Slaby
                   ` (34 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Chen Gang, Mauro Carvalho Chehab, Jiri Slaby

From: Chen Gang <gang.chen@asianux.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 6c7e346974ad6d20898026f209581fb6dd8ce3f0 upstream.

Some architectures do not support PCI, but still support USB, so need
let our usb driver try to use usb_* instead of pci_* to support these
architectures, or can not pass compiling.
The related error (with allmodconfig for arc):
    CC [M]  drivers/media/usb/b2c2/flexcop-usb.o
  drivers/media/usb/b2c2/flexcop-usb.c: In function ‘flexcop_usb_transfer_exit’:
  drivers/media/usb/b2c2/flexcop-usb.c:393: error: implicit declaration of function ‘pci_free_consistent’
  drivers/media/usb/b2c2/flexcop-usb.c: In function ‘flexcop_usb_transfer_init’:
  drivers/media/usb/b2c2/flexcop-usb.c:410: error: implicit declaration of function ‘pci_alloc_consistent’

Signed-off-by: Chen Gang <gang.chen@asianux.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/media/usb/b2c2/flexcop-usb.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/media/usb/b2c2/flexcop-usb.c b/drivers/media/usb/b2c2/flexcop-usb.c
index 8b6275f85908..0bd969063392 100644
--- a/drivers/media/usb/b2c2/flexcop-usb.c
+++ b/drivers/media/usb/b2c2/flexcop-usb.c
@@ -390,7 +390,7 @@ static void flexcop_usb_transfer_exit(struct flexcop_usb *fc_usb)
 		}
 
 	if (fc_usb->iso_buffer != NULL)
-		pci_free_consistent(NULL,
+		usb_free_coherent(fc_usb->udev,
 			fc_usb->buffer_size, fc_usb->iso_buffer,
 			fc_usb->dma_addr);
 }
@@ -407,8 +407,8 @@ static int flexcop_usb_transfer_init(struct flexcop_usb *fc_usb)
 			"each of %d bytes size = %d.\n", B2C2_USB_NUM_ISO_URB,
 			B2C2_USB_FRAMES_PER_ISO, frame_size, bufsize);
 
-	fc_usb->iso_buffer = pci_alloc_consistent(NULL,
-			bufsize, &fc_usb->dma_addr);
+	fc_usb->iso_buffer = usb_alloc_coherent(fc_usb->udev,
+			bufsize, GFP_KERNEL, &fc_usb->dma_addr);
 	if (fc_usb->iso_buffer == NULL)
 		return -ENOMEM;
 
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 51/83] video: vgacon: Don't build on arm64
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (49 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 50/83] [media] drivers: media: usb: b2c2: use usb_*_coherent() instead of pci_*_consistent() in flexcop-usb.c Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 52/83] tcp: prevent fetching dst twice in early demux code Jiri Slaby
                   ` (33 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Mark Brown, Tomi Valkeinen, Jiri Slaby

From: Mark Brown <broonie@linaro.org>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit ee23794b86689e655cedd616e98c03bc3c74f5ec upstream.

arm64 is unlikely to have a VGA console and does not export screen_info
causing build failures if the driver is build, for example in all*config.
Add a dependency on !ARM64 to prevent this.

This list is getting quite long, it may be easier to depend on a symbol
which architectures that do support the driver can select.

Signed-off-by: Mark Brown <broonie@linaro.org>
[tomi.valkeinen@ti.com: moved && to first modified line]
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/video/console/Kconfig | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/video/console/Kconfig b/drivers/video/console/Kconfig
index 846caab75a46..fe1cd0148e13 100644
--- a/drivers/video/console/Kconfig
+++ b/drivers/video/console/Kconfig
@@ -8,7 +8,8 @@ config VGA_CONSOLE
 	bool "VGA text console" if EXPERT || !X86
 	depends on !4xx && !8xx && !SPARC && !M68K && !PARISC && !FRV && \
 		!SUPERH && !BLACKFIN && !AVR32 && !MN10300 && !CRIS && \
-		(!ARM || ARCH_FOOTBRIDGE || ARCH_INTEGRATOR || ARCH_NETWINDER)
+		(!ARM || ARCH_FOOTBRIDGE || ARCH_INTEGRATOR || ARCH_NETWINDER) && \
+		!ARM64
 	default y
 	help
 	  Saying Y here will allow you to use Linux in text mode through a
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 52/83] tcp: prevent fetching dst twice in early demux code
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (50 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 51/83] video: vgacon: Don't build on arm64 Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 53/83] ipv6: Don't reduce hop limit for an interface Jiri Slaby
                   ` (32 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Michal Kubeček, David S. Miller, Jiri Slaby

From: Michal Kubeček <mkubecek@suse.cz>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

[ Upstream commit d0c294c53a771ae7e84506dfbd8c18c30f078735 ]

On s390x, gcc 4.8 compiles this part of tcp_v6_early_demux()

        struct dst_entry *dst = sk->sk_rx_dst;

        if (dst)
                dst = dst_check(dst, inet6_sk(sk)->rx_dst_cookie);

to code reading sk->sk_rx_dst twice, once for the test and once for
the argument of ip6_dst_check() (dst_check() is inline). This allows
ip6_dst_check() to be called with null first argument, causing a crash.

Protect sk->sk_rx_dst access by ACCESS_ONCE() both in IPv4 and IPv6
TCP early demux code.

Fixes: 41063e9dd119 ("ipv4: Early TCP socket demux.")
Fixes: c7109986db3c ("ipv6: Early TCP socket demux")
Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 net/ipv4/tcp_ipv4.c | 2 +-
 net/ipv6/tcp_ipv6.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index aae282839bde..68b409d1afa7 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -1875,7 +1875,7 @@ void tcp_v4_early_demux(struct sk_buff *skb)
 		skb->sk = sk;
 		skb->destructor = sock_edemux;
 		if (sk->sk_state != TCP_TIME_WAIT) {
-			struct dst_entry *dst = sk->sk_rx_dst;
+			struct dst_entry *dst = ACCESS_ONCE(sk->sk_rx_dst);
 
 			if (dst)
 				dst = dst_check(dst, 0);
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 3058c4a89b3b..03e3723c8760 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -1616,7 +1616,7 @@ static void tcp_v6_early_demux(struct sk_buff *skb)
 		skb->sk = sk;
 		skb->destructor = sock_edemux;
 		if (sk->sk_state != TCP_TIME_WAIT) {
-			struct dst_entry *dst = sk->sk_rx_dst;
+			struct dst_entry *dst = ACCESS_ONCE(sk->sk_rx_dst);
 
 			if (dst)
 				dst = dst_check(dst, inet6_sk(sk)->rx_dst_cookie);
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 53/83] ipv6: Don't reduce hop limit for an interface
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (51 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 52/83] tcp: prevent fetching dst twice in early demux code Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 54/83] tcp: fix FRTO undo on cumulative ACK of SACKed range Jiri Slaby
                   ` (31 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, D.S. Ljungmark, David S. Miller, Jiri Slaby

From: "D.S. Ljungmark" <ljungmark@modio.se>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

[ Upstream commit 6fd99094de2b83d1d4c8457f2c83483b2828e75a ]

A local route may have a lower hop_limit set than global routes do.

RFC 3756, Section 4.2.7, "Parameter Spoofing"

>   1.  The attacker includes a Current Hop Limit of one or another small
>       number which the attacker knows will cause legitimate packets to
>       be dropped before they reach their destination.

>   As an example, one possible approach to mitigate this threat is to
>   ignore very small hop limits.  The nodes could implement a
>   configurable minimum hop limit, and ignore attempts to set it below
>   said limit.

Signed-off-by: D.S. Ljungmark <ljungmark@modio.se>
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 net/ipv6/ndisc.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c
index f8a55ff1971b..fda5d95e39f4 100644
--- a/net/ipv6/ndisc.c
+++ b/net/ipv6/ndisc.c
@@ -1191,7 +1191,14 @@ static void ndisc_router_discovery(struct sk_buff *skb)
 	if (rt)
 		rt6_set_expires(rt, jiffies + (HZ * lifetime));
 	if (ra_msg->icmph.icmp6_hop_limit) {
-		in6_dev->cnf.hop_limit = ra_msg->icmph.icmp6_hop_limit;
+		/* Only set hop_limit on the interface if it is higher than
+		 * the current hop_limit.
+		 */
+		if (in6_dev->cnf.hop_limit < ra_msg->icmph.icmp6_hop_limit) {
+			in6_dev->cnf.hop_limit = ra_msg->icmph.icmp6_hop_limit;
+		} else {
+			ND_PRINTK(2, warn, "RA: Got route advertisement with lower hop_limit than current\n");
+		}
 		if (rt)
 			dst_metric_set(&rt->dst, RTAX_HOPLIMIT,
 				       ra_msg->icmph.icmp6_hop_limit);
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 54/83] tcp: fix FRTO undo on cumulative ACK of SACKed range
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (52 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 53/83] ipv6: Don't reduce hop limit for an interface Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 55/83] tcp: tcp_make_synack() should clear skb->tstamp Jiri Slaby
                   ` (30 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Neal Cardwell, Yuchung Cheng, David S. Miller, Jiri Slaby

From: Neal Cardwell <ncardwell@google.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

[ Upstream commit 666b805150efd62f05810ff0db08f44a2370c937 ]

On processing cumulative ACKs, the FRTO code was not checking the
SACKed bit, meaning that there could be a spurious FRTO undo on a
cumulative ACK of a previously SACKed skb.

The FRTO code should only consider a cumulative ACK to indicate that
an original/unretransmitted skb is newly ACKed if the skb was not yet
SACKed.

The effect of the spurious FRTO undo would typically be to make the
connection think that all previously-sent packets were in flight when
they really weren't, leading to a stall and an RTO.

Signed-off-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Yuchung Cheng <ycheng@google.com>
Fixes: e33099f96d99c ("tcp: implement RFC5682 F-RTO")
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 net/ipv4/tcp_input.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 172cd999290c..49c87a39948f 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -3014,10 +3014,11 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets,
 			if (seq_rtt < 0) {
 				seq_rtt = ca_seq_rtt;
 			}
-			if (!(sacked & TCPCB_SACKED_ACKED))
+			if (!(sacked & TCPCB_SACKED_ACKED)) {
 				reord = min(pkts_acked, reord);
-			if (!after(scb->end_seq, tp->high_seq))
-				flag |= FLAG_ORIG_SACK_ACKED;
+				if (!after(scb->end_seq, tp->high_seq))
+					flag |= FLAG_ORIG_SACK_ACKED;
+			}
 		}
 
 		if (sacked & TCPCB_SACKED_ACKED)
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 55/83] tcp: tcp_make_synack() should clear skb->tstamp
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (53 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 54/83] tcp: fix FRTO undo on cumulative ACK of SACKed range Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 56/83] 8139cp: Call dev_kfree_skby_any instead of kfree_skb Jiri Slaby
                   ` (29 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Eric Dumazet, David S. Miller, Jiri Slaby

From: Eric Dumazet <edumazet@google.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

[ Upstream commit b50edd7812852d989f2ef09dcfc729690f54a42d ]

I noticed tcpdump was giving funky timestamps for locally
generated SYNACK messages on loopback interface.

11:42:46.938990 IP 127.0.0.1.48245 > 127.0.0.2.23850: S
945476042:945476042(0) win 43690 <mss 65495,nop,nop,sackOK,nop,wscale 7>

20:28:58.502209 IP 127.0.0.2.23850 > 127.0.0.1.48245: S
3160535375:3160535375(0) ack 945476043 win 43690 <mss
65495,nop,nop,sackOK,nop,wscale 7>

This is because we need to clear skb->tstamp before
entering lower stack, otherwise net_timestamp_check()
does not set skb->tstamp.

Fixes: 7faee5c0d514 ("tcp: remove TCP_SKB_CB(skb)->when")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 net/ipv4/tcp_output.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 56db79dbc633..72d11b4593c8 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -2782,6 +2782,8 @@ struct sk_buff *tcp_make_synack(struct sock *sk, struct dst_entry *dst,
 	}
 #endif
 
+	/* Do not fool tcpdump (if any), clean our debris */
+	skb->tstamp.tv64 = 0;
 	return skb;
 }
 EXPORT_SYMBOL(tcp_make_synack);
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 56/83] 8139cp: Call dev_kfree_skby_any instead of kfree_skb.
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (54 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 55/83] tcp: tcp_make_synack() should clear skb->tstamp Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 57/83] 8139too: Call dev_kfree_skby_any instead of dev_kfree_skb Jiri Slaby
                   ` (28 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Eric W. Biederman, David S. Miller, Jiri Slaby

From: "Eric W. Biederman" <ebiederm@xmission.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 508f81d517ed1f3f0197df63ea7ab5cd91b6f3b3 upstream.

Replace kfree_skb with dev_kfree_skb_any in cp_start_xmit
as it can be called in both hard irq and other contexts.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/net/ethernet/realtek/8139cp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/realtek/8139cp.c b/drivers/net/ethernet/realtek/8139cp.c
index 0095af50fb81..18c13ee597b6 100644
--- a/drivers/net/ethernet/realtek/8139cp.c
+++ b/drivers/net/ethernet/realtek/8139cp.c
@@ -899,7 +899,7 @@ out_unlock:
 
 	return NETDEV_TX_OK;
 out_dma_error:
-	kfree_skb(skb);
+	dev_kfree_skb_any(skb);
 	cp->dev->stats.tx_dropped++;
 	goto out_unlock;
 }
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 57/83] 8139too: Call dev_kfree_skby_any instead of dev_kfree_skb.
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (55 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 56/83] 8139cp: Call dev_kfree_skby_any instead of kfree_skb Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 58/83] r8169: " Jiri Slaby
                   ` (27 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Eric W. Biederman, David S. Miller, Jiri Slaby

From: "Eric W. Biederman" <ebiederm@xmission.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit a2ccd2e4bd70122523a7bf21cec4dd6e34427089 upstream.

Replace dev_kfree_skb with dev_kfree_skb_any in functions that can
be called in hard irq and other contexts.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/net/ethernet/realtek/8139too.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/realtek/8139too.c b/drivers/net/ethernet/realtek/8139too.c
index 3ccedeb8aba0..942673fcb391 100644
--- a/drivers/net/ethernet/realtek/8139too.c
+++ b/drivers/net/ethernet/realtek/8139too.c
@@ -1715,9 +1715,9 @@ static netdev_tx_t rtl8139_start_xmit (struct sk_buff *skb,
 		if (len < ETH_ZLEN)
 			memset(tp->tx_buf[entry], 0, ETH_ZLEN);
 		skb_copy_and_csum_dev(skb, tp->tx_buf[entry]);
-		dev_kfree_skb(skb);
+		dev_kfree_skb_any(skb);
 	} else {
-		dev_kfree_skb(skb);
+		dev_kfree_skb_any(skb);
 		dev->stats.tx_dropped++;
 		return NETDEV_TX_OK;
 	}
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 58/83] r8169: Call dev_kfree_skby_any instead of dev_kfree_skb.
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (56 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 57/83] 8139too: Call dev_kfree_skby_any instead of dev_kfree_skb Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 59/83] bonding: Call dev_kfree_skby_any instead of kfree_skb Jiri Slaby
                   ` (26 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Eric W. Biederman, David S. Miller, Jiri Slaby

From: "Eric W. Biederman" <ebiederm@xmission.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 989c9ba104d9ce53c1ca918262f3fdfb33aca12a upstream.

Replace dev_kfree_skb with dev_kfree_skb_any in functions that can
be called in hard irq and other contexts.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/net/ethernet/realtek/r8169.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
index fb3f8dc1b8b1..8808a16eb691 100644
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
@@ -5835,7 +5835,7 @@ static void rtl8169_tx_clear_range(struct rtl8169_private *tp, u32 start,
 					     tp->TxDescArray + entry);
 			if (skb) {
 				tp->dev->stats.tx_dropped++;
-				dev_kfree_skb(skb);
+				dev_kfree_skb_any(skb);
 				tx_skb->skb = NULL;
 			}
 		}
@@ -6060,7 +6060,7 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb,
 err_dma_1:
 	rtl8169_unmap_tx_skb(d, tp->tx_skb + entry, txd);
 err_dma_0:
-	dev_kfree_skb(skb);
+	dev_kfree_skb_any(skb);
 err_update_stats:
 	dev->stats.tx_dropped++;
 	return NETDEV_TX_OK;
@@ -6143,7 +6143,7 @@ static void rtl_tx(struct net_device *dev, struct rtl8169_private *tp)
 			tp->tx_stats.packets++;
 			tp->tx_stats.bytes += tx_skb->skb->len;
 			u64_stats_update_end(&tp->tx_stats.syncp);
-			dev_kfree_skb(tx_skb->skb);
+			dev_kfree_skb_any(tx_skb->skb);
 			tx_skb->skb = NULL;
 		}
 		dirty_tx++;
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 59/83] bonding: Call dev_kfree_skby_any instead of kfree_skb.
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (57 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 58/83] r8169: " Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 60/83] bnx2: Call dev_kfree_skby_any instead of dev_kfree_skb Jiri Slaby
                   ` (25 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Eric W. Biederman, David S. Miller, Jiri Slaby

From: "Eric W. Biederman" <ebiederm@xmission.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 2bb77ab42a6a40162a367b80394b96bb756ad5f1 upstream.

Replace kfree_skb with dev_kfree_skb_any in functions that can
be called in hard irq and other contexts.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/net/bonding/bond_3ad.c  |  2 +-
 drivers/net/bonding/bond_alb.c  |  2 +-
 drivers/net/bonding/bond_main.c | 10 +++++-----
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c
index b3c22527b938..13c3ca0b7977 100644
--- a/drivers/net/bonding/bond_3ad.c
+++ b/drivers/net/bonding/bond_3ad.c
@@ -2477,7 +2477,7 @@ out:
 	read_unlock(&bond->lock);
 	if (res) {
 		/* no suitable interface, frame not sent */
-		kfree_skb(skb);
+		dev_kfree_skb_any(skb);
 	}
 
 	return NETDEV_TX_OK;
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
index 71adb692e457..175f266ce82e 100644
--- a/drivers/net/bonding/bond_alb.c
+++ b/drivers/net/bonding/bond_alb.c
@@ -1447,7 +1447,7 @@ int bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev)
 	read_unlock(&bond->lock);
 	if (res) {
 		/* no suitable interface, frame not sent */
-		kfree_skb(skb);
+		dev_kfree_skb_any(skb);
 	}
 
 	return NETDEV_TX_OK;
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index f5a8b9c83ca6..5f95537d4896 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -3659,7 +3659,7 @@ void bond_xmit_slave_id(struct bonding *bond, struct sk_buff *skb, int slave_id)
 		}
 	}
 	/* no slave that can tx has been found */
-	kfree_skb(skb);
+	dev_kfree_skb_any(skb);
 }
 
 static int bond_xmit_roundrobin(struct sk_buff *skb, struct net_device *bond_dev)
@@ -3702,7 +3702,7 @@ static int bond_xmit_activebackup(struct sk_buff *skb, struct net_device *bond_d
 	if (slave)
 		bond_dev_queue_xmit(bond, skb, slave->dev);
 	else
-		kfree_skb(skb);
+		dev_kfree_skb_any(skb);
 
 	return NETDEV_TX_OK;
 }
@@ -3746,7 +3746,7 @@ static int bond_xmit_broadcast(struct sk_buff *skb, struct net_device *bond_dev)
 	if (slave && IS_UP(slave->dev) && slave->link == BOND_LINK_UP)
 		bond_dev_queue_xmit(bond, skb, slave->dev);
 	else
-		kfree_skb(skb);
+		dev_kfree_skb_any(skb);
 
 	return NETDEV_TX_OK;
 }
@@ -3851,7 +3851,7 @@ static netdev_tx_t __bond_start_xmit(struct sk_buff *skb, struct net_device *dev
 		pr_err("%s: Error: Unknown bonding mode %d\n",
 		       dev->name, bond->params.mode);
 		WARN_ON_ONCE(1);
-		kfree_skb(skb);
+		dev_kfree_skb_any(skb);
 		return NETDEV_TX_OK;
 	}
 }
@@ -3872,7 +3872,7 @@ static netdev_tx_t bond_start_xmit(struct sk_buff *skb, struct net_device *dev)
 	if (!list_empty(&bond->slave_list))
 		ret = __bond_start_xmit(skb, dev);
 	else
-		kfree_skb(skb);
+		dev_kfree_skb_any(skb);
 	rcu_read_unlock();
 
 	return ret;
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 60/83] bnx2: Call dev_kfree_skby_any instead of dev_kfree_skb.
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (58 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 59/83] bonding: Call dev_kfree_skby_any instead of kfree_skb Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 61/83] tg3: " Jiri Slaby
                   ` (24 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Eric W. Biederman, David S. Miller, Jiri Slaby

From: "Eric W. Biederman" <ebiederm@xmission.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit f458b2ee93ee3606c83f76213fbe49e026bac754 upstream.

Replace dev_kfree_skb with dev_kfree_skb_any in functions that can
be called in hard irq and other contexts.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/net/ethernet/broadcom/bnx2.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
index 8f9e76d2dd8b..f00d058d8a90 100644
--- a/drivers/net/ethernet/broadcom/bnx2.c
+++ b/drivers/net/ethernet/broadcom/bnx2.c
@@ -2869,7 +2869,7 @@ bnx2_tx_int(struct bnx2 *bp, struct bnx2_napi *bnapi, int budget)
 		sw_cons = BNX2_NEXT_TX_BD(sw_cons);
 
 		tx_bytes += skb->len;
-		dev_kfree_skb(skb);
+		dev_kfree_skb_any(skb);
 		tx_pkt++;
 		if (tx_pkt == budget)
 			break;
@@ -6622,7 +6622,7 @@ bnx2_start_xmit(struct sk_buff *skb, struct net_device *dev)
 
 	mapping = dma_map_single(&bp->pdev->dev, skb->data, len, PCI_DMA_TODEVICE);
 	if (dma_mapping_error(&bp->pdev->dev, mapping)) {
-		dev_kfree_skb(skb);
+		dev_kfree_skb_any(skb);
 		return NETDEV_TX_OK;
 	}
 
@@ -6715,7 +6715,7 @@ dma_error:
 			       PCI_DMA_TODEVICE);
 	}
 
-	dev_kfree_skb(skb);
+	dev_kfree_skb_any(skb);
 	return NETDEV_TX_OK;
 }
 
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 61/83] tg3: Call dev_kfree_skby_any instead of dev_kfree_skb.
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (59 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 60/83] bnx2: Call dev_kfree_skby_any instead of dev_kfree_skb Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 62/83] ixgb: " Jiri Slaby
                   ` (23 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Eric W. Biederman, David S. Miller, Jiri Slaby

From: "Eric W. Biederman" <ebiederm@xmission.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 497a27b9e1bcf6dbaea7a466cfcd866927e1b431 upstream.

Replace dev_kfree_skb with dev_kfree_skb_any in functions that can
be called in hard irq and other contexts.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/net/ethernet/broadcom/tg3.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index 98ded21c37b2..8ad9ff65913c 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -6568,7 +6568,7 @@ static void tg3_tx(struct tg3_napi *tnapi)
 		pkts_compl++;
 		bytes_compl += skb->len;
 
-		dev_kfree_skb(skb);
+		dev_kfree_skb_any(skb);
 
 		if (unlikely(tx_bug)) {
 			tg3_tx_recover(tp);
@@ -6900,7 +6900,7 @@ static int tg3_rx(struct tg3_napi *tnapi, int budget)
 		if (len > (tp->dev->mtu + ETH_HLEN) &&
 		    skb->protocol != htons(ETH_P_8021Q) &&
 		    skb->protocol != htons(ETH_P_8021AD)) {
-			dev_kfree_skb(skb);
+			dev_kfree_skb_any(skb);
 			goto drop_it_no_recycle;
 		}
 
@@ -7783,7 +7783,7 @@ static int tigon3_dma_hwbug_workaround(struct tg3_napi *tnapi,
 					  PCI_DMA_TODEVICE);
 		/* Make sure the mapping succeeded */
 		if (pci_dma_mapping_error(tp->pdev, new_addr)) {
-			dev_kfree_skb(new_skb);
+			dev_kfree_skb_any(new_skb);
 			ret = -1;
 		} else {
 			u32 save_entry = *entry;
@@ -7798,13 +7798,13 @@ static int tigon3_dma_hwbug_workaround(struct tg3_napi *tnapi,
 					    new_skb->len, base_flags,
 					    mss, vlan)) {
 				tg3_tx_skb_unmap(tnapi, save_entry, -1);
-				dev_kfree_skb(new_skb);
+				dev_kfree_skb_any(new_skb);
 				ret = -1;
 			}
 		}
 	}
 
-	dev_kfree_skb(skb);
+	dev_kfree_skb_any(skb);
 	*pskb = new_skb;
 	return ret;
 }
@@ -7847,7 +7847,7 @@ static int tg3_tso_bug(struct tg3 *tp, struct sk_buff *skb)
 	} while (segs);
 
 tg3_tso_bug_end:
-	dev_kfree_skb(skb);
+	dev_kfree_skb_any(skb);
 
 	return NETDEV_TX_OK;
 }
@@ -8085,7 +8085,7 @@ dma_error:
 	tg3_tx_skb_unmap(tnapi, tnapi->tx_prod, --i);
 	tnapi->tx_buffers[tnapi->tx_prod].skb = NULL;
 drop:
-	dev_kfree_skb(skb);
+	dev_kfree_skb_any(skb);
 drop_nofree:
 	tp->tx_dropped++;
 	return NETDEV_TX_OK;
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 62/83] ixgb: Call dev_kfree_skby_any instead of dev_kfree_skb.
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (60 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 61/83] tg3: " Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 63/83] benet: Call dev_kfree_skby_any instead of kfree_skb Jiri Slaby
                   ` (22 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Eric W. Biederman, David S. Miller, Jiri Slaby

From: "Eric W. Biederman" <ebiederm@xmission.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit f7e79913a1d6a6139211ead3b03579b317d25a1f upstream.

Replace dev_kfree_skb with dev_kfree_skb_any in functions that can
be called in hard irq and other contexts.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/net/ethernet/intel/ixgb/ixgb_main.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgb/ixgb_main.c b/drivers/net/ethernet/intel/ixgb/ixgb_main.c
index 9f6b236828e6..97f6413e898f 100644
--- a/drivers/net/ethernet/intel/ixgb/ixgb_main.c
+++ b/drivers/net/ethernet/intel/ixgb/ixgb_main.c
@@ -1527,12 +1527,12 @@ ixgb_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
 	int tso;
 
 	if (test_bit(__IXGB_DOWN, &adapter->flags)) {
-		dev_kfree_skb(skb);
+		dev_kfree_skb_any(skb);
 		return NETDEV_TX_OK;
 	}
 
 	if (skb->len <= 0) {
-		dev_kfree_skb(skb);
+		dev_kfree_skb_any(skb);
 		return NETDEV_TX_OK;
 	}
 
@@ -1549,7 +1549,7 @@ ixgb_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
 
 	tso = ixgb_tso(adapter, skb);
 	if (tso < 0) {
-		dev_kfree_skb(skb);
+		dev_kfree_skb_any(skb);
 		return NETDEV_TX_OK;
 	}
 
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 63/83] benet: Call dev_kfree_skby_any instead of kfree_skb.
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (61 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 62/83] ixgb: " Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 64/83] crypto: testmgr - fix 3.12.40 regression Jiri Slaby
                   ` (21 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Eric W. Biederman, David S. Miller, Jiri Slaby

From: "Eric W. Biederman" <ebiederm@xmission.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit d8ec2c02caa3515f35d6c33eedf529394c419298 upstream.

Replace free_skb with dev_kfree_skb_any in be_tx_compl_process as
which can be called in hard irq by netpoll, softirq context
by normal napi polling, and in normal sleepable context
by the network device close method.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/net/ethernet/emulex/benet/be_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 5226c99813c7..f9abb1b95f33 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -1777,7 +1777,7 @@ static u16 be_tx_compl_process(struct be_adapter *adapter,
 		queue_tail_inc(txq);
 	} while (cur_index != last_index);
 
-	kfree_skb(sent_skb);
+	dev_kfree_skb_any(sent_skb);
 	return num_wrbs;
 }
 
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 64/83] crypto: testmgr - fix 3.12.40 regression
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (62 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 63/83] benet: Call dev_kfree_skby_any instead of kfree_skb Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 65/83] sb_edac: Fix erroneous bytes->gigabytes conversion Jiri Slaby
                   ` (20 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Lennart Sorensen, Jiri Slaby

From: Lennart Sorensen <lsorense@csclub.uwaterloo.ca>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit ace3fc1e3f3a85ec705805146247231b11e1babe in 3.12.40 missed two
lines while pulling in commit 8a45ac12ec5b6ee67f8559c78ae11d9af8b821ee
from upstream.  This causes the tests to fail in some cases.

With the two missing lines added in, the tests pass again.

Tested with omap-aes, omap-sham and talitos.

Signed-off-by: Len Sorensen <lsorense@csclub.uwaterloo.ca>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 crypto/testmgr.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index 317c31f0b262..93e508c39e3b 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -334,6 +334,7 @@ static int __test_hash(struct crypto_ahash *tfm, struct hash_testvec *template,
 			case -EBUSY:
 				wait_for_completion(&tresult.completion);
 				INIT_COMPLETION(tresult.completion);
+				ret = tresult.err;
 				if (!ret)
 					break;
 				/* fall through */
@@ -1079,6 +1080,7 @@ static int __test_skcipher(struct crypto_ablkcipher *tfm, int enc,
 			case -EBUSY:
 				wait_for_completion(&result.completion);
 				INIT_COMPLETION(result.completion);
+				ret = result.err;
 				if (!ret)
 					break;
 				/* fall through */
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 65/83] sb_edac: Fix erroneous bytes->gigabytes conversion
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (63 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 64/83] crypto: testmgr - fix 3.12.40 regression Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 66/83] sb_edac: avoid INTERNAL ERROR message in EDAC with unspecified channel Jiri Slaby
                   ` (19 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Jim Snow, Jim Snow, Lukasz Anaczkowski,
	Mauro Carvalho Chehab, Jiri Slaby

From: Jim Snow <jim.m.snow@intel.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 8c009100295597f23978c224aec5751a365bc965 upstream.

Signed-off-by: Jim Snow <jim.snow@intel.com>
Signed-off-by: Lukasz Anaczkowski <lukasz.anaczkowski@intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/edac/sb_edac.c | 38 ++++++++++++++++++++------------------
 1 file changed, 20 insertions(+), 18 deletions(-)

diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c
index e04462b60756..952a956288e4 100644
--- a/drivers/edac/sb_edac.c
+++ b/drivers/edac/sb_edac.c
@@ -622,7 +622,7 @@ static void get_memory_layout(const struct mem_ctl_info *mci)
 	u32 reg;
 	u64 limit, prv = 0;
 	u64 tmp_mb;
-	u32 mb, kb;
+	u32 gb, mb;
 	u32 rir_way;
 
 	/*
@@ -635,8 +635,9 @@ static void get_memory_layout(const struct mem_ctl_info *mci)
 	pvt->tolm = GET_TOLM(reg);
 	tmp_mb = (1 + pvt->tolm) >> 20;
 
-	mb = div_u64_rem(tmp_mb, 1000, &kb);
-	edac_dbg(0, "TOLM: %u.%03u GB (0x%016Lx)\n", mb, kb, (u64)pvt->tolm);
+	gb = div_u64_rem(tmp_mb, 1024, &mb);
+	edac_dbg(0, "TOLM: %u.%03u GB (0x%016Lx)\n",
+		gb, (mb*1000)/1024, (u64)pvt->tolm);
 
 	/* Address range is already 45:25 */
 	pci_read_config_dword(pvt->pci_sad1, TOHM,
@@ -644,8 +645,9 @@ static void get_memory_layout(const struct mem_ctl_info *mci)
 	pvt->tohm = GET_TOHM(reg);
 	tmp_mb = (1 + pvt->tohm) >> 20;
 
-	mb = div_u64_rem(tmp_mb, 1000, &kb);
-	edac_dbg(0, "TOHM: %u.%03u GB (0x%016Lx)\n", mb, kb, (u64)pvt->tohm);
+	gb = div_u64_rem(tmp_mb, 1024, &mb);
+	edac_dbg(0, "TOHM: %u.%03u GB (0x%016Lx)\n",
+		gb, (mb*1000)/1024, (u64)pvt->tohm);
 
 	/*
 	 * Step 2) Get SAD range and SAD Interleave list
@@ -667,11 +669,11 @@ static void get_memory_layout(const struct mem_ctl_info *mci)
 			break;
 
 		tmp_mb = (limit + 1) >> 20;
-		mb = div_u64_rem(tmp_mb, 1000, &kb);
+		gb = div_u64_rem(tmp_mb, 1024, &mb);
 		edac_dbg(0, "SAD#%d %s up to %u.%03u GB (0x%016Lx) Interleave: %s reg=0x%08x\n",
 			 n_sads,
 			 get_dram_attr(reg),
-			 mb, kb,
+			 gb, (mb*1000)/1024,
 			 ((u64)tmp_mb) << 20L,
 			 INTERLEAVE_MODE(reg) ? "8:6" : "[8:6]XOR[18:16]",
 			 reg);
@@ -701,9 +703,9 @@ static void get_memory_layout(const struct mem_ctl_info *mci)
 			break;
 		tmp_mb = (limit + 1) >> 20;
 
-		mb = div_u64_rem(tmp_mb, 1000, &kb);
+		gb = div_u64_rem(tmp_mb, 1024, &mb);
 		edac_dbg(0, "TAD#%d: up to %u.%03u GB (0x%016Lx), socket interleave %d, memory interleave %d, TGT: %d, %d, %d, %d, reg=0x%08x\n",
-			 n_tads, mb, kb,
+			 n_tads, gb, (mb*1000)/1024,
 			 ((u64)tmp_mb) << 20L,
 			 (u32)TAD_SOCK(reg),
 			 (u32)TAD_CH(reg),
@@ -726,10 +728,10 @@ static void get_memory_layout(const struct mem_ctl_info *mci)
 					      tad_ch_nilv_offset[j],
 					      &reg);
 			tmp_mb = TAD_OFFSET(reg) >> 20;
-			mb = div_u64_rem(tmp_mb, 1000, &kb);
+			gb = div_u64_rem(tmp_mb, 1024, &mb);
 			edac_dbg(0, "TAD CH#%d, offset #%d: %u.%03u GB (0x%016Lx), reg=0x%08x\n",
 				 i, j,
-				 mb, kb,
+				 gb, (mb*1000)/1024,
 				 ((u64)tmp_mb) << 20L,
 				 reg);
 		}
@@ -751,10 +753,10 @@ static void get_memory_layout(const struct mem_ctl_info *mci)
 
 			tmp_mb = RIR_LIMIT(reg) >> 20;
 			rir_way = 1 << RIR_WAY(reg);
-			mb = div_u64_rem(tmp_mb, 1000, &kb);
+			gb = div_u64_rem(tmp_mb, 1024, &mb);
 			edac_dbg(0, "CH#%d RIR#%d, limit: %u.%03u GB (0x%016Lx), way: %d, reg=0x%08x\n",
 				 i, j,
-				 mb, kb,
+				 gb, (mb*1000)/1024,
 				 ((u64)tmp_mb) << 20L,
 				 rir_way,
 				 reg);
@@ -765,10 +767,10 @@ static void get_memory_layout(const struct mem_ctl_info *mci)
 						      &reg);
 				tmp_mb = RIR_OFFSET(reg) << 6;
 
-				mb = div_u64_rem(tmp_mb, 1000, &kb);
+				gb = div_u64_rem(tmp_mb, 1024, &mb);
 				edac_dbg(0, "CH#%d RIR#%d INTL#%d, offset %u.%03u GB (0x%016Lx), tgt: %d, reg=0x%08x\n",
 					 i, j, k,
-					 mb, kb,
+					 gb, (mb*1000)/1024,
 					 ((u64)tmp_mb) << 20L,
 					 (u32)RIR_RNK_TGT(reg),
 					 reg);
@@ -805,7 +807,7 @@ static int get_memory_error_data(struct mem_ctl_info *mci,
 	u8			ch_way,sck_way;
 	u32			tad_offset;
 	u32			rir_way;
-	u32			mb, kb;
+	u32			mb, gb;
 	u64			ch_addr, offset, limit, prv = 0;
 
 
@@ -1021,10 +1023,10 @@ static int get_memory_error_data(struct mem_ctl_info *mci,
 			continue;
 
 		limit = RIR_LIMIT(reg);
-		mb = div_u64_rem(limit >> 20, 1000, &kb);
+		gb = div_u64_rem(limit >> 20, 1024, &mb);
 		edac_dbg(0, "RIR#%d, limit: %u.%03u GB (0x%016Lx), way: %d\n",
 			 n_rir,
-			 mb, kb,
+			 gb, (mb*1000)/1024,
 			 limit,
 			 1 << RIR_WAY(reg));
 		if  (ch_addr <= limit)
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 66/83] sb_edac: avoid INTERNAL ERROR message in EDAC with unspecified channel
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (64 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 65/83] sb_edac: Fix erroneous bytes->gigabytes conversion Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 67/83] cpufreq: fix a NULL pointer dereference in __cpufreq_governor() Jiri Slaby
                   ` (18 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Seth Jennings, Mauro Carvalho Chehab, Jiri Slaby

From: Seth Jennings <sjenning@redhat.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 351fc4a99d49fde63fe5ab7412beb35c40d27269 upstream.

Intel IA32 SDM Table 15-14 defines channel 0xf as 'not specified', but
EDAC doesn't know about this and returns and INTERNAL ERROR when the
channel is greater than NUM_CHANNELS:

kernel: [ 1538.886456] CPU 0: Machine Check Exception: 0 Bank 1: 940000000000009f
kernel: [ 1538.886669] TSC 2bc68b22e7e812 ADDR 46dae7000 MISC 0 PROCESSOR 0:306e4 TIME 1390414572 SOCKET 0 APIC 0
kernel: [ 1538.971948] EDAC MC1: INTERNAL ERROR: channel value is out of range (15 >= 4)
kernel: [ 1538.972203] EDAC MC1: 0 CE memory read error on unknown memory (slot:0 page:0x46dae7 offset:0x0 grain:0 syndrome:0x0 -  area:DRAM err_code:0000:009f socket:1 channel_mask:1 rank:0)

This commit changes sb_edac to forward a channel of -1 to EDAC if the
channel is not specified.  edac_mc_handle_error() sets the channel to -1
internally after the error message anyway, so this commit should have no
effect other than avoiding the INTERNAL ERROR message when the channel
is not specified.

Signed-off-by: Seth Jennings <sjenning@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/edac/sb_edac.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c
index 952a956288e4..3bdefbfb4377 100644
--- a/drivers/edac/sb_edac.c
+++ b/drivers/edac/sb_edac.c
@@ -270,8 +270,9 @@ static const u32 correrrthrsld[] = {
  * sbridge structs
  */
 
-#define NUM_CHANNELS	4
-#define MAX_DIMMS	3		/* Max DIMMS per channel */
+#define NUM_CHANNELS		4
+#define MAX_DIMMS		3	/* Max DIMMS per channel */
+#define CHANNEL_UNSPECIFIED	0xf	/* Intel IA32 SDM 15-14 */
 
 struct sbridge_info {
 	u32	mcmtr;
@@ -1453,6 +1454,9 @@ static void sbridge_mce_output_error(struct mem_ctl_info *mci,
 
 	/* FIXME: need support for channel mask */
 
+	if (channel == CHANNEL_UNSPECIFIED)
+		channel = -1;
+
 	/* Call the helper to output message */
 	edac_mc_handle_error(tp_event, mci, core_err_cnt,
 			     m->addr >> PAGE_SHIFT, m->addr & ~PAGE_MASK, 0,
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 67/83] cpufreq: fix a NULL pointer dereference in __cpufreq_governor()
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (65 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 66/83] sb_edac: avoid INTERNAL ERROR message in EDAC with unspecified channel Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 68/83] libata: Blacklist queued TRIM on Samsung SSD 850 Pro Jiri Slaby
                   ` (17 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Ethan Zhao, Rafael J. Wysocki, Jiri Slaby

From: Ethan Zhao <ethan.zhao@oracle.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit cb57720bf79688d64854a0a43565aa52303c1f3f upstream.

If ACPI _PPC changed notification happens before governor was initiated
while kernel is booting, a NULL pointer dereference will be triggered:

BUG: unable to handle kernel NULL pointer dereference at 0000000000000030
 IP: [<ffffffff81470453>] __cpufreq_governor+0x23/0x1e0
 PGD 0
 Oops: 0000 [#1] SMP
 ... ...
 RIP: 0010:[<ffffffff81470453>]  [<ffffffff81470453>]
 __cpufreq_governor+0x23/0x1e0
 RSP: 0018:ffff881fcfbcfbb8  EFLAGS: 00010286
 RAX: 0000000000000000 RBX: ffff881fd11b3980 RCX: ffff88407fc20000
 RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff881fd11b3980
 RBP: ffff881fcfbcfbd8 R08: 0000000000000000 R09: 000000000000000f
 R10: ffffffff818068d0 R11: 0000000000000043 R12: 0000000000000004
 R13: 0000000000000000 R14: ffffffff8196cae0 R15: 0000000000000000
 FS:  0000000000000000(0000) GS:ffff881fffc00000(0000) knlGS:0000000000000000
 CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
 CR2: 0000000000000030 CR3: 00000000018ae000 CR4: 00000000000407f0
 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
 DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
 Process kworker/0:3 (pid: 750, threadinfo ffff881fcfbce000, task
 ffff881fcf556400)
 Stack:
  ffff881fffc17d00 ffff881fcfbcfc18 ffff881fd11b3980 0000000000000000
  ffff881fcfbcfc08 ffffffff81470d08 ffff881fd11b3980 0000000000000007
  ffff881fcfbcfc18 ffff881fffc17d00 ffff881fcfbcfd28 ffffffff81472e9a
 Call Trace:
  [<ffffffff81470d08>] __cpufreq_set_policy+0x1b8/0x2e0
  [<ffffffff81472e9a>] cpufreq_update_policy+0xca/0x150
  [<ffffffff81472f20>] ? cpufreq_update_policy+0x150/0x150
  [<ffffffff81324a96>] acpi_processor_ppc_has_changed+0x71/0x7b
  [<ffffffff81320bcd>] acpi_processor_notify+0x55/0x115
  [<ffffffff812f9c29>] acpi_device_notify+0x19/0x1b
  [<ffffffff813084ca>] acpi_ev_notify_dispatch+0x41/0x5f
  [<ffffffff812f64a4>] acpi_os_execute_deferred+0x27/0x34

The root cause is a race conditon -- cpufreq core and acpi-cpufreq driver
were initiated, but cpufreq_governor wasn't and _PPC changed notification
happened, __cpufreq_governor() was called within acpi_os_execute_deferred
kernel thread context.

To fix this panic issue, add pointer checking code in __cpufreq_governor()
before pointer policy->governor is to be dereferenced.

Signed-off-by: Ethan Zhao <ethan.zhao@oracle.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/cpufreq/cpufreq.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index d15590856325..8356b481e339 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1739,6 +1739,13 @@ static int __cpufreq_governor(struct cpufreq_policy *policy,
 	struct cpufreq_governor *gov = NULL;
 #endif
 
+	/*
+	 * Governor might not be initiated here if ACPI _PPC changed
+	 * notification happened, so check it.
+	 */
+	if (!policy->governor)
+		return -EINVAL;
+
 	if (policy->governor->max_transition_latency &&
 	    policy->cpuinfo.transition_latency >
 	    policy->governor->max_transition_latency) {
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 68/83] libata: Blacklist queued TRIM on Samsung SSD 850 Pro
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (66 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 67/83] cpufreq: fix a NULL pointer dereference in __cpufreq_governor() Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 69/83] nick kvfree() from apparmor Jiri Slaby
                   ` (16 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Martin K. Petersen, Tejun Heo, Jiri Slaby

From: "Martin K. Petersen" <martin.petersen@oracle.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 6fc4d97a4987c5d247655a157a9377996626221a upstream.

Blacklist queued TRIM on this drive for now.

Reported-by: Stefan Keller <linux-list@zahlenfresser.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
CC: stable@vger.kernel.org
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/ata/libata-core.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 5d0bc51bafea..a428f6c7aa7c 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -4228,6 +4228,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
 	{ "Crucial_CT???M500SSD*",	NULL,	ATA_HORKAGE_NO_NCQ_TRIM, },
 	{ "Micron_M550*",		NULL,	ATA_HORKAGE_NO_NCQ_TRIM, },
 	{ "Crucial_CT*M550SSD*",	NULL,	ATA_HORKAGE_NO_NCQ_TRIM, },
+	{ "Samsung SSD 850 PRO*",	NULL,	ATA_HORKAGE_NO_NCQ_TRIM, },
 
 	/*
 	 * Some WD SATA-I drives spin up and down erratically when the link
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 69/83] nick kvfree() from apparmor
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (67 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 68/83] libata: Blacklist queued TRIM on Samsung SSD 850 Pro Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 70/83] KVM: remove redundant assignments in __kvm_set_memory_region Jiri Slaby
                   ` (15 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Al Viro, Jiri Slaby

From: Al Viro <viro@zeniv.linux.org.uk>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 39f1f78d53b9bcbca91967380c5f0f2305a5c55f upstream.

too many places open-code it

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 include/linux/mm.h                   |  2 ++
 mm/util.c                            | 10 ++++++++++
 security/apparmor/include/apparmor.h |  1 -
 security/apparmor/lib.c              | 14 --------------
 4 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/include/linux/mm.h b/include/linux/mm.h
index f5965a923d44..3f4bb8eb12a4 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -334,6 +334,8 @@ static inline int is_vmalloc_or_module_addr(const void *x)
 }
 #endif
 
+extern void kvfree(const void *addr);
+
 static inline void compound_lock(struct page *page)
 {
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
diff --git a/mm/util.c b/mm/util.c
index de943ec0a4c8..18fd704c1a19 100644
--- a/mm/util.c
+++ b/mm/util.c
@@ -7,6 +7,7 @@
 #include <linux/security.h>
 #include <linux/swap.h>
 #include <linux/swapops.h>
+#include <linux/vmalloc.h>
 #include <asm/uaccess.h>
 
 #include "internal.h"
@@ -380,6 +381,15 @@ unsigned long vm_mmap(struct file *file, unsigned long addr,
 }
 EXPORT_SYMBOL(vm_mmap);
 
+void kvfree(const void *addr)
+{
+	if (is_vmalloc_addr(addr))
+		vfree(addr);
+	else
+		kfree(addr);
+}
+EXPORT_SYMBOL(kvfree);
+
 struct address_space *page_mapping(struct page *page)
 {
 	struct address_space *mapping = page->mapping;
diff --git a/security/apparmor/include/apparmor.h b/security/apparmor/include/apparmor.h
index 8fb1488a3cd4..97130f88838b 100644
--- a/security/apparmor/include/apparmor.h
+++ b/security/apparmor/include/apparmor.h
@@ -66,7 +66,6 @@ extern int apparmor_initialized __initdata;
 char *aa_split_fqname(char *args, char **ns_name);
 void aa_info_message(const char *str);
 void *__aa_kvmalloc(size_t size, gfp_t flags);
-void kvfree(void *buffer);
 
 static inline void *kvmalloc(size_t size)
 {
diff --git a/security/apparmor/lib.c b/security/apparmor/lib.c
index 69689922c491..c1827e068454 100644
--- a/security/apparmor/lib.c
+++ b/security/apparmor/lib.c
@@ -104,17 +104,3 @@ void *__aa_kvmalloc(size_t size, gfp_t flags)
 	}
 	return buffer;
 }
-
-/**
- * kvfree - free an allocation do by kvmalloc
- * @buffer: buffer to free (MAYBE_NULL)
- *
- * Free a buffer allocated by kvmalloc
- */
-void kvfree(void *buffer)
-{
-	if (is_vmalloc_addr(buffer))
-		vfree(buffer);
-	else
-		kfree(buffer);
-}
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 70/83] KVM: remove redundant assignments in __kvm_set_memory_region
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (68 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 69/83] nick kvfree() from apparmor Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 71/83] kvm: commonize allocation of the new memory slots Jiri Slaby
                   ` (14 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Christian Borntraeger, Paolo Bonzini, Jiri Slaby

From: Christian Borntraeger <borntraeger@de.ibm.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit f2a25160887e00434ce1361007009120e1fecbda upstream.

__kvm_set_memory_region sets r to EINVAL very early.
Doing it again is not necessary. The same is true later on, where
r is assigned -ENOMEM twice.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 virt/kvm/kvm_main.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index b9bf29490b12..feffb3f7c393 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -774,7 +774,6 @@ int __kvm_set_memory_region(struct kvm *kvm,
 	base_gfn = mem->guest_phys_addr >> PAGE_SHIFT;
 	npages = mem->memory_size >> PAGE_SHIFT;
 
-	r = -EINVAL;
 	if (npages > KVM_MEM_MAX_NR_PAGES)
 		goto out;
 
@@ -788,7 +787,6 @@ int __kvm_set_memory_region(struct kvm *kvm,
 	new.npages = npages;
 	new.flags = mem->flags;
 
-	r = -EINVAL;
 	if (npages) {
 		if (!old.npages)
 			change = KVM_MR_CREATE;
@@ -844,7 +842,6 @@ int __kvm_set_memory_region(struct kvm *kvm,
 	}
 
 	if ((change == KVM_MR_DELETE) || (change == KVM_MR_MOVE)) {
-		r = -ENOMEM;
 		slots = kmemdup(kvm->memslots, sizeof(struct kvm_memslots),
 				GFP_KERNEL);
 		if (!slots)
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 71/83] kvm: commonize allocation of the new memory slots
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (69 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 70/83] KVM: remove redundant assignments in __kvm_set_memory_region Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 72/83] kvm: avoid page allocation failure in kvm_set_memory_region() Jiri Slaby
                   ` (13 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Paolo Bonzini, Jiri Slaby

From: Paolo Bonzini <pbonzini@redhat.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit f2a81036516e2b97c07c49dd6d51d36bfa43593d upstream.

The two kmemdup invocations can be unified.  I find that the new
placement of the comment makes it easier to see what happens.

Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Takuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 virt/kvm/kvm_main.c | 28 +++++++++++-----------------
 1 file changed, 11 insertions(+), 17 deletions(-)

diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index feffb3f7c393..cf0c07786204 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -841,11 +841,12 @@ int __kvm_set_memory_region(struct kvm *kvm,
 			goto out_free;
 	}
 
+	slots = kmemdup(kvm->memslots, sizeof(struct kvm_memslots),
+			GFP_KERNEL);
+	if (!slots)
+		goto out_free;
+
 	if ((change == KVM_MR_DELETE) || (change == KVM_MR_MOVE)) {
-		slots = kmemdup(kvm->memslots, sizeof(struct kvm_memslots),
-				GFP_KERNEL);
-		if (!slots)
-			goto out_free;
 		slot = id_to_memslot(slots, mem->slot);
 		slot->flags |= KVM_MEMSLOT_INVALID;
 
@@ -861,6 +862,12 @@ int __kvm_set_memory_region(struct kvm *kvm,
 		 * 	- kvm_is_visible_gfn (mmu_check_roots)
 		 */
 		kvm_arch_flush_shadow_memslot(kvm, slot);
+
+		/*
+		 * We can re-use the old_memslots from above, the only difference
+		 * from the currently installed memslots is the invalid flag.  This
+		 * will get overwritten by update_memslots anyway.
+		 */
 		slots = old_memslots;
 	}
 
@@ -868,19 +875,6 @@ int __kvm_set_memory_region(struct kvm *kvm,
 	if (r)
 		goto out_slots;
 
-	r = -ENOMEM;
-	/*
-	 * We can re-use the old_memslots from above, the only difference
-	 * from the currently installed memslots is the invalid flag.  This
-	 * will get overwritten by update_memslots anyway.
-	 */
-	if (!slots) {
-		slots = kmemdup(kvm->memslots, sizeof(struct kvm_memslots),
-				GFP_KERNEL);
-		if (!slots)
-			goto out_free;
-	}
-
 	/*
 	 * IOMMU mapping:  New slots need to be mapped.  Old slots need to be
 	 * un-mapped and re-mapped if their base changes.  Since base change
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 72/83] kvm: avoid page allocation failure in kvm_set_memory_region()
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (70 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 71/83] kvm: commonize allocation of the new memory slots Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 73/83] Input: sirfsoc-onkey - fix GPL v2 license string typo Jiri Slaby
                   ` (12 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Igor Mammedov, Marcelo Tosatti, Jiri Slaby

From: Igor Mammedov <imammedo@redhat.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 744961341d472db6272ed9b42319a90f5a2aa7c4 upstream.

KVM guest can fail to startup with following trace on host:

qemu-system-x86: page allocation failure: order:4, mode:0x40d0
Call Trace:
  dump_stack+0x47/0x67
  warn_alloc_failed+0xee/0x150
  __alloc_pages_direct_compact+0x14a/0x150
  __alloc_pages_nodemask+0x776/0xb80
  alloc_kmem_pages+0x3a/0x110
  kmalloc_order+0x13/0x50
  kmemdup+0x1b/0x40
  __kvm_set_memory_region+0x24a/0x9f0 [kvm]
  kvm_set_ioapic+0x130/0x130 [kvm]
  kvm_set_memory_region+0x21/0x40 [kvm]
  kvm_vm_ioctl+0x43f/0x750 [kvm]

Failure happens when attempting to allocate pages for
'struct kvm_memslots', however it doesn't have to be
present in physically contiguous (kmalloc-ed) address
space, change allocation to kvm_kvzalloc() so that
it will be vmalloc-ed when its size is more then a page.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 virt/kvm/kvm_main.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index cf0c07786204..e068d0017fb8 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -464,7 +464,7 @@ static struct kvm *kvm_create_vm(unsigned long type)
 	BUILD_BUG_ON(KVM_MEM_SLOTS_NUM > SHRT_MAX);
 
 	r = -ENOMEM;
-	kvm->memslots = kzalloc(sizeof(struct kvm_memslots), GFP_KERNEL);
+	kvm->memslots = kvm_kvzalloc(sizeof(struct kvm_memslots));
 	if (!kvm->memslots)
 		goto out_err_nosrcu;
 	kvm_init_memslots_id(kvm);
@@ -504,7 +504,7 @@ out_err_nosrcu:
 out_err_nodisable:
 	for (i = 0; i < KVM_NR_BUSES; i++)
 		kfree(kvm->buses[i]);
-	kfree(kvm->memslots);
+	kvfree(kvm->memslots);
 	kvm_arch_free_vm(kvm);
 	return ERR_PTR(r);
 }
@@ -560,7 +560,7 @@ void kvm_free_physmem(struct kvm *kvm)
 	kvm_for_each_memslot(memslot, slots)
 		kvm_free_physmem_slot(memslot, NULL);
 
-	kfree(kvm->memslots);
+	kvfree(kvm->memslots);
 }
 
 static void kvm_destroy_devices(struct kvm *kvm)
@@ -841,10 +841,10 @@ int __kvm_set_memory_region(struct kvm *kvm,
 			goto out_free;
 	}
 
-	slots = kmemdup(kvm->memslots, sizeof(struct kvm_memslots),
-			GFP_KERNEL);
+	slots = kvm_kvzalloc(sizeof(struct kvm_memslots));
 	if (!slots)
 		goto out_free;
+	memcpy(slots, kvm->memslots, sizeof(struct kvm_memslots));
 
 	if ((change == KVM_MR_DELETE) || (change == KVM_MR_MOVE)) {
 		slot = id_to_memslot(slots, mem->slot);
@@ -901,12 +901,12 @@ int __kvm_set_memory_region(struct kvm *kvm,
 	kvm_arch_commit_memory_region(kvm, mem, &old, change);
 
 	kvm_free_physmem_slot(&old, &new);
-	kfree(old_memslots);
+	kvfree(old_memslots);
 
 	return 0;
 
 out_slots:
-	kfree(slots);
+	kvfree(slots);
 out_free:
 	kvm_free_physmem_slot(&new, &old);
 out:
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 73/83] Input: sirfsoc-onkey - fix GPL v2 license string typo
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (71 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 72/83] kvm: avoid page allocation failure in kvm_set_memory_region() Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 74/83] Input: twl4030-pwrbutton - ensure a wakeup event is recorded Jiri Slaby
                   ` (11 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Bjorn Helgaas, Dmitry Torokhov, Jiri Slaby

From: Bjorn Helgaas <bhelgaas@google.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 67f4aef20055afec73e37e7752bc6cc74fa01dea upstream.

Per license_is_gpl_compatible(), the MODULE_LICENSE() string for GPL v2 is
"GPL v2", not "GPLv2".  Use "GPL v2" so this module doesn't taint the
kernel.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/input/misc/sirfsoc-onkey.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/input/misc/sirfsoc-onkey.c b/drivers/input/misc/sirfsoc-onkey.c
index 0621c367049a..7c879904dd46 100644
--- a/drivers/input/misc/sirfsoc-onkey.c
+++ b/drivers/input/misc/sirfsoc-onkey.c
@@ -159,7 +159,7 @@ static struct platform_driver sirfsoc_pwrc_driver = {
 
 module_platform_driver(sirfsoc_pwrc_driver);
 
-MODULE_LICENSE("GPLv2");
+MODULE_LICENSE("GPL v2");
 MODULE_AUTHOR("Binghua Duan <Binghua.Duan@csr.com>, Xianglong Du <Xianglong.Du@csr.com>");
 MODULE_DESCRIPTION("CSR Prima2 PWRC Driver");
 MODULE_ALIAS("platform:sirfsoc-pwrc");
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 74/83] Input: twl4030-pwrbutton - ensure a wakeup event is recorded.
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (72 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 73/83] Input: sirfsoc-onkey - fix GPL v2 license string typo Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 75/83] Bluetooth: ath3k: Add support of MCI 13d3:3408 bt device Jiri Slaby
                   ` (10 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, NeilBrown, Dmitry Torokhov, Jiri Slaby

From: NeilBrown <neilb@suse.de>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit c42bfd7f6cd26e8f712fc184460e32845d928d17 upstream.

This button is treated as a wakeup source, so we need to initialise it
correctly.

Without the device_init_wakeup() call, dev->power.wakeup will
be NULL, and pm_wakeup_event() will do nothing.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/input/misc/twl4030-pwrbutton.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/input/misc/twl4030-pwrbutton.c b/drivers/input/misc/twl4030-pwrbutton.c
index b9a05fda03e4..a0bb4f829fb4 100644
--- a/drivers/input/misc/twl4030-pwrbutton.c
+++ b/drivers/input/misc/twl4030-pwrbutton.c
@@ -85,6 +85,7 @@ static int __init twl4030_pwrbutton_probe(struct platform_device *pdev)
 	}
 
 	platform_set_drvdata(pdev, pwr);
+	device_init_wakeup(&pdev->dev, true);
 
 	return 0;
 
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 75/83] Bluetooth: ath3k: Add support of MCI 13d3:3408 bt device
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (73 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 74/83] Input: twl4030-pwrbutton - ensure a wakeup event is recorded Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 76/83] Bluetooth: ath3k: Add support of AR3012 bluetooth 13d3:3423 device Jiri Slaby
                   ` (9 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Dmitry Tunin, Johan Hedberg, Jiri Slaby

From: Dmitry Tunin <hanipouspilot@gmail.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 3bb30a7cdf9242aca90d49aa41baebf9458f96f0 upstream.

Add support for Bluetooth MCI WB335 (AR9565) Wi-Fi+bt module. This
Bluetooth module requires loading patch and sysconfig by ath3k driver.

T:  Bus=01 Lev=02 Prnt=03 Port=00 Cnt=01 Dev#= 20 Spd=12   MxCh= 0
D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=13d3 ProdID=3408 Rev= 0.02
C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=01
I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms

Signed-off-by: Dmitry Tunin <hanipouspilot@gmail.com>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Cc: stable@vger.kernel.org
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/bluetooth/ath3k.c | 2 ++
 drivers/bluetooth/btusb.c | 1 +
 2 files changed, 3 insertions(+)

diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
index 9e925bf9ac57..897992dce144 100644
--- a/drivers/bluetooth/ath3k.c
+++ b/drivers/bluetooth/ath3k.c
@@ -106,6 +106,7 @@ static struct usb_device_id ath3k_table[] = {
 	{ USB_DEVICE(0x13d3, 0x3375) },
 	{ USB_DEVICE(0x13d3, 0x3393) },
 	{ USB_DEVICE(0x13d3, 0x3402) },
+	{ USB_DEVICE(0x13d3, 0x3408) },
 	{ USB_DEVICE(0x13d3, 0x3432) },
 
 	/* Atheros AR5BBU12 with sflash firmware */
@@ -158,6 +159,7 @@ static struct usb_device_id ath3k_blist_tbl[] = {
 	{ USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x13d3, 0x3402), .driver_info = BTUSB_ATH3012 },
+	{ USB_DEVICE(0x13d3, 0x3408), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x13d3, 0x3432), .driver_info = BTUSB_ATH3012 },
 
 	/* Atheros AR5BBU22 with sflash firmware */
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index faa9a387f9a5..2c227de75bfc 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -183,6 +183,7 @@ static struct usb_device_id blacklist_table[] = {
 	{ USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x13d3, 0x3402), .driver_info = BTUSB_ATH3012 },
+	{ USB_DEVICE(0x13d3, 0x3408), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x13d3, 0x3432), .driver_info = BTUSB_ATH3012 },
 
 	/* Atheros AR5BBU12 with sflash firmware */
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 76/83] Bluetooth: ath3k: Add support of AR3012 bluetooth 13d3:3423 device
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (74 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 75/83] Bluetooth: ath3k: Add support of MCI 13d3:3408 bt device Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 77/83] Bluetooth: Add USB device 04ca:3010 as Atheros AR3012 Jiri Slaby
                   ` (8 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Dmitry Tunin, Marcel Holtmann, Jiri Slaby

From: Dmitry Tunin <hanipouspilot@gmail.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 033efa920a7f22a8caf7a38d851a2f451781bbf7 upstream.

Add support of 13d3:3423 device.

BugLink: https://bugs.launchpad.net/bugs/1411193

T: Bus=01 Lev=02 Prnt=03 Port=00 Cnt=01 Dev#= 5 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=13d3 ProdID=3423 Rev= 0.01
C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
A: FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=01
I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms
I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms
I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms
E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms

Signed-off-by: Dmitry Tunin <hanipouspilot@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Cc: stable@vger.kernel.org
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/bluetooth/ath3k.c | 2 ++
 drivers/bluetooth/btusb.c | 1 +
 2 files changed, 3 insertions(+)

diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
index 897992dce144..851b7de5f751 100644
--- a/drivers/bluetooth/ath3k.c
+++ b/drivers/bluetooth/ath3k.c
@@ -107,6 +107,7 @@ static struct usb_device_id ath3k_table[] = {
 	{ USB_DEVICE(0x13d3, 0x3393) },
 	{ USB_DEVICE(0x13d3, 0x3402) },
 	{ USB_DEVICE(0x13d3, 0x3408) },
+	{ USB_DEVICE(0x13d3, 0x3423) },
 	{ USB_DEVICE(0x13d3, 0x3432) },
 
 	/* Atheros AR5BBU12 with sflash firmware */
@@ -160,6 +161,7 @@ static struct usb_device_id ath3k_blist_tbl[] = {
 	{ USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x13d3, 0x3402), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x13d3, 0x3408), .driver_info = BTUSB_ATH3012 },
+	{ USB_DEVICE(0x13d3, 0x3423), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x13d3, 0x3432), .driver_info = BTUSB_ATH3012 },
 
 	/* Atheros AR5BBU22 with sflash firmware */
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 2c227de75bfc..9af5b8fef864 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -184,6 +184,7 @@ static struct usb_device_id blacklist_table[] = {
 	{ USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x13d3, 0x3402), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x13d3, 0x3408), .driver_info = BTUSB_ATH3012 },
+	{ USB_DEVICE(0x13d3, 0x3423), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x13d3, 0x3432), .driver_info = BTUSB_ATH3012 },
 
 	/* Atheros AR5BBU12 with sflash firmware */
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 77/83] Bluetooth: Add USB device 04ca:3010 as Atheros AR3012
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (75 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 76/83] Bluetooth: ath3k: Add support of AR3012 bluetooth 13d3:3423 device Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 78/83] netfilter: conntrack: disable generic tracking for known protocols Jiri Slaby
                   ` (7 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Janne Heikkinen, Marcel Holtmann, Jiri Slaby

From: Janne Heikkinen <janne.m.heikkinen@gmail.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 134d3b3550f050b9bec37111824452064d1ed928 upstream.

Asus X553MA has USB device 04ca:3010 that is Atheros AR3012
or compatible.

Device from /sys/kernel/debug/usb/devices:

T:  Bus=01 Lev=02 Prnt=02 Port=03 Cnt=02 Dev#= 27 Spd=12   MxCh= 0
D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=04ca ProdID=3010 Rev= 0.02
C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=01
I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms

Signed-off-by: Janne Heikkinen <janne.m.heikkinen@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/bluetooth/ath3k.c | 2 ++
 drivers/bluetooth/btusb.c | 1 +
 2 files changed, 3 insertions(+)

diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
index 851b7de5f751..e0894227c302 100644
--- a/drivers/bluetooth/ath3k.c
+++ b/drivers/bluetooth/ath3k.c
@@ -87,6 +87,7 @@ static struct usb_device_id ath3k_table[] = {
 	{ USB_DEVICE(0x04CA, 0x3007) },
 	{ USB_DEVICE(0x04CA, 0x3008) },
 	{ USB_DEVICE(0x04CA, 0x300b) },
+	{ USB_DEVICE(0x04CA, 0x3010) },
 	{ USB_DEVICE(0x0930, 0x0219) },
 	{ USB_DEVICE(0x0930, 0x0220) },
 	{ USB_DEVICE(0x0930, 0x0227) },
@@ -140,6 +141,7 @@ static struct usb_device_id ath3k_blist_tbl[] = {
 	{ USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x04ca, 0x300b), .driver_info = BTUSB_ATH3012 },
+	{ USB_DEVICE(0x04ca, 0x3010), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x0930, 0x0220), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x0930, 0x0227), .driver_info = BTUSB_ATH3012 },
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 9af5b8fef864..042f6dccc399 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -164,6 +164,7 @@ static struct usb_device_id blacklist_table[] = {
 	{ USB_DEVICE(0x04ca, 0x3007), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x04ca, 0x300b), .driver_info = BTUSB_ATH3012 },
+	{ USB_DEVICE(0x04ca, 0x3010), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x0930, 0x0220), .driver_info = BTUSB_ATH3012 },
 	{ USB_DEVICE(0x0930, 0x0227), .driver_info = BTUSB_ATH3012 },
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 78/83] netfilter: conntrack: disable generic tracking for known protocols
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (76 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 77/83] Bluetooth: Add USB device 04ca:3010 as Atheros AR3012 Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 79/83] KVM: x86: SYSENTER emulation is broken Jiri Slaby
                   ` (6 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Florian Westphal, Daniel Borkmann,
	Pablo Neira Ayuso, Zhiqiang Zhang, Jiri Slaby

From: Florian Westphal <fw@strlen.de>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit db29a9508a9246e77087c5531e45b2c88ec6988b upstream.

Given following iptables ruleset:

-P FORWARD DROP
-A FORWARD -m sctp --dport 9 -j ACCEPT
-A FORWARD -p tcp --dport 80 -j ACCEPT
-A FORWARD -p tcp -m conntrack -m state ESTABLISHED,RELATED -j ACCEPT

One would assume that this allows SCTP on port 9 and TCP on port 80.
Unfortunately, if the SCTP conntrack module is not loaded, this allows
*all* SCTP communication, to pass though, i.e. -p sctp -j ACCEPT,
which we think is a security issue.

This is because on the first SCTP packet on port 9, we create a dummy
"generic l4" conntrack entry without any port information (since
conntrack doesn't know how to extract this information).

All subsequent packets that are unknown will then be in established
state since they will fallback to proto_generic and will match the
'generic' entry.

Our originally proposed version [1] completely disabled generic protocol
tracking, but Jozsef suggests to not track protocols for which a more
suitable helper is available, hence we now mitigate the issue for in
tree known ct protocol helpers only, so that at least NAT and direction
information will still be preserved for others.

 [1] http://www.spinics.net/lists/netfilter-devel/msg33430.html

Joint work with Daniel Borkmann.

Fixes CVE-2014-8160.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Acked-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Zhiqiang Zhang <zhangzhiqiang.zhang@huawei.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 net/netfilter/nf_conntrack_proto_generic.c | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/net/netfilter/nf_conntrack_proto_generic.c b/net/netfilter/nf_conntrack_proto_generic.c
index d25f29377648..957c1db66652 100644
--- a/net/netfilter/nf_conntrack_proto_generic.c
+++ b/net/netfilter/nf_conntrack_proto_generic.c
@@ -14,6 +14,30 @@
 
 static unsigned int nf_ct_generic_timeout __read_mostly = 600*HZ;
 
+static bool nf_generic_should_process(u8 proto)
+{
+	switch (proto) {
+#ifdef CONFIG_NF_CT_PROTO_SCTP_MODULE
+	case IPPROTO_SCTP:
+		return false;
+#endif
+#ifdef CONFIG_NF_CT_PROTO_DCCP_MODULE
+	case IPPROTO_DCCP:
+		return false;
+#endif
+#ifdef CONFIG_NF_CT_PROTO_GRE_MODULE
+	case IPPROTO_GRE:
+		return false;
+#endif
+#ifdef CONFIG_NF_CT_PROTO_UDPLITE_MODULE
+	case IPPROTO_UDPLITE:
+		return false;
+#endif
+	default:
+		return true;
+	}
+}
+
 static inline struct nf_generic_net *generic_pernet(struct net *net)
 {
 	return &net->ct.nf_ct_proto.generic;
@@ -67,7 +91,7 @@ static int generic_packet(struct nf_conn *ct,
 static bool generic_new(struct nf_conn *ct, const struct sk_buff *skb,
 			unsigned int dataoff, unsigned int *timeouts)
 {
-	return true;
+	return nf_generic_should_process(nf_ct_protonum(ct));
 }
 
 #if IS_ENABLED(CONFIG_NF_CT_NETLINK_TIMEOUT)
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 79/83] KVM: x86: SYSENTER emulation is broken
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (77 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 78/83] netfilter: conntrack: disable generic tracking for known protocols Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 80/83] mm: softdirty: unmapped addresses between VMAs are clean Jiri Slaby
                   ` (5 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Nadav Amit, Paolo Bonzini, Zhiqiang Zhang, Jiri Slaby

From: Nadav Amit <namit@cs.technion.ac.il>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit f3747379accba8e95d70cec0eae0582c8c182050 upstream.

SYSENTER emulation is broken in several ways:
1. It misses the case of 16-bit code segments completely (CVE-2015-0239).
2. MSR_IA32_SYSENTER_CS is checked in 64-bit mode incorrectly (bits 0 and 1 can
   still be set without causing #GP).
3. MSR_IA32_SYSENTER_EIP and MSR_IA32_SYSENTER_ESP are not masked in
   legacy-mode.
4. There is some unneeded code.

Fix it.

Signed-off-by: Nadav Amit <namit@cs.technion.ac.il>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
[zhangzhiqiang: backport to 3.10:
 - adjust context
 - in 3.10 context "ctxt->eflags &= ~(EFLG_VM | EFLG_IF | EFLG_RF)" is replaced by
   "ctxt->eflags &= ~(EFLG_VM | EFLG_IF)" in upstream, which was changed by another commit.
 - After the above adjustments, becomes same to the original patch:
       https://github.com/torvalds/linux/commit/f3747379accba8e95d70cec0eae0582c8c182050
]
Signed-off-by: Zhiqiang Zhang <zhangzhiqiang.zhang@huawei.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 arch/x86/kvm/emulate.c | 27 ++++++++-------------------
 1 file changed, 8 insertions(+), 19 deletions(-)

diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index c412bab82d1f..8216f484398f 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -2292,7 +2292,7 @@ static int em_sysenter(struct x86_emulate_ctxt *ctxt)
 	 * Not recognized on AMD in compat mode (but is recognized in legacy
 	 * mode).
 	 */
-	if ((ctxt->mode == X86EMUL_MODE_PROT32) && (efer & EFER_LMA)
+	if ((ctxt->mode != X86EMUL_MODE_PROT64) && (efer & EFER_LMA)
 	    && !vendor_intel(ctxt))
 		return emulate_ud(ctxt);
 
@@ -2305,25 +2305,13 @@ static int em_sysenter(struct x86_emulate_ctxt *ctxt)
 	setup_syscalls_segments(ctxt, &cs, &ss);
 
 	ops->get_msr(ctxt, MSR_IA32_SYSENTER_CS, &msr_data);
-	switch (ctxt->mode) {
-	case X86EMUL_MODE_PROT32:
-		if ((msr_data & 0xfffc) == 0x0)
-			return emulate_gp(ctxt, 0);
-		break;
-	case X86EMUL_MODE_PROT64:
-		if (msr_data == 0x0)
-			return emulate_gp(ctxt, 0);
-		break;
-	default:
-		break;
-	}
+	if ((msr_data & 0xfffc) == 0x0)
+		return emulate_gp(ctxt, 0);
 
 	ctxt->eflags &= ~(EFLG_VM | EFLG_IF | EFLG_RF);
-	cs_sel = (u16)msr_data;
-	cs_sel &= ~SELECTOR_RPL_MASK;
+	cs_sel = (u16)msr_data & ~SELECTOR_RPL_MASK;
 	ss_sel = cs_sel + 8;
-	ss_sel &= ~SELECTOR_RPL_MASK;
-	if (ctxt->mode == X86EMUL_MODE_PROT64 || (efer & EFER_LMA)) {
+	if (efer & EFER_LMA) {
 		cs.d = 0;
 		cs.l = 1;
 	}
@@ -2332,10 +2320,11 @@ static int em_sysenter(struct x86_emulate_ctxt *ctxt)
 	ops->set_segment(ctxt, ss_sel, &ss, 0, VCPU_SREG_SS);
 
 	ops->get_msr(ctxt, MSR_IA32_SYSENTER_EIP, &msr_data);
-	ctxt->_eip = msr_data;
+	ctxt->_eip = (efer & EFER_LMA) ? msr_data : (u32)msr_data;
 
 	ops->get_msr(ctxt, MSR_IA32_SYSENTER_ESP, &msr_data);
-	*reg_write(ctxt, VCPU_REGS_RSP) = msr_data;
+	*reg_write(ctxt, VCPU_REGS_RSP) = (efer & EFER_LMA) ? msr_data :
+							      (u32)msr_data;
 
 	return X86EMUL_CONTINUE;
 }
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 80/83] mm: softdirty: unmapped addresses between VMAs are clean
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (78 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 79/83] KVM: x86: SYSENTER emulation is broken Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 81/83] proc/pagemap: walk page tables under pte lock Jiri Slaby
                   ` (4 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Peter Feiner, Kirill A. Shutemov, Cyrill Gorcunov,
	Pavel Emelyanov, Jamie Liu, Hugh Dickins, Naoya Horiguchi,
	Andrew Morton, Linus Torvalds, Jiri Slaby

From: Peter Feiner <pfeiner@google.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 81d0fa623c5b8dbd5279d9713094b0f9b0a00fb4 upstream.

If a /proc/pid/pagemap read spans a [VMA, an unmapped region, then a
VM_SOFTDIRTY VMA], the virtual pages in the unmapped region are reported
as softdirty.  Here's a program to demonstrate the bug:

int main() {
	const uint64_t PAGEMAP_SOFTDIRTY = 1ul << 55;
	uint64_t pme[3];
	int fd = open("/proc/self/pagemap", O_RDONLY);;
	char *m = mmap(NULL, 3 * getpagesize(), PROT_READ,
	               MAP_ANONYMOUS | MAP_SHARED, -1, 0);
	munmap(m + getpagesize(), getpagesize());
	pread(fd, pme, 24, (unsigned long) m / getpagesize() * 8);
	assert(pme[0] & PAGEMAP_SOFTDIRTY);    /* passes */
	assert(!(pme[1] & PAGEMAP_SOFTDIRTY)); /* fails */
	assert(pme[2] & PAGEMAP_SOFTDIRTY);    /* passes */
	return 0;
}

(Note that all pages in new VMAs are softdirty until cleared).

Tested:
	Used the program given above. I'm going to include this code in
	a selftest in the future.

[n-horiguchi@ah.jp.nec.com: prevent pagemap_pte_range() from overrunning]
Signed-off-by: Peter Feiner <pfeiner@google.com>
Cc: "Kirill A. Shutemov" <kirill@shutemov.name>
Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: Pavel Emelyanov <xemul@parallels.com>
Cc: Jamie Liu <jamieliu@google.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 fs/proc/task_mmu.c | 61 +++++++++++++++++++++++++++++++++++-------------------
 1 file changed, 40 insertions(+), 21 deletions(-)

diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index 1db8ce0086ed..6223070e7265 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -998,7 +998,6 @@ static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
 	struct pagemapread *pm = walk->private;
 	pte_t *pte;
 	int err = 0;
-	pagemap_entry_t pme = make_pme(PM_NOT_PRESENT(pm->v2));
 
 	/* find the first VMA at or above 'addr' */
 	vma = find_vma(walk->mm, addr);
@@ -1012,6 +1011,7 @@ static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
 
 		for (; addr != end; addr += PAGE_SIZE) {
 			unsigned long offset;
+			pagemap_entry_t pme;
 
 			offset = (addr & ~PAGEMAP_WALK_MASK) >>
 					PAGE_SHIFT;
@@ -1026,32 +1026,51 @@ static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
 
 	if (pmd_trans_unstable(pmd))
 		return 0;
-	for (; addr != end; addr += PAGE_SIZE) {
-		int flags2;
-
-		/* check to see if we've left 'vma' behind
-		 * and need a new, higher one */
-		if (vma && (addr >= vma->vm_end)) {
-			vma = find_vma(walk->mm, addr);
-			if (vma && (vma->vm_flags & VM_SOFTDIRTY))
-				flags2 = __PM_SOFT_DIRTY;
-			else
-				flags2 = 0;
-			pme = make_pme(PM_NOT_PRESENT(pm->v2) | PM_STATUS2(pm->v2, flags2));
+
+	while (1) {
+		/* End of address space hole, which we mark as non-present. */
+		unsigned long hole_end;
+
+		if (vma)
+			hole_end = min(end, vma->vm_start);
+		else
+			hole_end = end;
+
+		for (; addr < hole_end; addr += PAGE_SIZE) {
+			pagemap_entry_t pme = make_pme(PM_NOT_PRESENT(pm->v2));
+
+			err = add_to_pagemap(addr, &pme, pm);
+			if (err)
+				return err;
 		}
 
-		/* check that 'vma' actually covers this address,
-		 * and that it isn't a huge page vma */
-		if (vma && (vma->vm_start <= addr) &&
-		    !is_vm_hugetlb_page(vma)) {
+		if (!vma || vma->vm_start >= end)
+			break;
+		/*
+		 * We can't possibly be in a hugetlb VMA. In general,
+		 * for a mm_walk with a pmd_entry and a hugetlb_entry,
+		 * the pmd_entry can only be called on addresses in a
+		 * hugetlb if the walk starts in a non-hugetlb VMA and
+		 * spans a hugepage VMA. Since pagemap_read walks are
+		 * PMD-sized and PMD-aligned, this will never be true.
+		 */
+		BUG_ON(is_vm_hugetlb_page(vma));
+
+		/* Addresses in the VMA. */
+		for (; addr < min(end, vma->vm_end); addr += PAGE_SIZE) {
+			pagemap_entry_t pme;
 			pte = pte_offset_map(pmd, addr);
 			pte_to_pagemap_entry(&pme, pm, vma, addr, *pte);
-			/* unmap before userspace copy */
 			pte_unmap(pte);
+			err = add_to_pagemap(addr, &pme, pm);
+			if (err)
+				return err;
 		}
-		err = add_to_pagemap(addr, &pme, pm);
-		if (err)
-			return err;
+
+		if (addr == end)
+			break;
+
+		vma = find_vma(walk->mm, addr);
 	}
 
 	cond_resched();
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 81/83] proc/pagemap: walk page tables under pte lock
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (79 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 80/83] mm: softdirty: unmapped addresses between VMAs are clean Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 82/83] Input: elantech - fix crc_enabled for Fujitsu H730 Jiri Slaby
                   ` (3 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable
  Cc: linux-kernel, Konstantin Khlebnikov, Andrew Morton,
	Linus Torvalds, Jiri Slaby

From: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 05fbf357d94152171bc50f8a369390f1f16efd89 upstream.

Lockless access to pte in pagemap_pte_range() might race with page
migration and trigger BUG_ON(!PageLocked()) in migration_entry_to_page():

CPU A (pagemap)                           CPU B (migration)
                                          lock_page()
                                          try_to_unmap(page, TTU_MIGRATION...)
                                               make_migration_entry()
                                               set_pte_at()
<read *pte>
pte_to_pagemap_entry()
                                          remove_migration_ptes()
                                          unlock_page()
    if(is_migration_entry())
        migration_entry_to_page()
            BUG_ON(!PageLocked(page))

Also lockless read might be non-atomic if pte is larger than wordsize.
Other pte walkers (smaps, numa_maps, clear_refs) already lock ptes.

Fixes: 052fb0d635df ("proc: report file/anon bit in /proc/pid/pagemap")
Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Reported-by: Andrey Ryabinin <a.ryabinin@samsung.com>
Reviewed-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: <stable@vger.kernel.org>	[3.5+]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 fs/proc/task_mmu.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index 6223070e7265..d20f37d1c6e7 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -996,7 +996,8 @@ static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
 {
 	struct vm_area_struct *vma;
 	struct pagemapread *pm = walk->private;
-	pte_t *pte;
+	spinlock_t *ptl;
+	pte_t *pte, *orig_pte;
 	int err = 0;
 
 	/* find the first VMA at or above 'addr' */
@@ -1057,15 +1058,19 @@ static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
 		BUG_ON(is_vm_hugetlb_page(vma));
 
 		/* Addresses in the VMA. */
-		for (; addr < min(end, vma->vm_end); addr += PAGE_SIZE) {
+		orig_pte = pte = pte_offset_map_lock(walk->mm, pmd, addr, &ptl);
+		for (; addr < min(end, vma->vm_end); pte++, addr += PAGE_SIZE) {
 			pagemap_entry_t pme;
-			pte = pte_offset_map(pmd, addr);
+
 			pte_to_pagemap_entry(&pme, pm, vma, addr, *pte);
-			pte_unmap(pte);
 			err = add_to_pagemap(addr, &pme, pm);
 			if (err)
-				return err;
+				break;
 		}
+		pte_unmap_unlock(orig_pte, ptl);
+
+		if (err)
+			return err;
 
 		if (addr == end)
 			break;
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 82/83] Input: elantech - fix crc_enabled for Fujitsu H730
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (80 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 81/83] proc/pagemap: walk page tables under pte lock Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-27 21:32 ` [PATCH 3.12 83/83] Input: elantech - add more Fujtisu notebooks to force crc_enabled Jiri Slaby
                   ` (2 subsequent siblings)
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Ulrik De Bie, Dmitry Torokhov, Jiri Slaby

From: Ulrik De Bie <ulrik.debie-os@e2big.org>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 0dc1587905a50f8f61bbc29e850aa592821e4bea upstream.

The Fujitsu H730 does not work with crc_enabled = 0, even though the
crc_enabled bit in the firmware version indicated it would. When switching
this value to crc_enabled to 1, the touchpad works. This patch uses DMI to
detect H730.

Reported-by: Stefan Valouch <stefan@valouch.com>
Tested-by: Stefan Valouch <stefan@valouch.com>
Tested-by: Alfredo Gemma <alfredo.gemma@gmail.com>
Signed-off-by: Ulrik De Bie <ulrik.debie-os@e2big.org>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/input/mouse/elantech.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
index 0b75b5764f31..4bee236927f9 100644
--- a/drivers/input/mouse/elantech.c
+++ b/drivers/input/mouse/elantech.c
@@ -1357,6 +1357,22 @@ static int elantech_reconnect(struct psmouse *psmouse)
 }
 
 /*
+ * Some hw_version 4 models do not work with crc_disabled
+ */
+static const struct dmi_system_id elantech_dmi_force_crc_enabled[] = {
+#if defined(CONFIG_DMI) && defined(CONFIG_X86)
+	{
+		/* Fujitsu H730 does not work with crc_enabled == 0 */
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "CELSIUS H730"),
+		},
+	},
+#endif
+	{ }
+};
+
+/*
  * Some hw_version 3 models go into error state when we try to set
  * bit 3 and/or bit 1 of r10.
  */
@@ -1430,7 +1446,8 @@ static int elantech_set_properties(struct elantech_data *etd)
 	 * The signatures of v3 and v4 packets change depending on the
 	 * value of this hardware flag.
 	 */
-	etd->crc_enabled = ((etd->fw_version & 0x4000) == 0x4000);
+	etd->crc_enabled = (etd->fw_version & 0x4000) == 0x4000 ||
+			   dmi_check_system(elantech_dmi_force_crc_enabled);
 
 	/* Enable real hardware resolution on hw_version 3 ? */
 	etd->set_hw_resolution = !dmi_check_system(no_hw_res_dmi_table);
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH 3.12 83/83] Input: elantech - add more Fujtisu notebooks to force crc_enabled
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (81 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 82/83] Input: elantech - fix crc_enabled for Fujitsu H730 Jiri Slaby
@ 2015-04-27 21:32 ` Jiri Slaby
  2015-04-28  0:32 ` [PATCH 3.12 00/83] 3.12.41-stable review Shuah Khan
  2015-04-28  1:43 ` Guenter Roeck
  84 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-27 21:32 UTC (permalink / raw)
  To: stable; +Cc: linux-kernel, Rainer Koenig, Dmitry Torokhov, Jiri Slaby

From: Rainer Koenig <Rainer.Koenig@ts.fujitsu.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 47c1ffb2b6b630894e9a16442611c056ab21c057 upstream.

Add two more Fujitsu LIFEBOOK models that also ship with the Elantech
touchpad and don't work with crc_disabled to the quirk list.

Signed-off-by: Rainer Koenig <Rainer.Koenig@ts.fujitsu.com>
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/input/mouse/elantech.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
index 4bee236927f9..0ec8604aadcf 100644
--- a/drivers/input/mouse/elantech.c
+++ b/drivers/input/mouse/elantech.c
@@ -1018,6 +1018,8 @@ static int elantech_get_resolution_v4(struct psmouse *psmouse,
  * Asus UX31               0x361f00        20, 15, 0e      clickpad
  * Asus UX32VD             0x361f02        00, 15, 0e      clickpad
  * Avatar AVIU-145A2       0x361f00        ?               clickpad
+ * Fujitsu LIFEBOOK E544   0x470f00        d0, 12, 09      2 hw buttons
+ * Fujitsu LIFEBOOK E554   0x570f01        40, 14, 0c      2 hw buttons
  * Gigabyte U2442          0x450f01        58, 17, 0c      2 hw buttons
  * Lenovo L430             0x350f02        b9, 15, 0c      2 hw buttons (*)
  * Samsung NF210           0x150b00        78, 14, 0a      2 hw buttons
@@ -1368,6 +1370,20 @@ static const struct dmi_system_id elantech_dmi_force_crc_enabled[] = {
 			DMI_MATCH(DMI_PRODUCT_NAME, "CELSIUS H730"),
 		},
 	},
+	{
+		/* Fujitsu LIFEBOOK E554  does not work with crc_enabled == 0 */
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK E554"),
+		},
+	},
+	{
+		/* Fujitsu LIFEBOOK E544  does not work with crc_enabled == 0 */
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK E544"),
+		},
+	},
 #endif
 	{ }
 };
-- 
2.3.5


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* Re: [PATCH 3.12 00/83] 3.12.41-stable review
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (82 preceding siblings ...)
  2015-04-27 21:32 ` [PATCH 3.12 83/83] Input: elantech - add more Fujtisu notebooks to force crc_enabled Jiri Slaby
@ 2015-04-28  0:32 ` Shuah Khan
  2015-04-30 12:11   ` Jiri Slaby
  2015-04-28  1:43 ` Guenter Roeck
  84 siblings, 1 reply; 87+ messages in thread
From: Shuah Khan @ 2015-04-28  0:32 UTC (permalink / raw)
  To: Jiri Slaby, stable; +Cc: linux, shuah.kh, linux-kernel

On 04/27/2015 03:31 PM, Jiri Slaby wrote:
> This is the start of the stable review cycle for the 3.12.41 release.
> There are 83 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Wed Apr 29 20:39:50 CEST 2015.
> Anything received after that time might be too late.
> 
> The whole patch series can be found in one patch at:
> 	http://kernel.org/pub/linux/kernel/people/jirislaby/stable-review/patch-3.12.41-rc1.xz
> and the diffstat can be found below.
> 
> thanks,
> js
> 

Compiled and booted on my test system. No dmesg regressions.

-- Shuah

-- 
Shuah Khan
Sr. Linux Kernel Developer
Open Source Innovation Group
Samsung Research America (Silicon Valley)
shuahkh@osg.samsung.com | (970) 217-8978

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH 3.12 00/83] 3.12.41-stable review
  2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
                   ` (83 preceding siblings ...)
  2015-04-28  0:32 ` [PATCH 3.12 00/83] 3.12.41-stable review Shuah Khan
@ 2015-04-28  1:43 ` Guenter Roeck
  84 siblings, 0 replies; 87+ messages in thread
From: Guenter Roeck @ 2015-04-28  1:43 UTC (permalink / raw)
  To: Jiri Slaby, stable; +Cc: shuah.kh, linux-kernel

On 04/27/2015 02:31 PM, Jiri Slaby wrote:
> This is the start of the stable review cycle for the 3.12.41 release.
> There are 83 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Wed Apr 29 20:39:50 CEST 2015.
> Anything received after that time might be too late.
>
Build results:
	total: 125 pass: 124 fail: 1
Failed builds:
	arm64:allmodconfig

Qemu test results:
	total: 27 pass: 27 fail: 0

Results are as expected.
Details are available at http://server.roeck-us.net:8010/builders.

Guenter


^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH 3.12 00/83] 3.12.41-stable review
  2015-04-28  0:32 ` [PATCH 3.12 00/83] 3.12.41-stable review Shuah Khan
@ 2015-04-30 12:11   ` Jiri Slaby
  0 siblings, 0 replies; 87+ messages in thread
From: Jiri Slaby @ 2015-04-30 12:11 UTC (permalink / raw)
  To: Shuah Khan, stable; +Cc: linux, shuah.kh, linux-kernel

On 04/28/2015, 02:32 AM, Shuah Khan wrote:
> Compiled and booted on my test system. No dmesg regressions.

On 04/28/2015, 03:43 AM, Guenter Roeck wrote:
> Build results:
>     total: 125 pass: 124 fail: 1
> Failed builds:
>     arm64:allmodconfig
>
> Qemu test results:
>     total: 27 pass: 27 fail: 0
>
> Results are as expected.
> Details are available at http://server.roeck-us.net:8010/builders.

Thank you both!

-- 
js
suse labs

^ permalink raw reply	[flat|nested] 87+ messages in thread

end of thread, other threads:[~2015-04-30 12:11 UTC | newest]

Thread overview: 87+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-27 21:31 [PATCH 3.12 00/83] 3.12.41-stable review Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 01/83] core, nfqueue, openvswitch: fix compilation warning Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 02/83] arm64: Use the reserved TTBR0 if context switching to the init_mm Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 03/83] powerpc/pseries: Little endian fixes for post mobility device tree update Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 04/83] net: ethernet: pcnet32: Setup the SRAM and NOUFLO on Am79C97{3, 5} Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 05/83] mfd: kempld-core: Fix callback return value check Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 06/83] x86/reboot: Remove the duplicate C6100 entry in the reboot quirks list Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 07/83] x86/reboot: Sort reboot DMI quirks by vendor Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 08/83] x86/reboot: Add reboot quirk for Certec BPC600 Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 09/83] n_tty: Merge .receive_buf() flavors Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 10/83] conditionally define U32_MAX Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 11/83] kernel.h: define u8, s8, u32, etc. limits Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 12/83] remove extra definitions of U32_MAX Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 13/83] ALSA: hda - Add one more node in the EAPD supporting candidate list Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 14/83] ALSA: usb - Creative USB X-Fi Pro SB1095 volume knob support Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 15/83] ALSA: hda/realtek - Make more stable to get pin sense for ALC283 Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 16/83] ALSA: hda - Fix headphone pin config for Lifebook T731 Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 17/83] ARC: SA_SIGINFO ucontext regs off-by-one Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 18/83] selinux: fix sel_write_enforce broken return value Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 19/83] tcp: Fix crash in TCP Fast Open Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 20/83] IB/uverbs: Prevent integer overflow in ib_umem_get address arithmetic Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 21/83] iwlwifi: dvm: run INIT firmware again upon .start() Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 22/83] nbd: fix possible memory leak Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 23/83] mm/memory hotplug: postpone the reset of obsolete pgdat Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 24/83] sched: Fix RLIMIT_RTTIME when PI-boosting to RT Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 25/83] writeback: add missing INITIAL_JIFFIES init in global_update_bandwidth() Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 26/83] writeback: fix possible underflow in write bandwidth calculation Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 27/83] radeon: Do not directly dereference pointers to BIOS area Jiri Slaby
2015-04-27 21:31 ` [PATCH 3.12 28/83] USB: ftdi_sio: Added custom PID for Synapse Wireless product Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 29/83] USB: ftdi_sio: Use jtag quirk for SNAP Connect E10 Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 30/83] Defer processing of REQ_PREEMPT requests for blocked devices Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 31/83] iio: inv_mpu6050: Clear timestamps fifo while resetting hardware fifo Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 32/83] iio: imu: Use iio_trigger_get for indio_dev->trig assignment Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 33/83] dmaengine: omap-dma: Fix memory leak when terminating running transfer Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 34/83] x86/reboot: Add ASRock Q1900DC-ITX mainboard reboot quirk Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 35/83] can: flexcan: Deferred on Regulator return EPROBE_DEFER Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 36/83] usb: xhci: handle Config Error Change (CEC) in xhci driver Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 37/83] usb: xhci: apply XHCI_AVOID_BEI quirk to all Intel xHCI controllers Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 38/83] tty: serial: fsl_lpuart: clear receive flag on FIFO flush Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 39/83] n_tty: Fix read buffer overwrite when no newline Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 40/83] cifs: fix use-after-free bug in find_writable_file Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 41/83] be2iscsi: Fix kernel panic when device initialization fails Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 42/83] ocfs2: _really_ sync the right range Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 43/83] ioctx_alloc(): fix vma (and file) leak on failure Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 44/83] iscsi target: fix oops when adding reject pdu Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 45/83] sh_veu: v4l2_dev wasn't set Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 46/83] media: s5p-mfc: fix mmap support for 64bit arch Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 47/83] net: rds: use correct size for max unacked packets and bytes Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 48/83] net: llc: use correct size for sysctl timeout entries Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 49/83] IB/mlx4: Saturate RoCE port PMA counters in case of overflow Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 50/83] [media] drivers: media: usb: b2c2: use usb_*_coherent() instead of pci_*_consistent() in flexcop-usb.c Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 51/83] video: vgacon: Don't build on arm64 Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 52/83] tcp: prevent fetching dst twice in early demux code Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 53/83] ipv6: Don't reduce hop limit for an interface Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 54/83] tcp: fix FRTO undo on cumulative ACK of SACKed range Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 55/83] tcp: tcp_make_synack() should clear skb->tstamp Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 56/83] 8139cp: Call dev_kfree_skby_any instead of kfree_skb Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 57/83] 8139too: Call dev_kfree_skby_any instead of dev_kfree_skb Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 58/83] r8169: " Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 59/83] bonding: Call dev_kfree_skby_any instead of kfree_skb Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 60/83] bnx2: Call dev_kfree_skby_any instead of dev_kfree_skb Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 61/83] tg3: " Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 62/83] ixgb: " Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 63/83] benet: Call dev_kfree_skby_any instead of kfree_skb Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 64/83] crypto: testmgr - fix 3.12.40 regression Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 65/83] sb_edac: Fix erroneous bytes->gigabytes conversion Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 66/83] sb_edac: avoid INTERNAL ERROR message in EDAC with unspecified channel Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 67/83] cpufreq: fix a NULL pointer dereference in __cpufreq_governor() Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 68/83] libata: Blacklist queued TRIM on Samsung SSD 850 Pro Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 69/83] nick kvfree() from apparmor Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 70/83] KVM: remove redundant assignments in __kvm_set_memory_region Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 71/83] kvm: commonize allocation of the new memory slots Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 72/83] kvm: avoid page allocation failure in kvm_set_memory_region() Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 73/83] Input: sirfsoc-onkey - fix GPL v2 license string typo Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 74/83] Input: twl4030-pwrbutton - ensure a wakeup event is recorded Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 75/83] Bluetooth: ath3k: Add support of MCI 13d3:3408 bt device Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 76/83] Bluetooth: ath3k: Add support of AR3012 bluetooth 13d3:3423 device Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 77/83] Bluetooth: Add USB device 04ca:3010 as Atheros AR3012 Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 78/83] netfilter: conntrack: disable generic tracking for known protocols Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 79/83] KVM: x86: SYSENTER emulation is broken Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 80/83] mm: softdirty: unmapped addresses between VMAs are clean Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 81/83] proc/pagemap: walk page tables under pte lock Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 82/83] Input: elantech - fix crc_enabled for Fujitsu H730 Jiri Slaby
2015-04-27 21:32 ` [PATCH 3.12 83/83] Input: elantech - add more Fujtisu notebooks to force crc_enabled Jiri Slaby
2015-04-28  0:32 ` [PATCH 3.12 00/83] 3.12.41-stable review Shuah Khan
2015-04-30 12:11   ` Jiri Slaby
2015-04-28  1:43 ` Guenter Roeck

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).