lkml.org 
[lkml]   [2016]   [Mar]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 268/342] Staging: speakup: Fix getting port information
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Samuel Thibault <samuel.thibault@ens-lyon.org>

    commit 327b882d3bcc1fba82dbd39b5cf5a838c81218e2 upstream.

    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)

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

    ---
    drivers/staging/speakup/serialio.c | 13 ++++++++++++-
    1 file changed, 12 insertions(+), 1 deletion(-)

    --- 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);
    \
     
     \ /
      Last update: 2016-03-02 02:21    [W:4.048 / U:0.164 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site