]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Jun 2015 01:50:06 +0000 (10:50 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Jun 2015 01:50:06 +0000 (10:50 +0900)
added patches:
staging-gdm724x-correction-of-variable-usage-after-applying-align.patch

queue-3.14/series
queue-3.14/staging-gdm724x-correction-of-variable-usage-after-applying-align.patch [new file with mode: 0644]

index 169d643a756eb4acb4ee52d10380faa76230bc79..6e937d805828aa5d75bf33dbd73dc97beaaef7f0 100644 (file)
@@ -22,3 +22,4 @@ asoc-mc13783-fix-wrong-mask-value-used-in-mc13xxx_reg_rmw-calls.patch
 asoc-uda1380-avoid-accessing-i2c-bus-when-codec-is-disabled.patch
 asoc-wm8960-fix-rinput3-audio-route-error.patch
 asoc-wm8994-correct-bclk-div-348-to-384.patch
+staging-gdm724x-correction-of-variable-usage-after-applying-align.patch
diff --git a/queue-3.14/staging-gdm724x-correction-of-variable-usage-after-applying-align.patch b/queue-3.14/staging-gdm724x-correction-of-variable-usage-after-applying-align.patch
new file mode 100644 (file)
index 0000000..6a4c166
--- /dev/null
@@ -0,0 +1,90 @@
+From 892c89d5d7ffd1bb794fe54d86c0eef18d215fab Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?S=C5=82awomir=20Demeszko?=
+ <s.demeszko@wireless-instruments.com>
+Date: Tue, 5 May 2015 17:49:54 +0200
+Subject: staging: gdm724x: Correction of variable usage after applying ALIGN()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: =?UTF-8?q?S=C5=82awomir=20Demeszko?=
+
+commit 892c89d5d7ffd1bb794fe54d86c0eef18d215fab upstream.
+
+Fix regression introduced by commit <29ef8a53542a>. After it writing
+AT commands to /dev/GCT-ATM0 is unsuccessful (no echo, no response)
+and dmesg show "gdmtty: invalid payload : 1 16 f011".
+
+Before that commit value of dummy_cnt was only a padding size. After using
+ALIGN() this value is increased by its first argument. So the following
+usage of this variable needs correction.
+
+Signed-off-by: SÅ‚awomir Demeszko <s.demeszko@wireless-instruments.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/staging/gdm724x/gdm_mux.c |   16 +++++++---------
+ 1 file changed, 7 insertions(+), 9 deletions(-)
+
+--- a/drivers/staging/gdm724x/gdm_mux.c
++++ b/drivers/staging/gdm724x/gdm_mux.c
+@@ -158,7 +158,7 @@ static int up_to_host(struct mux_rx *r)
+       unsigned int start_flag;
+       unsigned int payload_size;
+       unsigned short packet_type;
+-      int dummy_cnt;
++      int total_len;
+       u32 packet_size_sum = r->offset;
+       int index;
+       int ret = TO_HOST_INVALID_PACKET;
+@@ -175,10 +175,10 @@ static int up_to_host(struct mux_rx *r)
+                       break;
+               }
+-              dummy_cnt = ALIGN(MUX_HEADER_SIZE + payload_size, 4);
++              total_len = ALIGN(MUX_HEADER_SIZE + payload_size, 4);
+               if (len - packet_size_sum <
+-                      MUX_HEADER_SIZE + payload_size + dummy_cnt) {
++                      total_len) {
+                       pr_err("invalid payload : %d %d %04x\n",
+                              payload_size, len, packet_type);
+                       break;
+@@ -201,7 +201,7 @@ static int up_to_host(struct mux_rx *r)
+                       break;
+               }
+-              packet_size_sum += MUX_HEADER_SIZE + payload_size + dummy_cnt;
++              packet_size_sum += total_len;
+               if (len - packet_size_sum <= MUX_HEADER_SIZE + 2) {
+                       ret = r->callback(NULL,
+                                       0,
+@@ -359,7 +359,6 @@ static int gdm_mux_send(void *priv_dev,
+       struct mux_pkt_header *mux_header;
+       struct mux_tx *t = NULL;
+       static u32 seq_num = 1;
+-      int dummy_cnt;
+       int total_len;
+       int ret;
+       unsigned long flags;
+@@ -372,9 +371,7 @@ static int gdm_mux_send(void *priv_dev,
+       spin_lock_irqsave(&mux_dev->write_lock, flags);
+-      dummy_cnt = ALIGN(MUX_HEADER_SIZE + len, 4);
+-
+-      total_len = len + MUX_HEADER_SIZE + dummy_cnt;
++      total_len = ALIGN(MUX_HEADER_SIZE + len, 4);
+       t = alloc_mux_tx(total_len);
+       if (!t) {
+@@ -390,7 +387,8 @@ static int gdm_mux_send(void *priv_dev,
+       mux_header->packet_type = __cpu_to_le16(packet_type[tty_index]);
+       memcpy(t->buf+MUX_HEADER_SIZE, data, len);
+-      memset(t->buf+MUX_HEADER_SIZE+len, 0, dummy_cnt);
++      memset(t->buf+MUX_HEADER_SIZE+len, 0, total_len - MUX_HEADER_SIZE -
++             len);
+       t->len = total_len;
+       t->callback = cb;