mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-07 13:43:51 +00:00
tty: Always handle NULL flag ptr
Most line disciplines already handle the undocumented NULL flag ptr in their .receive_buf method; however, several don't. Document the NULL flag ptr, and correct handling in the N_MOUSE, N_GSM0710 and N_R394 line disciplines. Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
6c67716d64
commit
82f91fe092
@ -124,7 +124,7 @@ static void serport_ldisc_receive(struct tty_struct *tty, const unsigned char *c
|
||||
{
|
||||
struct serport *serport = (struct serport*) tty->disc_data;
|
||||
unsigned long flags;
|
||||
unsigned int ch_flags;
|
||||
unsigned int ch_flags = 0;
|
||||
int i;
|
||||
|
||||
spin_lock_irqsave(&serport->lock, flags);
|
||||
@ -133,18 +133,20 @@ static void serport_ldisc_receive(struct tty_struct *tty, const unsigned char *c
|
||||
goto out;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
switch (fp[i]) {
|
||||
case TTY_FRAME:
|
||||
ch_flags = SERIO_FRAME;
|
||||
break;
|
||||
if (fp) {
|
||||
switch (fp[i]) {
|
||||
case TTY_FRAME:
|
||||
ch_flags = SERIO_FRAME;
|
||||
break;
|
||||
|
||||
case TTY_PARITY:
|
||||
ch_flags = SERIO_PARITY;
|
||||
break;
|
||||
case TTY_PARITY:
|
||||
ch_flags = SERIO_PARITY;
|
||||
break;
|
||||
|
||||
default:
|
||||
ch_flags = 0;
|
||||
break;
|
||||
default:
|
||||
ch_flags = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
serio_interrupt(serport->serio, cp[i], ch_flags);
|
||||
|
@ -2269,14 +2269,15 @@ static void gsmld_receive_buf(struct tty_struct *tty, const unsigned char *cp,
|
||||
char *f;
|
||||
int i;
|
||||
char buf[64];
|
||||
char flags;
|
||||
char flags = TTY_NORMAL;
|
||||
|
||||
if (debug & 4)
|
||||
print_hex_dump_bytes("gsmld_receive: ", DUMP_PREFIX_OFFSET,
|
||||
cp, count);
|
||||
|
||||
for (i = count, dp = cp, f = fp; i; i--, dp++) {
|
||||
flags = *f++;
|
||||
if (f)
|
||||
flags = *f++;
|
||||
switch (flags) {
|
||||
case TTY_NORMAL:
|
||||
gsm->receive(gsm, *dp);
|
||||
|
@ -1244,7 +1244,7 @@ static void r3964_receive_buf(struct tty_struct *tty, const unsigned char *cp,
|
||||
{
|
||||
struct r3964_info *pInfo = tty->disc_data;
|
||||
const unsigned char *p;
|
||||
char *f, flags = 0;
|
||||
char *f, flags = TTY_NORMAL;
|
||||
int i;
|
||||
|
||||
for (i = count, p = cp, f = fp; i; i--, p++) {
|
||||
|
@ -84,7 +84,8 @@
|
||||
* processing. <cp> is a pointer to the buffer of input
|
||||
* character received by the device. <fp> is a pointer to a
|
||||
* pointer of flag bytes which indicate whether a character was
|
||||
* received with a parity error, etc.
|
||||
* received with a parity error, etc. <fp> may be NULL to indicate
|
||||
* all data received is TTY_NORMAL.
|
||||
*
|
||||
* void (*write_wakeup)(struct tty_struct *);
|
||||
*
|
||||
@ -118,7 +119,8 @@
|
||||
* processing. <cp> is a pointer to the buffer of input
|
||||
* character received by the device. <fp> is a pointer to a
|
||||
* pointer of flag bytes which indicate whether a character was
|
||||
* received with a parity error, etc.
|
||||
* received with a parity error, etc. <fp> may be NULL to indicate
|
||||
* all data received is TTY_NORMAL.
|
||||
* If assigned, prefer this function for automatic flow control.
|
||||
*/
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user