public inbox for speakup@linux-speakup.org
 help / color / mirror / Atom feed
* [PATCH] Staging: speakup: Fix getting port information
@  Samuel Thibault
   ` Samuel Thibault
  0 siblings, 1 reply; 9+ messages in thread
From: Samuel Thibault @  UTC (permalink / raw)
  To: Dan Carpenter, William Hubbs, Chris Brannon, Kirk Reiser,
	Melike Yurtoglu, Greg Kroah-Hartman
  Cc: speakup, devel, linux-kernel

Commit f79b0d9c223c ("staging: speakup: Fixed warning <linux/serial.h>
instead of <asm/serial.h>") broke the port information in the speakup
driver: SERIAL_PORT_DFNS only gets defined if asm/serial.h is included,
and no other header includes asm/serial.h.

We here make sure serialio.c does get the arch-specific definition of
SERIAL_PORT_DFNS from asm/serial.h, if any.

Along the way, this makes sure that we do have information for the
requested serial port number (index)

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Fixes: f79b0d9c223c ("staging: speakup: Fixed warning <linux/serial.h> instead of <asm/serial.h>")

--- a/drivers/staging/speakup/serialio.c
+++ b/drivers/staging/speakup/serialio.c
@@ -6,6 +6,11 @@
 #include "spk_priv.h"
 #include "serialio.h"
 
+#include <linux/serial_core.h>
+/* WARNING:  Do not change this to <linux/serial.h> without testing that
+ * SERIAL_PORT_DFNS does get defined to the appropriate value. */
+#include <asm/serial.h>
+
 #ifndef SERIAL_PORT_DFNS
 #define SERIAL_PORT_DFNS
 #endif
@@ -23,9 +28,15 @@ const struct old_serial_port *spk_serial
 	int baud = 9600, quot = 0;
 	unsigned int cval = 0;
 	int cflag = CREAD | HUPCL | CLOCAL | B9600 | CS8;
-	const struct old_serial_port *ser = rs_table + index;
+	const struct old_serial_port *ser;
 	int err;
 
+	if (index >= ARRAY_SIZE(rs_table)) {
+		pr_info("no port info for ttyS%d\n", index);
+		return NULL;
+	}
+	ser = rs_table + index;
+
 	/*	Divisor, bytesize and parity */
 	quot = ser->baud_base / baud;
 	cval = cflag & (CSIZE | CSTOPB);

^ permalink raw reply	[flat|nested] 9+ messages in thread
* [PATCH] Staging: speakup: Fix getting port information
@  Samuel Thibault
  0 siblings, 0 replies; 9+ messages in thread
From: Samuel Thibault @  UTC (permalink / raw)
  To: William Hubbs, Chris Brannon, Kirk Reiser, Melike Yurtoglu,
	Greg Kroah-Hartman, speakup, devel, linux-kernel

Patch f79b0d9c223c ("staging: speakup: Fixed warning <linux/serial.h>
instead of <asm/serial.h>") broke the port information in the speakup
driver: SERIAL_PORT_DFNS only gets defined if asm/serial.h is included,
and no other header includes asm/serial.h.

We here make sure serialio.c does get the arch-specific definition of
SERIAL_PORT_DFNS from asm/serial.h, if any.

Along the way, this makes sure that we do have information for the
requested serial port number (index)

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Fixes: f79b0d9c223c ("staging: speakup: Fixed warning <linux/serial.h> instead of <asm/serial.h>")

--- a/drivers/staging/speakup/serialio.c
+++ b/drivers/staging/speakup/serialio.c
@@ -6,6 +6,9 @@
 #include "spk_priv.h"
 #include "serialio.h"
 
+#include <linux/serial_core.h>
+#include <asm/serial.h>
+
 #ifndef SERIAL_PORT_DFNS
 #define SERIAL_PORT_DFNS
 #endif
@@ -23,9 +26,15 @@ const struct old_serial_port *spk_serial
 	int baud = 9600, quot = 0;
 	unsigned int cval = 0;
 	int cflag = CREAD | HUPCL | CLOCAL | B9600 | CS8;
-	const struct old_serial_port *ser = rs_table + index;
+	const struct old_serial_port *ser;
 	int err;
 
+	if (index >= ARRAY_SIZE(rs_table)) {
+		pr_info("no port info for ttyS%d\n", index);
+		return NULL;
+	}
+	ser = rs_table + index;
+
 	/*	Divisor, bytesize and parity */
 	quot = ser->baud_base / baud;
 	cval = cflag & (CSIZE | CSTOPB);

^ permalink raw reply	[flat|nested] 9+ messages in thread
[parent not found: <20160104122631.GK5284@mwanda>]
* [PATCH] Staging: speakup: Fix getting port information
@  Samuel Thibault
   ` Samuel Thibault
   ` covici
  0 siblings, 2 replies; 9+ messages in thread
From: Samuel Thibault @  UTC (permalink / raw)
  To: William Hubbs, Chris Brannon, Kirk Reiser, Greg Kroah-Hartman,
	speakup, devel, linux-kernel

5e6dc54 broke the port information in the speakup driver:
SERIAL_PORT_DFNS only gets defined if asm/serial.h is included.

Along the way, make sure that we do have information for the requested
serial port number (index)

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

--- a/drivers/staging/speakup/serialio.c
+++ b/drivers/staging/speakup/serialio.c
@@ -6,6 +6,9 @@
 #include "spk_priv.h"
 #include "serialio.h"
 
+#include <linux/serial_core.h>
+#include <asm/serial.h>
+
 #ifndef SERIAL_PORT_DFNS
 #define SERIAL_PORT_DFNS
 #endif
@@ -26,6 +29,11 @@ const struct old_serial_port *spk_serial
 	const struct old_serial_port *ser = rs_table + index;
 	int err;
 
+	if (index > sizeof(rs_table) / sizeof(*rs_table)) {
+		pr_info("no port info for ttyS%d\n", index);
+		return NULL;
+	}
+
 	/*	Divisor, bytesize and parity */
 	quot = ser->baud_base / baud;
 	cval = cflag & (CSIZE | CSTOPB);

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

end of thread, other threads:[~ UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
 [PATCH] Staging: speakup: Fix getting port information Samuel Thibault
 ` Samuel Thibault
  -- strict thread matches above, loose matches on Subject: below --
 Samuel Thibault
     [not found] <20160104122631.GK5284@mwanda>
     [not found] ` <20160104122249.GJ5284@mwanda>
     [not found]   ` <20160104122005.GI5284@mwanda>
     ` Samuel Thibault
 Samuel Thibault
 ` Samuel Thibault
 ` covici
   ` Samuel Thibault
     ` covici

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 read-only IMAP folder(s) and NNTP newsgroup(s).