This reverts commit 1b2c1fe8428715c3b5ec0a94d0568b5a5c526032. Conflicts: include/linux/ve.h --- drivers/tty/pty.c | 88 ++++++++++++++++++----------------------------------- include/linux/tty.h | 6 ++-- include/linux/ve.h | 6 ---- 3 files changed, 32 insertions(+), 68 deletions(-)
diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c index 7afb8228515b..56c0a21e246d 100644 --- a/drivers/tty/pty.c +++ b/drivers/tty/pty.c @@ -23,10 +23,15 @@ #include <linux/devpts_fs.h> #include <linux/slab.h> #include <linux/mutex.h> -#include <linux/ve.h> #include <bc/misc.h> +#ifdef CONFIG_UNIX98_PTYS +static struct tty_driver *ptm_driver; +static struct tty_driver *pts_driver; +static DEFINE_MUTEX(devpts_mutex); +#endif + static void pty_close(struct tty_struct *tty, struct file *filp) { BUG_ON(!tty); @@ -53,11 +58,11 @@ static void pty_close(struct tty_struct *tty, struct file *filp) if (tty->driver->subtype == PTY_TYPE_MASTER) { set_bit(TTY_OTHER_CLOSED, &tty->flags); #ifdef CONFIG_UNIX98_PTYS - if (tty->driver == tty->driver->ve->ptm_driver) { - mutex_lock(&tty->driver->ve->devpts_mutex); + if (tty->driver == ptm_driver) { + mutex_lock(&devpts_mutex); if (tty->link->driver_data) devpts_pty_kill(tty->link->driver_data); - mutex_unlock(&tty->driver->ve->devpts_mutex); + mutex_unlock(&devpts_mutex); } #endif tty_unlock(tty); @@ -669,9 +674,9 @@ static struct tty_struct *pts_unix98_lookup(struct tty_driver *driver, { struct tty_struct *tty; - mutex_lock(&driver->ve->devpts_mutex); + mutex_lock(&devpts_mutex); tty = devpts_get_priv(pts_inode); - mutex_unlock(&driver->ve->devpts_mutex); + mutex_unlock(&devpts_mutex); /* Master must be open before slave */ if (!tty) return ERR_PTR(-EIO); @@ -748,7 +753,6 @@ static int ptmx_open(struct inode *inode, struct file *filp) struct inode *slave_inode; int retval; int index; - struct ve_struct *ve = (inode->i_sb->s_ns) ? : get_exec_env(); nonseekable_open(inode, filp); @@ -760,18 +764,18 @@ static int ptmx_open(struct inode *inode, struct file *filp) return retval; /* find a device that is not in use. */ - mutex_lock(&ve->devpts_mutex); + mutex_lock(&devpts_mutex); index = devpts_new_index(inode); if (index < 0) { retval = index; - mutex_unlock(&ve->devpts_mutex); + mutex_unlock(&devpts_mutex); goto err_file; } - mutex_unlock(&ve->devpts_mutex); + mutex_unlock(&devpts_mutex); mutex_lock(&tty_mutex); - tty = tty_init_dev(ve->ptm_driver, index); + tty = tty_init_dev(ptm_driver, index); if (IS_ERR(tty)) { retval = PTR_ERR(tty); @@ -796,7 +800,7 @@ static int ptmx_open(struct inode *inode, struct file *filp) } tty->link->driver_data = slave_inode; - retval = ve->ptm_driver->ops->open(tty, filp); + retval = ptm_driver->ops->open(tty, filp); if (retval) goto err_release; @@ -816,22 +820,16 @@ err_file: static struct file_operations ptmx_fops; -static void __unix98_unregister_ptmx(struct ve_struct *ve) +static void __unix98_unregister_ptmx(void) { - if (!ve_is_super(ve)) - return; - unregister_chrdev_region(MKDEV(TTYAUX_MAJOR, 2), 1); cdev_del(&ptmx_cdev); } -static int __unix98_register_ptmx(struct ve_struct *ve) -{ +static int __unix98_register_ptmx(void) + { int err; - if (!ve_is_super(ve)) - return 0; - cdev_init(&ptmx_cdev, &ptmx_fops); err = cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1); if (err) { @@ -850,21 +848,18 @@ err_ptmx_register: return err; } -static int __unix98_pty_init(struct ve_struct *ve, - struct tty_driver **ptm_driver_p, - struct tty_driver **pts_driver_p) +static int __unix98_pty_init(struct tty_driver **ptm_driver_p, + struct tty_driver **pts_driver_p) { struct tty_driver *ptm_driver, *pts_driver; int err; - - mutex_init(&ve->devpts_mutex); + struct device *dev; ptm_driver = tty_alloc_driver(NR_UNIX98_PTY_MAX, TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV | TTY_DRIVER_DEVPTS_MEM | - TTY_DRIVER_CONTAINERIZED | TTY_DRIVER_DYNAMIC_ALLOC); if (IS_ERR(ptm_driver)) { printk(KERN_ERR "Couldn't allocate Unix98 ptm driver"); @@ -875,7 +870,6 @@ static int __unix98_pty_init(struct ve_struct *ve, TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV | TTY_DRIVER_DEVPTS_MEM | - TTY_DRIVER_CONTAINERIZED | TTY_DRIVER_DYNAMIC_ALLOC); if (IS_ERR(pts_driver)) { printk(KERN_ERR "Couldn't allocate Unix98 pts driver"); @@ -896,7 +890,6 @@ static int __unix98_pty_init(struct ve_struct *ve, ptm_driver->init_termios.c_ispeed = 38400; ptm_driver->init_termios.c_ospeed = 38400; ptm_driver->other = pts_driver; - ptm_driver->ve = ve; tty_set_operations(ptm_driver, &ptm_unix98_ops); pts_driver->driver_name = "pty_slave"; @@ -910,7 +903,6 @@ static int __unix98_pty_init(struct ve_struct *ve, pts_driver->init_termios.c_ispeed = 38400; pts_driver->init_termios.c_ospeed = 38400; pts_driver->other = ptm_driver; - pts_driver->ve = ve; tty_set_operations(pts_driver, &pty_unix98_ops); err = tty_register_driver(ptm_driver); @@ -928,13 +920,13 @@ static int __unix98_pty_init(struct ve_struct *ve, tty_default_fops(&ptmx_fops); ptmx_fops.open = ptmx_open; - err = __unix98_register_ptmx(ve); + err = __unix98_register_ptmx(); if (err) goto err_ptmx_register; - ve->ptmx = device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 2), ve, "ptmx"); - if (IS_ERR(ve->ptmx)) { - err = PTR_ERR(ve->ptmx); + dev = device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 2), NULL, "ptmx"); + if (IS_ERR(dev)) { + err = PTR_ERR(dev); goto err_ptmx_create; } @@ -944,7 +936,7 @@ static int __unix98_pty_init(struct ve_struct *ve, return 0; err_ptmx_create: - __unix98_unregister_ptmx(ve); + __unix98_unregister_ptmx(); err_ptmx_register: tty_unregister_driver(pts_driver); err_pts_register: @@ -956,32 +948,12 @@ err_pts_alloc: return err; } -void ve_unix98_pty_fini(struct ve_struct *ve) -{ - struct tty_driver *ptm_driver = ve->ptm_driver; - struct tty_driver *pts_driver = ve->pts_driver; - - ve->ptm_driver = NULL; - ve->pts_driver = NULL; - - device_unregister(ve->ptmx); - __unix98_unregister_ptmx(ve); - tty_unregister_driver(pts_driver); - tty_unregister_driver(ptm_driver); - put_tty_driver(pts_driver); - put_tty_driver(ptm_driver); -} - -int ve_unix98_pty_init(struct ve_struct *ve) -{ - return __unix98_pty_init(ve, &ve->ptm_driver, &ve->pts_driver); -} - static void __init unix98_pty_init(void) { - if (__unix98_pty_init(get_ve0(), &get_ve0()->ptm_driver, &get_ve0()->pts_driver)) - panic("Failed to init unix98 ptys"); + if (__unix98_pty_init(&ptm_driver, &pts_driver)) + panic("Failed to init legacy ptys"); } + #else static inline void unix98_pty_init(void) { } #endif diff --git a/include/linux/tty.h b/include/linux/tty.h index 263ee1cc31aa..859dd5cc56f0 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h @@ -704,10 +704,8 @@ static inline void proc_tty_unregister_driver(struct tty_driver *d) {} #ifdef CONFIG_VE struct ve_struct; -extern void ve_legacy_pty_fini(struct ve_struct *ve); -extern int ve_legacy_pty_init(struct ve_struct *ve); -extern void ve_unix98_pty_fini(struct ve_struct *ve); -extern int ve_unix98_pty_init(struct ve_struct *ve); +void ve_legacy_pty_fini(struct ve_struct *ve); +int ve_legacy_pty_init(struct ve_struct *ve); #endif #endif diff --git a/include/linux/ve.h b/include/linux/ve.h index 82a840a988b7..300990162ca5 100644 --- a/include/linux/ve.h +++ b/include/linux/ve.h @@ -78,12 +78,6 @@ struct ve_struct { struct tty_driver *pty_driver, *pty_slave_driver; #endif -#ifdef CONFIG_UNIX98_PTYS - struct tty_driver *ptm_driver, *pts_driver; - struct device *ptmx; - struct mutex devpts_mutex; -#endif - #ifdef CONFIG_TTY struct device *consdev; #endif -- 2.1.4 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel