Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 113472
b: refs/heads/master
c: fe6e29f
h: refs/heads/master
v: v3
  • Loading branch information
Alan Cox authored and Linus Torvalds committed Oct 13, 2008
1 parent af2b897 commit 37b6531
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 43 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8dff04ea316125639120c0a565ce0346b892fef7
refs/heads/master: fe6e29fdb1a7b94891bbdd3c67358fe4ed14639d
46 changes: 7 additions & 39 deletions trunk/drivers/char/tty_io.c
Original file line number Diff line number Diff line change
Expand Up @@ -1235,27 +1235,20 @@ struct tty_struct *tty_driver_lookup_tty(struct tty_driver *driver,

int tty_init_termios(struct tty_struct *tty)
{
struct ktermios *tp, *ltp;
struct ktermios *tp;
int idx = tty->index;

tp = tty->driver->termios[idx];
ltp = tty->driver->termios_locked[idx];
if (tp == NULL) {
WARN_ON(ltp != NULL);
tp = kmalloc(sizeof(struct ktermios), GFP_KERNEL);
ltp = kzalloc(sizeof(struct ktermios), GFP_KERNEL);
if (tp == NULL || ltp == NULL) {
kfree(tp);
kfree(ltp);
tp = kzalloc(sizeof(struct ktermios[2]), GFP_KERNEL);
if (tp == NULL)
return -ENOMEM;
}
memcpy(tp, &tty->driver->init_termios,
sizeof(struct ktermios));
tty->driver->termios[idx] = tp;
tty->driver->termios_locked[idx] = ltp;
}
tty->termios = tp;
tty->termios_locked = ltp;
tty->termios_locked = tp + 1;

/* Compatibility until drivers always set this */
tty->termios->c_ispeed = tty_termios_input_baud_rate(tty->termios);
Expand Down Expand Up @@ -1439,10 +1432,6 @@ void tty_free_termios(struct tty_struct *tty)
tp = tty->termios;
tty->driver->termios[idx] = NULL;
kfree(tp);

tp = tty->termios_locked;
tty->driver->termios_locked[idx] = NULL;
kfree(tp);
}
}
EXPORT_SYMBOL(tty_free_termios);
Expand Down Expand Up @@ -1575,12 +1564,6 @@ void tty_release_dev(struct file *filp)
idx, tty->name);
return;
}
if (tty->termios_locked != tty->driver->termios_locked[idx]) {
printk(KERN_DEBUG "tty_release_dev: driver.termios_locked[%d] not "
"termios_locked for (%s)\n",
idx, tty->name);
return;
}
}
#endif

Expand All @@ -1604,13 +1587,6 @@ void tty_release_dev(struct file *filp)
idx, tty->name);
return;
}
if (o_tty->termios_locked !=
tty->driver->other->termios_locked[idx]) {
printk(KERN_DEBUG "tty_release_dev: other->termios_locked["
"%d] not o_termios_locked for (%s)\n",
idx, tty->name);
return;
}
if (o_tty->link != tty) {
printk(KERN_DEBUG "tty_release_dev: bad pty pointers\n");
return;
Expand Down Expand Up @@ -2930,18 +2906,13 @@ static void destruct_tty_driver(struct kref *kref)
driver->termios[i] = NULL;
kfree(tp);
}
tp = driver->termios_locked[i];
if (tp) {
driver->termios_locked[i] = NULL;
kfree(tp);
}
if (!(driver->flags & TTY_DRIVER_DYNAMIC_DEV))
tty_unregister_device(driver, i);
}
p = driver->ttys;
proc_tty_unregister_driver(driver);
driver->ttys = NULL;
driver->termios = driver->termios_locked = NULL;
driver->termios = NULL;
kfree(p);
cdev_del(&driver->cdev);
}
Expand Down Expand Up @@ -2978,7 +2949,7 @@ int tty_register_driver(struct tty_driver *driver)
void **p = NULL;

if (!(driver->flags & TTY_DRIVER_DEVPTS_MEM) && driver->num) {
p = kzalloc(driver->num * 3 * sizeof(void *), GFP_KERNEL);
p = kzalloc(driver->num * 2 * sizeof(void *), GFP_KERNEL);
if (!p)
return -ENOMEM;
}
Expand All @@ -3002,12 +2973,9 @@ int tty_register_driver(struct tty_driver *driver)
if (p) {
driver->ttys = (struct tty_struct **)p;
driver->termios = (struct ktermios **)(p + driver->num);
driver->termios_locked = (struct ktermios **)
(p + driver->num * 2);
} else {
driver->ttys = NULL;
driver->termios = NULL;
driver->termios_locked = NULL;
}

cdev_init(&driver->cdev, &tty_fops);
Expand All @@ -3016,7 +2984,7 @@ int tty_register_driver(struct tty_driver *driver)
if (error) {
unregister_chrdev_region(dev, driver->num);
driver->ttys = NULL;
driver->termios = driver->termios_locked = NULL;
driver->termios = NULL;
kfree(p);
return error;
}
Expand Down
3 changes: 0 additions & 3 deletions trunk/drivers/serial/crisv10.c
Original file line number Diff line number Diff line change
Expand Up @@ -457,7 +457,6 @@ static struct e100_serial rs_table[] = {
#define NR_PORTS (sizeof(rs_table)/sizeof(struct e100_serial))

static struct ktermios *serial_termios[NR_PORTS];
static struct ktermios *serial_termios_locked[NR_PORTS];
#ifdef CONFIG_ETRAX_SERIAL_FAST_TIMER
static struct fast_timer fast_timers[NR_PORTS];
#endif
Expand Down Expand Up @@ -4448,8 +4447,6 @@ rs_init(void)
driver->init_termios.c_ispeed = 115200;
driver->init_termios.c_ospeed = 115200;
driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV;
driver->termios = serial_termios;
driver->termios_locked = serial_termios_locked;

tty_set_operations(driver, &rs_ops);
serial_driver = driver;
Expand Down

0 comments on commit 37b6531

Please sign in to comment.