|
@@ -861,13 +861,18 @@ static void change_speed(struct async_struct *info,
|
|
|
|
|
|
static void rs_put_char(struct tty_struct *tty, unsigned char ch)
|
|
static void rs_put_char(struct tty_struct *tty, unsigned char ch)
|
|
{
|
|
{
|
|
- struct async_struct *info = (struct async_struct *)tty->driver_data;
|
|
|
|
|
|
+ struct async_struct *info;
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
|
|
|
|
|
|
+ if (!tty)
|
|
|
|
+ return;
|
|
|
|
+
|
|
|
|
+ info = tty->driver_data;
|
|
|
|
+
|
|
if (serial_paranoia_check(info, tty->name, "rs_put_char"))
|
|
if (serial_paranoia_check(info, tty->name, "rs_put_char"))
|
|
return;
|
|
return;
|
|
|
|
|
|
- if (!tty || !info->xmit.buf)
|
|
|
|
|
|
+ if (!info->xmit.buf)
|
|
return;
|
|
return;
|
|
|
|
|
|
local_irq_save(flags);
|
|
local_irq_save(flags);
|
|
@@ -910,13 +915,18 @@ static void rs_flush_chars(struct tty_struct *tty)
|
|
static int rs_write(struct tty_struct * tty, const unsigned char *buf, int count)
|
|
static int rs_write(struct tty_struct * tty, const unsigned char *buf, int count)
|
|
{
|
|
{
|
|
int c, ret = 0;
|
|
int c, ret = 0;
|
|
- struct async_struct *info = (struct async_struct *)tty->driver_data;
|
|
|
|
|
|
+ struct async_struct *info;
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
|
|
|
|
|
|
+ if (!tty)
|
|
|
|
+ return 0;
|
|
|
|
+
|
|
|
|
+ info = tty->driver_data;
|
|
|
|
+
|
|
if (serial_paranoia_check(info, tty->name, "rs_write"))
|
|
if (serial_paranoia_check(info, tty->name, "rs_write"))
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
- if (!tty || !info->xmit.buf || !tmp_buf)
|
|
|
|
|
|
+ if (!info->xmit.buf || !tmp_buf)
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
local_save_flags(flags);
|
|
local_save_flags(flags);
|