mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			Remove CONFIG_VT for FH8852V100 to avoid kernel crash && apply pty patch
							parent
							
								
									ba3f71add5
								
							
						
					
					
						commit
						96d3159d62
					
				|  | @ -825,8 +825,8 @@ CONFIG_INPUT=y | ||||||
| # | # | ||||||
| # Character devices | # Character devices | ||||||
| # | # | ||||||
| CONFIG_VT=y | # CONFIG_VT is not set | ||||||
| CONFIG_CONSOLE_TRANSLATIONS=y | # CONFIG_CONSOLE_TRANSLATIONS is not set | ||||||
| # CONFIG_VT_CONSOLE is not set | # CONFIG_VT_CONSOLE is not set | ||||||
| CONFIG_HW_CONSOLE=y | CONFIG_HW_CONSOLE=y | ||||||
| # CONFIG_VT_HW_CONSOLE_BINDING is not set | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||||||
|  |  | ||||||
|  | @ -826,8 +826,8 @@ CONFIG_INPUT=y | ||||||
| # | # | ||||||
| # Character devices | # Character devices | ||||||
| # | # | ||||||
| CONFIG_VT=y | # CONFIG_VT is not set | ||||||
| CONFIG_CONSOLE_TRANSLATIONS=y | # CONFIG_CONSOLE_TRANSLATIONS is not set | ||||||
| # CONFIG_VT_CONSOLE is not set | # CONFIG_VT_CONSOLE is not set | ||||||
| CONFIG_HW_CONSOLE=y | CONFIG_HW_CONSOLE=y | ||||||
| # CONFIG_VT_HW_CONSOLE_BINDING is not set | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||||||
|  |  | ||||||
|  | @ -826,8 +826,8 @@ CONFIG_INPUT=y | ||||||
| # | # | ||||||
| # Character devices | # Character devices | ||||||
| # | # | ||||||
| CONFIG_VT=y | # CONFIG_VT is not set | ||||||
| CONFIG_CONSOLE_TRANSLATIONS=y | # CONFIG_CONSOLE_TRANSLATIONS is not set | ||||||
| # CONFIG_VT_CONSOLE is not set | # CONFIG_VT_CONSOLE is not set | ||||||
| CONFIG_HW_CONSOLE=y | CONFIG_HW_CONSOLE=y | ||||||
| # CONFIG_VT_HW_CONSOLE_BINDING is not set | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||||||
|  |  | ||||||
|  | @ -0,0 +1,144 @@ | ||||||
|  | --- a/drivers/tty/pty.c
 | ||||||
|  | +++ b/drivers/tty/pty.c
 | ||||||
|  | @@ -721,7 +721,18 @@ err_file:
 | ||||||
|  |  	return retval; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | -static struct file_operations ptmx_fops;
 | ||||||
|  | +static const struct file_operations ptmx_fops = 
 | ||||||
|  | +{
 | ||||||
|  | +	.llseek		= no_llseek,
 | ||||||
|  | +	.read		= tty_read,
 | ||||||
|  | +	.write		= tty_write,
 | ||||||
|  | +	.poll		= tty_poll,
 | ||||||
|  | +	.unlocked_ioctl	= tty_ioctl,
 | ||||||
|  | +	.compat_ioctl	= tty_compat_ioctl,
 | ||||||
|  | +	.open		= ptmx_open,
 | ||||||
|  | +	.release	= tty_release,
 | ||||||
|  | +	.fasync		= tty_fasync,
 | ||||||
|  | +};
 | ||||||
|  |   | ||||||
|  |  static void __init unix98_pty_init(void) | ||||||
|  |  { | ||||||
|  | @@ -775,9 +786,6 @@ static void __init unix98_pty_init(void)
 | ||||||
|  |  	register_sysctl_table(pty_root_table); | ||||||
|  |   | ||||||
|  |  	/* Now create the /dev/ptmx special device */ | ||||||
|  | -	tty_default_fops(&ptmx_fops);
 | ||||||
|  | -	ptmx_fops.open = ptmx_open;
 | ||||||
|  | -
 | ||||||
|  |  	cdev_init(&ptmx_cdev, &ptmx_fops); | ||||||
|  |  	if (cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1) || | ||||||
|  |  	    register_chrdev_region(MKDEV(TTYAUX_MAJOR, 2), 1, "/dev/ptmx") < 0) | ||||||
|  | 
 | ||||||
|  | --- a/drivers/tty/tty_io.c
 | ||||||
|  | +++ b/drivers/tty/tty_io.c
 | ||||||
|  | @@ -137,21 +137,10 @@ EXPORT_SYMBOL(tty_mutex);
 | ||||||
|  |  /* Spinlock to protect the tty->tty_files list */ | ||||||
|  |  DEFINE_SPINLOCK(tty_files_lock); | ||||||
|  |   | ||||||
|  | -static ssize_t tty_read(struct file *, char __user *, size_t, loff_t *);
 | ||||||
|  | -static ssize_t tty_write(struct file *, const char __user *, size_t, loff_t *);
 | ||||||
|  |  ssize_t redirected_tty_write(struct file *, const char __user *, | ||||||
|  |  							size_t, loff_t *); | ||||||
|  | -static unsigned int tty_poll(struct file *, poll_table *);
 | ||||||
|  |  static int tty_open(struct inode *, struct file *); | ||||||
|  | -long tty_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
 | ||||||
|  | -#ifdef CONFIG_COMPAT
 | ||||||
|  | -static long tty_compat_ioctl(struct file *file, unsigned int cmd,
 | ||||||
|  | -				unsigned long arg);
 | ||||||
|  | -#else
 | ||||||
|  | -#define tty_compat_ioctl NULL
 | ||||||
|  | -#endif
 | ||||||
|  |  static int __tty_fasync(int fd, struct file *filp, int on); | ||||||
|  | -static int tty_fasync(int fd, struct file *filp, int on);
 | ||||||
|  |  static void release_tty(struct tty_struct *tty, int idx); | ||||||
|  |  static void __proc_set_tty(struct task_struct *tsk, struct tty_struct *tty); | ||||||
|  |  static void proc_set_tty(struct task_struct *tsk, struct tty_struct *tty); | ||||||
|  | @@ -962,7 +951,7 @@ static void tty_update_time(struct timespec *time)
 | ||||||
|  |   *	read calls may be outstanding in parallel. | ||||||
|  |   */ | ||||||
|  |   | ||||||
|  | -static ssize_t tty_read(struct file *file, char __user *buf, size_t count,
 | ||||||
|  | +ssize_t tty_read(struct file *file, char __user *buf, size_t count,
 | ||||||
|  |  			loff_t *ppos) | ||||||
|  |  { | ||||||
|  |  	int i; | ||||||
|  | @@ -1141,7 +1130,7 @@ void tty_write_message(struct tty_struct *tty, char *msg)
 | ||||||
|  |   *	write method will not be invoked in parallel for each device. | ||||||
|  |   */ | ||||||
|  |   | ||||||
|  | -static ssize_t tty_write(struct file *file, const char __user *buf,
 | ||||||
|  | +ssize_t tty_write(struct file *file, const char __user *buf,
 | ||||||
|  |  						size_t count, loff_t *ppos) | ||||||
|  |  { | ||||||
|  |  	struct inode *inode = file->f_path.dentry->d_inode; | ||||||
|  | @@ -2002,7 +1991,7 @@ got_driver:
 | ||||||
|  |   *	may be re-entered freely by other callers. | ||||||
|  |   */ | ||||||
|  |   | ||||||
|  | -static unsigned int tty_poll(struct file *filp, poll_table *wait)
 | ||||||
|  | +unsigned int tty_poll(struct file *filp, poll_table *wait)
 | ||||||
|  |  { | ||||||
|  |  	struct tty_struct *tty = file_tty(filp); | ||||||
|  |  	struct tty_ldisc *ld; | ||||||
|  | @@ -2059,7 +2048,7 @@ out:
 | ||||||
|  |  	return retval; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | -static int tty_fasync(int fd, struct file *filp, int on)
 | ||||||
|  | +int tty_fasync(int fd, struct file *filp, int on)
 | ||||||
|  |  { | ||||||
|  |  	int retval; | ||||||
|  |  	tty_lock(); | ||||||
|  | @@ -3246,11 +3235,6 @@ struct tty_struct *get_current_tty(void)
 | ||||||
|  |  } | ||||||
|  |  EXPORT_SYMBOL_GPL(get_current_tty); | ||||||
|  |   | ||||||
|  | -void tty_default_fops(struct file_operations *fops)
 | ||||||
|  | -{
 | ||||||
|  | -	*fops = tty_fops;
 | ||||||
|  | -}
 | ||||||
|  | -
 | ||||||
|  |  /* | ||||||
|  |   * Initialize the console device. This is called *early*, so | ||||||
|  |   * we can't necessarily depend on lots of kernel help here. | ||||||
|  | 
 | ||||||
|  | --- a/include/linux/tty.h
 | ||||||
|  | +++ b/include/linux/tty.h
 | ||||||
|  | @@ -13,6 +13,7 @@
 | ||||||
|  |  #include <linux/tty_driver.h> | ||||||
|  |  #include <linux/tty_ldisc.h> | ||||||
|  |  #include <linux/mutex.h> | ||||||
|  | +#include <linux/poll.h>
 | ||||||
|  |   | ||||||
|  |  #include <asm/system.h> | ||||||
|  |   | ||||||
|  | @@ -470,7 +471,6 @@ extern int tty_perform_flush(struct tty_struct *tty, unsigned long arg);
 | ||||||
|  |  extern dev_t tty_devnum(struct tty_struct *tty); | ||||||
|  |  extern void proc_clear_tty(struct task_struct *p); | ||||||
|  |  extern struct tty_struct *get_current_tty(void); | ||||||
|  | -extern void tty_default_fops(struct file_operations *fops);
 | ||||||
|  |  extern struct tty_struct *alloc_tty_struct(void); | ||||||
|  |  extern int tty_alloc_file(struct file *file); | ||||||
|  |  extern void tty_add_file(struct tty_struct *tty, struct file *file); | ||||||
|  | @@ -482,6 +482,19 @@ extern void deinitialize_tty_struct(struct tty_struct *tty);
 | ||||||
|  |  extern struct tty_struct *tty_init_dev(struct tty_driver *driver, int idx, | ||||||
|  |  								int first_ok); | ||||||
|  |  extern int tty_release(struct inode *inode, struct file *filp); | ||||||
|  | +extern ssize_t tty_read(struct file *, char __user *, size_t, loff_t *);
 | ||||||
|  | +extern ssize_t tty_write(struct file *, const char __user *, size_t, loff_t *);
 | ||||||
|  | +extern unsigned int tty_poll(struct file *, poll_table *);
 | ||||||
|  | +
 | ||||||
|  | +#ifdef CONFIG_COMPAT
 | ||||||
|  | +extern long tty_compat_ioctl(struct file *file, unsigned int cmd,
 | ||||||
|  | +				unsigned long arg);
 | ||||||
|  | +#else
 | ||||||
|  | +#define tty_compat_ioctl NULL
 | ||||||
|  | +#endif
 | ||||||
|  | +extern int tty_fasync(int fd, struct file *filp, int on);
 | ||||||
|  | +
 | ||||||
|  | +
 | ||||||
|  |  extern int tty_init_termios(struct tty_struct *tty); | ||||||
|  |   | ||||||
|  |  extern struct tty_struct *tty_pair_get_tty(struct tty_struct *tty); | ||||||
		Loading…
	
		Reference in New Issue