mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	tty: mxser: fix usage of opmode_ioaddr
mxser_port->opmode_ioaddr is initialized only for MOXA_MUST_MU860_HWID chips, but no precautions have been undertaken to prevent reading and writing to undefined port number. Signed-off-by: Matwey V. Kornilov <matwey@sai.msu.ru> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
		
							parent
							
								
									9d83e1807e
								
							
						
					
					
						commit
						dfc7b837c7
					
				
					 1 changed files with 9 additions and 2 deletions
				
			
		| 
						 | 
					@ -1618,8 +1618,12 @@ static int mxser_ioctl_special(unsigned int cmd, void __user *argp)
 | 
				
			||||||
				if (ip->type == PORT_16550A)
 | 
									if (ip->type == PORT_16550A)
 | 
				
			||||||
					me->fifo[p] = 1;
 | 
										me->fifo[p] = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if (ip->board->chip_flag == MOXA_MUST_MU860_HWID) {
 | 
				
			||||||
					opmode = inb(ip->opmode_ioaddr)>>((p % 4) * 2);
 | 
										opmode = inb(ip->opmode_ioaddr)>>((p % 4) * 2);
 | 
				
			||||||
					opmode &= OP_MODE_MASK;
 | 
										opmode &= OP_MODE_MASK;
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										opmode = RS232_MODE;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
				me->iftype[p] = opmode;
 | 
									me->iftype[p] = opmode;
 | 
				
			||||||
				mutex_unlock(&port->mutex);
 | 
									mutex_unlock(&port->mutex);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -1670,6 +1674,9 @@ static int mxser_ioctl(struct tty_struct *tty,
 | 
				
			||||||
		return mxser_ioctl_special(cmd, argp);
 | 
							return mxser_ioctl_special(cmd, argp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (cmd == MOXA_SET_OP_MODE || cmd == MOXA_GET_OP_MODE) {
 | 
						if (cmd == MOXA_SET_OP_MODE || cmd == MOXA_GET_OP_MODE) {
 | 
				
			||||||
 | 
							if (info->board->chip_flag != MOXA_MUST_MU860_HWID)
 | 
				
			||||||
 | 
								return -EFAULT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		int p;
 | 
							int p;
 | 
				
			||||||
		unsigned long opmode;
 | 
							unsigned long opmode;
 | 
				
			||||||
		static unsigned char ModeMask[] = { 0xfc, 0xf3, 0xcf, 0x3f };
 | 
							static unsigned char ModeMask[] = { 0xfc, 0xf3, 0xcf, 0x3f };
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue