--- /dev/null
+From d7c146053dd195b90c79b9b8131431f44541d015 Mon Sep 17 00:00:00 2001
+From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
+Date: Wed, 18 Mar 2015 00:21:32 +0200
+Subject: of/irq: Fix of_irq_parse_one() returned error codes
+
+From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
+
+commit d7c146053dd195b90c79b9b8131431f44541d015 upstream.
+
+The error code paths that require cleanup use a goto to jump to the
+cleanup code and return an error code. However, the error code variable
+res, which is initialized to -EINVAL when declared, is then overwritten
+with the return value of of_parse_phandle_with_args(), and reused as the
+return code from of_irq_parse_one(). This leads to an undetermined error
+being returned instead of the expected -EINVAL value. Fix it.
+
+Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
+Signed-off-by: Rob Herring <robh@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/of/irq.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+--- a/drivers/of/irq.c
++++ b/drivers/of/irq.c
+@@ -290,7 +290,7 @@ int of_irq_parse_one(struct device_node
+ struct device_node *p;
+ const __be32 *intspec, *tmp, *addr;
+ u32 intsize, intlen;
+- int i, res = -EINVAL;
++ int i, res;
+
+ pr_debug("of_irq_parse_one: dev=%s, index=%d\n", of_node_full_name(device), index);
+
+@@ -323,15 +323,19 @@ int of_irq_parse_one(struct device_node
+
+ /* Get size of interrupt specifier */
+ tmp = of_get_property(p, "#interrupt-cells", NULL);
+- if (tmp == NULL)
++ if (tmp == NULL) {
++ res = -EINVAL;
+ goto out;
++ }
+ intsize = be32_to_cpu(*tmp);
+
+ pr_debug(" intsize=%d intlen=%d\n", intsize, intlen);
+
+ /* Check index */
+- if ((index + 1) * intsize > intlen)
++ if ((index + 1) * intsize > intlen) {
++ res = -EINVAL;
+ goto out;
++ }
+
+ /* Copy intspec into irq structure */
+ intspec += index * intsize;
--- /dev/null
+From d525211f9d1be8b523ec7633f080f2116f5ea536 Mon Sep 17 00:00:00 2001
+From: Peter Zijlstra <peterz@infradead.org>
+Date: Thu, 19 Feb 2015 18:03:11 +0100
+Subject: perf: Fix irq_work 'tail' recursion
+
+From: Peter Zijlstra <peterz@infradead.org>
+
+commit d525211f9d1be8b523ec7633f080f2116f5ea536 upstream.
+
+Vince reported a watchdog lockup like:
+
+ [<ffffffff8115e114>] perf_tp_event+0xc4/0x210
+ [<ffffffff810b4f8a>] perf_trace_lock+0x12a/0x160
+ [<ffffffff810b7f10>] lock_release+0x130/0x260
+ [<ffffffff816c7474>] _raw_spin_unlock_irqrestore+0x24/0x40
+ [<ffffffff8107bb4d>] do_send_sig_info+0x5d/0x80
+ [<ffffffff811f69df>] send_sigio_to_task+0x12f/0x1a0
+ [<ffffffff811f71ce>] send_sigio+0xae/0x100
+ [<ffffffff811f72b7>] kill_fasync+0x97/0xf0
+ [<ffffffff8115d0b4>] perf_event_wakeup+0xd4/0xf0
+ [<ffffffff8115d103>] perf_pending_event+0x33/0x60
+ [<ffffffff8114e3fc>] irq_work_run_list+0x4c/0x80
+ [<ffffffff8114e448>] irq_work_run+0x18/0x40
+ [<ffffffff810196af>] smp_trace_irq_work_interrupt+0x3f/0xc0
+ [<ffffffff816c99bd>] trace_irq_work_interrupt+0x6d/0x80
+
+Which is caused by an irq_work generating new irq_work and therefore
+not allowing forward progress.
+
+This happens because processing the perf irq_work triggers another
+perf event (tracepoint stuff) which in turn generates an irq_work ad
+infinitum.
+
+Avoid this by raising the recursion counter in the irq_work -- which
+effectively disables all software events (including tracepoints) from
+actually triggering again.
+
+Reported-by: Vince Weaver <vincent.weaver@maine.edu>
+Tested-by: Vince Weaver <vincent.weaver@maine.edu>
+Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
+Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
+Cc: Jiri Olsa <jolsa@redhat.com>
+Cc: Paul Mackerras <paulus@samba.org>
+Cc: Steven Rostedt <rostedt@goodmis.org>
+Link: http://lkml.kernel.org/r/20150219170311.GH21418@twins.programming.kicks-ass.net
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ kernel/events/core.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/kernel/events/core.c
++++ b/kernel/events/core.c
+@@ -4232,6 +4232,13 @@ static void perf_pending_event(struct ir
+ {
+ struct perf_event *event = container_of(entry,
+ struct perf_event, pending);
++ int rctx;
++
++ rctx = perf_swevent_get_recursion_context();
++ /*
++ * If we 'fail' here, that's OK, it means recursion is already disabled
++ * and we won't recurse 'further'.
++ */
+
+ if (event->pending_disable) {
+ event->pending_disable = 0;
+@@ -4242,6 +4249,9 @@ static void perf_pending_event(struct ir
+ event->pending_wakeup = 0;
+ perf_event_wakeup(event);
+ }
++
++ if (rctx >= 0)
++ perf_swevent_put_recursion_context(rctx);
+ }
+
+ /*
--- /dev/null
+From 2f1bce487cd0a02623cff3d877940f9a2026341c Mon Sep 17 00:00:00 2001
+From: Thierry Reding <treding@nvidia.com>
+Date: Wed, 25 Feb 2015 16:16:29 +0100
+Subject: phy: Find the right match in devm_phy_destroy()
+
+From: Thierry Reding <treding@nvidia.com>
+
+commit 2f1bce487cd0a02623cff3d877940f9a2026341c upstream.
+
+devm_phy_create() stores the pointer to the new PHY at the address
+returned by devres_alloc(). The res parameter passed to devm_phy_match()
+is therefore the location where the pointer to the PHY is stored, hence
+it needs to be dereferenced before comparing to the match data in order
+to find the correct match.
+
+Signed-off-by: Thierry Reding <treding@nvidia.com>
+Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/phy/phy-core.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/phy/phy-core.c
++++ b/drivers/phy/phy-core.c
+@@ -50,7 +50,9 @@ static void devm_phy_consume(struct devi
+
+ static int devm_phy_match(struct device *dev, void *res, void *match_data)
+ {
+- return res == match_data;
++ struct phy **phy = res;
++
++ return *phy == match_data;
+ }
+
+ static struct phy *phy_lookup(struct device *device, const char *port)
mac80211-disable-u-apsd-queues-by-default.patch
mac80211-drop-unencrypted-frames-in-mesh-fwding.patch
revert-iwlwifi-mvm-fix-failure-path-when-power_update.patch
+phy-find-the-right-match-in-devm_phy_destroy.patch
+of-irq-fix-of_irq_parse_one-returned-error-codes.patch
+perf-fix-irq_work-tail-recursion.patch
+staging-vt6656-vnt_rf_setpower-fix-missing-rate-rate_12m.patch
+vt6655-rfbsetpower-fix-missing-rate-rate_12m.patch
--- /dev/null
+From 163fe301b9f78b6de57d0014eafe504fd20c0cd4 Mon Sep 17 00:00:00 2001
+From: Malcolm Priestley <tvboxspy@gmail.com>
+Date: Sat, 7 Mar 2015 16:36:37 +0000
+Subject: staging: vt6656: vnt_rf_setpower: fix missing rate RATE_12M
+
+From: Malcolm Priestley <tvboxspy@gmail.com>
+
+commit 163fe301b9f78b6de57d0014eafe504fd20c0cd4 upstream.
+
+When the driver sets this rate a power of zero value is set causing
+data flow stoppage until another rate is tried.
+
+Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/staging/vt6656/rf.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/staging/vt6656/rf.c
++++ b/drivers/staging/vt6656/rf.c
+@@ -752,6 +752,7 @@ int RFbSetPower(struct vnt_private *priv
+ break;
+ case RATE_6M:
+ case RATE_9M:
++ case RATE_12M:
+ case RATE_18M:
+ case RATE_24M:
+ case RATE_36M:
--- /dev/null
+From 40c8790bcb7ac74f3038153cd09310e220c6a1df Mon Sep 17 00:00:00 2001
+From: Malcolm Priestley <tvboxspy@gmail.com>
+Date: Sat, 7 Mar 2015 17:04:54 +0000
+Subject: vt6655: RFbSetPower fix missing rate RATE_12M
+
+From: Malcolm Priestley <tvboxspy@gmail.com>
+
+commit 40c8790bcb7ac74f3038153cd09310e220c6a1df upstream.
+
+When the driver sets this rate a power of zero value is set causing
+data flow stoppage until another rate is tried.
+
+Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/staging/vt6655/rf.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/staging/vt6655/rf.c
++++ b/drivers/staging/vt6655/rf.c
+@@ -936,6 +936,7 @@ bool RFbSetPower(
+ break;
+ case RATE_6M:
+ case RATE_9M:
++ case RATE_12M:
+ case RATE_18M:
+ byPwr = pDevice->abyOFDMPwrTbl[uCH];
+ if (pDevice->byRFType == RF_UW2452) {