]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 11 Oct 2013 00:02:16 +0000 (17:02 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 11 Oct 2013 00:02:16 +0000 (17:02 -0700)
added patches:
can-flexcan-fix-flexcan_chip_start-on-imx6.patch
ib_srpt-always-set-response-for-task-management.patch
ib_srpt-destroy-cm_id-before-destroying-qp.patch
p54usb-add-usb-id-for-corega-wlusb2gtst-usb-adapter.patch
rtlwifi-align-private-space-in-rtl_priv-struct.patch

queue-3.4/can-flexcan-fix-flexcan_chip_start-on-imx6.patch [new file with mode: 0644]
queue-3.4/ib_srpt-always-set-response-for-task-management.patch [new file with mode: 0644]
queue-3.4/ib_srpt-destroy-cm_id-before-destroying-qp.patch [new file with mode: 0644]
queue-3.4/p54usb-add-usb-id-for-corega-wlusb2gtst-usb-adapter.patch [new file with mode: 0644]
queue-3.4/rtlwifi-align-private-space-in-rtl_priv-struct.patch [new file with mode: 0644]
queue-3.4/series

diff --git a/queue-3.4/can-flexcan-fix-flexcan_chip_start-on-imx6.patch b/queue-3.4/can-flexcan-fix-flexcan_chip_start-on-imx6.patch
new file mode 100644 (file)
index 0000000..4a99563
--- /dev/null
@@ -0,0 +1,54 @@
+From 0d1862ea1a5bb876cf05555a7307080cb75bf379 Mon Sep 17 00:00:00 2001
+From: Marc Kleine-Budde <mkl@pengutronix.de>
+Date: Fri, 27 Sep 2013 12:15:05 +0200
+Subject: can: flexcan: fix flexcan_chip_start() on imx6
+
+From: Marc Kleine-Budde <mkl@pengutronix.de>
+
+commit 0d1862ea1a5bb876cf05555a7307080cb75bf379 upstream.
+
+In the flexcan_chip_start() function first the flexcan core is going through
+the soft reset sequence, then the RX FIFO is enabled.
+
+With the hardware is put into FIFO mode, message buffers 1...7 are reserved by
+the FIFO engine. The remaining message buffers are in reset default values.
+This patch removes the bogus initialization of the message buffers, as it
+causes an imprecise external abort on imx6.
+
+Reported-by: Lothar Waßmann <LW@KARO-electronics.de>
+Tested-by: Lothar Waßmann <LW@KARO-electronics.de>
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/can/flexcan.c |   12 ------------
+ 1 file changed, 12 deletions(-)
+
+--- a/drivers/net/can/flexcan.c
++++ b/drivers/net/can/flexcan.c
+@@ -667,7 +667,6 @@ static int flexcan_chip_start(struct net
+ {
+       struct flexcan_priv *priv = netdev_priv(dev);
+       struct flexcan_regs __iomem *regs = priv->base;
+-      unsigned int i;
+       int err;
+       u32 reg_mcr, reg_ctrl;
+@@ -733,17 +732,6 @@ static int flexcan_chip_start(struct net
+       netdev_dbg(dev, "%s: writing ctrl=0x%08x", __func__, reg_ctrl);
+       flexcan_write(reg_ctrl, &regs->ctrl);
+-      for (i = 0; i < ARRAY_SIZE(regs->cantxfg); i++) {
+-              flexcan_write(0, &regs->cantxfg[i].can_ctrl);
+-              flexcan_write(0, &regs->cantxfg[i].can_id);
+-              flexcan_write(0, &regs->cantxfg[i].data[0]);
+-              flexcan_write(0, &regs->cantxfg[i].data[1]);
+-
+-              /* put MB into rx queue */
+-              flexcan_write(FLEXCAN_MB_CNT_CODE(0x4),
+-                      &regs->cantxfg[i].can_ctrl);
+-      }
+-
+       /* acceptance mask/acceptance code (accept everything) */
+       flexcan_write(0x0, &regs->rxgmask);
+       flexcan_write(0x0, &regs->rx14mask);
diff --git a/queue-3.4/ib_srpt-always-set-response-for-task-management.patch b/queue-3.4/ib_srpt-always-set-response-for-task-management.patch
new file mode 100644 (file)
index 0000000..a8810d0
--- /dev/null
@@ -0,0 +1,53 @@
+From c807f64340932e19f0d2ac9b30c8381e1f60663a Mon Sep 17 00:00:00 2001
+From: Jack Wang <jinpu.wang@profitbricks.com>
+Date: Mon, 30 Sep 2013 10:09:05 +0200
+Subject: ib_srpt: always set response for task management
+
+From: Jack Wang <jinpu.wang@profitbricks.com>
+
+commit c807f64340932e19f0d2ac9b30c8381e1f60663a upstream.
+
+The SRP specification requires:
+
+  "Response data shall be provided in any SRP_RSP response that is sent in
+   response to an SRP_TSK_MGMT request (see 6.7). The information in the
+   RSP_CODE field (see table 24) shall indicate the completion status of
+   the task management function."
+
+So fix this to avoid the SRP initiator interprets task management functions
+that succeeded as failed.
+
+Signed-off-by: Jack Wang <jinpu.wang@profitbricks.com>
+Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/infiniband/ulp/srpt/ib_srpt.c |   10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+--- a/drivers/infiniband/ulp/srpt/ib_srpt.c
++++ b/drivers/infiniband/ulp/srpt/ib_srpt.c
+@@ -1610,7 +1610,7 @@ static int srpt_build_tskmgmt_rsp(struct
+       int resp_data_len;
+       int resp_len;
+-      resp_data_len = (rsp_code == SRP_TSK_MGMT_SUCCESS) ? 0 : 4;
++      resp_data_len = 4;
+       resp_len = sizeof(*srp_rsp) + resp_data_len;
+       srp_rsp = ioctx->ioctx.buf;
+@@ -1622,11 +1622,9 @@ static int srpt_build_tskmgmt_rsp(struct
+                                   + atomic_xchg(&ch->req_lim_delta, 0));
+       srp_rsp->tag = tag;
+-      if (rsp_code != SRP_TSK_MGMT_SUCCESS) {
+-              srp_rsp->flags |= SRP_RSP_FLAG_RSPVALID;
+-              srp_rsp->resp_data_len = cpu_to_be32(resp_data_len);
+-              srp_rsp->data[3] = rsp_code;
+-      }
++      srp_rsp->flags |= SRP_RSP_FLAG_RSPVALID;
++      srp_rsp->resp_data_len = cpu_to_be32(resp_data_len);
++      srp_rsp->data[3] = rsp_code;
+       return resp_len;
+ }
diff --git a/queue-3.4/ib_srpt-destroy-cm_id-before-destroying-qp.patch b/queue-3.4/ib_srpt-destroy-cm_id-before-destroying-qp.patch
new file mode 100644 (file)
index 0000000..8ce5504
--- /dev/null
@@ -0,0 +1,53 @@
+From 0b41d6ca616ddeb3b6c0a80e8770b6f53cd42806 Mon Sep 17 00:00:00 2001
+From: Nicholas Bellinger <nab@linux-iscsi.org>
+Date: Wed, 18 Sep 2013 12:48:27 -0700
+Subject: ib_srpt: Destroy cm_id before destroying QP.
+
+From: Nicholas Bellinger <nab@linux-iscsi.org>
+
+commit 0b41d6ca616ddeb3b6c0a80e8770b6f53cd42806 upstream.
+
+This patch fixes a bug where ib_destroy_cm_id() was incorrectly being called
+after srpt_destroy_ch_ib() had destroyed the active QP.
+
+This would result in the following failed SRP_LOGIN_REQ messages:
+
+Received SRP_LOGIN_REQ with i_port_id 0x0:0x2590ffff1762bd, t_port_id 0x2c903009f8f40:0x2c903009f8f40 and it_iu_len 260 on port 1 (guid=0xfe80000000000000:0x2c903009f8f41)
+Received SRP_LOGIN_REQ with i_port_id 0x0:0x2590ffff1758f9, t_port_id 0x2c903009f8f40:0x2c903009f8f40 and it_iu_len 260 on port 2 (guid=0xfe80000000000000:0x2c903009f8f42)
+Received SRP_LOGIN_REQ with i_port_id 0x0:0x2590ffff175941, t_port_id 0x2c903009f8f40:0x2c903009f8f40 and it_iu_len 260 on port 2 (guid=0xfe80000000000000:0x2c90300a3cfb2)
+Received SRP_LOGIN_REQ with i_port_id 0x0:0x2590ffff176299, t_port_id 0x2c903009f8f40:0x2c903009f8f40 and it_iu_len 260 on port 1 (guid=0xfe80000000000000:0x2c90300a3cfb1)
+mlx4_core 0000:84:00.0: command 0x19 failed: fw status = 0x9
+rejected SRP_LOGIN_REQ because creating a new RDMA channel failed.
+Received SRP_LOGIN_REQ with i_port_id 0x0:0x2590ffff176299, t_port_id 0x2c903009f8f40:0x2c903009f8f40 and it_iu_len 260 on port 1 (guid=0xfe80000000000000:0x2c90300a3cfb1)
+mlx4_core 0000:84:00.0: command 0x19 failed: fw status = 0x9
+rejected SRP_LOGIN_REQ because creating a new RDMA channel failed.
+Received SRP_LOGIN_REQ with i_port_id 0x0:0x2590ffff176299, t_port_id 0x2c903009f8f40:0x2c903009f8f40 and it_iu_len 260 on port 1 (guid=0xfe80000000000000:0x2c90300a3cfb1)
+
+Reported-by: Navin Ahuja <navin.ahuja@saratoga-speed.com>
+Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/infiniband/ulp/srpt/ib_srpt.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/infiniband/ulp/srpt/ib_srpt.c
++++ b/drivers/infiniband/ulp/srpt/ib_srpt.c
+@@ -2373,6 +2373,8 @@ static void srpt_release_channel_work(st
+       transport_deregister_session(ch->sess);
+       ch->sess = NULL;
++      ib_destroy_cm_id(ch->cm_id);
++
+       srpt_destroy_ch_ib(ch);
+       srpt_free_ioctx_ring((struct srpt_ioctx **)ch->ioctx_ring,
+@@ -2383,8 +2385,6 @@ static void srpt_release_channel_work(st
+       list_del(&ch->list);
+       spin_unlock_irq(&sdev->spinlock);
+-      ib_destroy_cm_id(ch->cm_id);
+-
+       if (ch->release_done)
+               complete(ch->release_done);
diff --git a/queue-3.4/p54usb-add-usb-id-for-corega-wlusb2gtst-usb-adapter.patch b/queue-3.4/p54usb-add-usb-id-for-corega-wlusb2gtst-usb-adapter.patch
new file mode 100644 (file)
index 0000000..eebe8b1
--- /dev/null
@@ -0,0 +1,30 @@
+From 1e43692cdb7cc445d6347d8a5207d9cef0c71434 Mon Sep 17 00:00:00 2001
+From: Christian Lamparter <chunkeey@googlemail.com>
+Date: Tue, 24 Sep 2013 21:56:46 +0200
+Subject: p54usb: add USB ID for Corega WLUSB2GTST USB adapter
+
+From: Christian Lamparter <chunkeey@googlemail.com>
+
+commit 1e43692cdb7cc445d6347d8a5207d9cef0c71434 upstream.
+
+Added USB ID for Corega WLUSB2GTST USB adapter.
+
+Reported-by: Joerg Kalisch <the_force@gmx.de>
+Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/p54/p54usb.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/wireless/p54/p54usb.c
++++ b/drivers/net/wireless/p54/p54usb.c
+@@ -83,6 +83,7 @@ static struct usb_device_id p54u_table[]
+       {USB_DEVICE(0x06a9, 0x000e)},   /* Westell 802.11g USB (A90-211WG-01) */
+       {USB_DEVICE(0x06b9, 0x0121)},   /* Thomson SpeedTouch 121g */
+       {USB_DEVICE(0x0707, 0xee13)},   /* SMC 2862W-G version 2 */
++      {USB_DEVICE(0x07aa, 0x0020)},   /* Corega WLUSB2GTST USB */
+       {USB_DEVICE(0x0803, 0x4310)},   /* Zoom 4410a */
+       {USB_DEVICE(0x083a, 0x4521)},   /* Siemens Gigaset USB Adapter 54 version 2 */
+       {USB_DEVICE(0x083a, 0x4531)},   /* T-Com Sinus 154 data II */
diff --git a/queue-3.4/rtlwifi-align-private-space-in-rtl_priv-struct.patch b/queue-3.4/rtlwifi-align-private-space-in-rtl_priv-struct.patch
new file mode 100644 (file)
index 0000000..e5f798f
--- /dev/null
@@ -0,0 +1,35 @@
+From 60ce314d1750fef843e9db70050e09e49f838b69 Mon Sep 17 00:00:00 2001
+From: Larry Finger <Larry.Finger@lwfinger.net>
+Date: Wed, 18 Sep 2013 21:21:35 -0500
+Subject: rtlwifi: Align private space in rtl_priv struct
+
+From: Larry Finger <Larry.Finger@lwfinger.net>
+
+commit 60ce314d1750fef843e9db70050e09e49f838b69 upstream.
+
+The private array at the end of the rtl_priv struct is not aligned.
+On ARM architecture, this causes an alignment trap and is fixed by aligning
+that array with __align(sizeof(void *)). That should properly align that
+space according to the requirements of all architectures.
+
+Reported-by: Jason Andrews <jasona@cadence.com>
+Tested-by: Jason Andrews <jasona@cadence.com>
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/rtlwifi/wifi.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/rtlwifi/wifi.h
++++ b/drivers/net/wireless/rtlwifi/wifi.h
+@@ -1638,7 +1638,7 @@ struct rtl_priv {
+          that it points to the data allocated
+          beyond  this structure like:
+          rtl_pci_priv or rtl_usb_priv */
+-      u8 priv[0];
++      u8 priv[0] __aligned(sizeof(void *));
+ };
+ #define rtl_priv(hw)          (((struct rtl_priv *)(hw)->priv))
index 2006b536c8187cefe18fc8b78882b6039fa1b95a..efc249a0f5c91a7a8c35b58f6cab66f1a88e8882 100644 (file)
@@ -33,3 +33,8 @@ sparc64-fix-not-sra-ed-o5-in-32-bit-traced-syscall.patch
 sparc32-fix-exit-flag-passed-from-traced-sys_sigreturn.patch
 kernel-kmod.c-check-for-null-in-call_usermodehelper_exec.patch
 usb-serial-option-ignore-card-reader-interface-on-huawei-e1750.patch
+ib_srpt-destroy-cm_id-before-destroying-qp.patch
+ib_srpt-always-set-response-for-task-management.patch
+rtlwifi-align-private-space-in-rtl_priv-struct.patch
+p54usb-add-usb-id-for-corega-wlusb2gtst-usb-adapter.patch
+can-flexcan-fix-flexcan_chip_start-on-imx6.patch