aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@oracle.com>2015-03-17 05:17:28 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-03-26 18:00:36 -0400
commita666b54adabc7dd40d754671a26996e6c985ae1b (patch)
treeeafdaa1b060e9455efeda541e5feb783f996d764
parent136debf707d2b3cd8e74d0fff8e29d11a78bf5c2 (diff)
serial: jsm: some off by one bugs
"brd->nasync" amd "brd->maxports" are the same. They hold the number of filled out channels in the brd->channels[] array. These tests should be ">=" instead of ">" so that we don't read one element past the end. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Acked-by: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/tty/serial/jsm/jsm_cls.c2
-rw-r--r--drivers/tty/serial/jsm/jsm_neo.c6
2 files changed, 4 insertions, 4 deletions
diff --git a/drivers/tty/serial/jsm/jsm_cls.c b/drivers/tty/serial/jsm/jsm_cls.c
index bfb0681195b6..4eb12a9cae76 100644
--- a/drivers/tty/serial/jsm/jsm_cls.c
+++ b/drivers/tty/serial/jsm/jsm_cls.c
@@ -570,7 +570,7 @@ static inline void cls_parse_isr(struct jsm_board *brd, uint port)
570 * verified in the interrupt routine. 570 * verified in the interrupt routine.
571 */ 571 */
572 572
573 if (port > brd->nasync) 573 if (port >= brd->nasync)
574 return; 574 return;
575 575
576 ch = brd->channels[port]; 576 ch = brd->channels[port];
diff --git a/drivers/tty/serial/jsm/jsm_neo.c b/drivers/tty/serial/jsm/jsm_neo.c
index 7291c2117daa..932b2accd06f 100644
--- a/drivers/tty/serial/jsm/jsm_neo.c
+++ b/drivers/tty/serial/jsm/jsm_neo.c
@@ -724,7 +724,7 @@ static inline void neo_parse_isr(struct jsm_board *brd, u32 port)
724 if (!brd) 724 if (!brd)
725 return; 725 return;
726 726
727 if (port > brd->maxports) 727 if (port >= brd->maxports)
728 return; 728 return;
729 729
730 ch = brd->channels[port]; 730 ch = brd->channels[port];
@@ -840,7 +840,7 @@ static inline void neo_parse_lsr(struct jsm_board *brd, u32 port)
840 if (!brd) 840 if (!brd)
841 return; 841 return;
842 842
843 if (port > brd->maxports) 843 if (port >= brd->maxports)
844 return; 844 return;
845 845
846 ch = brd->channels[port]; 846 ch = brd->channels[port];
@@ -1180,7 +1180,7 @@ static irqreturn_t neo_intr(int irq, void *voidbrd)
1180 */ 1180 */
1181 1181
1182 /* Verify the port is in range. */ 1182 /* Verify the port is in range. */
1183 if (port > brd->nasync) 1183 if (port >= brd->nasync)
1184 continue; 1184 continue;
1185 1185
1186 ch = brd->channels[port]; 1186 ch = brd->channels[port];