mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00: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
@ -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;
|
||||||
|
|
||||||
opmode = inb(ip->opmode_ioaddr)>>((p % 4) * 2);
|
if (ip->board->chip_flag == MOXA_MUST_MU860_HWID) {
|
||||||
opmode &= OP_MODE_MASK;
|
opmode = inb(ip->opmode_ioaddr)>>((p % 4) * 2);
|
||||||
|
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 New Issue
Block a user