lkml.org 
[lkml]   [2021]   [Jun]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 39/70] mxser: simplify mxser_ioctl_op_mode
Date
* ModeMask local array is just inverted OP_MODE_MASK shifted by shiftbit.
Drop this array and use the value directly.
* return from the if's true branch and drop 'else' branch by moving the
code completely outside the if.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
drivers/tty/mxser.c | 27 ++++++++++-----------------
1 file changed, 10 insertions(+), 17 deletions(-)

diff --git a/drivers/tty/mxser.c b/drivers/tty/mxser.c
index 4a584db09494..e082ae055c39 100644
--- a/drivers/tty/mxser.c
+++ b/drivers/tty/mxser.c
@@ -1411,10 +1411,9 @@ static int mxser_cflags_changed(struct mxser_port *info, unsigned long arg,
static int mxser_ioctl_op_mode(struct mxser_port *port, int index, bool set,
int __user *u_opmode)
{
- static const unsigned char ModeMask[] = { 0xfc, 0xf3, 0xcf, 0x3f };
int opmode, p = index % 4;
int shiftbit = p * 2;
- unsigned char val, mask;
+ u8 val;

if (port->board->must_hwid != MOXA_MUST_MU860_HWID)
return -EFAULT;
@@ -1423,30 +1422,24 @@ static int mxser_ioctl_op_mode(struct mxser_port *port, int index, bool set,
if (get_user(opmode, u_opmode))
return -EFAULT;

- if (opmode != RS232_MODE && opmode != RS485_2WIRE_MODE &&
- opmode != RS422_MODE &&
- opmode != RS485_4WIRE_MODE)
- return -EFAULT;
-
- mask = ModeMask[p];
+ if (opmode & ~OP_MODE_MASK)
+ return -EINVAL;

spin_lock_irq(&port->slock);
val = inb(port->opmode_ioaddr);
- val &= mask;
+ val &= ~(OP_MODE_MASK << shiftbit);
val |= (opmode << shiftbit);
outb(val, port->opmode_ioaddr);
spin_unlock_irq(&port->slock);
- } else {
- spin_lock_irq(&port->slock);
- opmode = inb(port->opmode_ioaddr) >> shiftbit;
- spin_unlock_irq(&port->slock);

- opmode &= OP_MODE_MASK;
- if (put_user(opmode, u_opmode))
- return -EFAULT;
+ return 0;
}

- return 0;
+ spin_lock_irq(&port->slock);
+ opmode = inb(port->opmode_ioaddr) >> shiftbit;
+ spin_unlock_irq(&port->slock);
+
+ return put_user(opmode & OP_MODE_MASK, u_opmode);
}

static int mxser_ioctl(struct tty_struct *tty,
--
2.32.0
\
 
 \ /
  Last update: 2021-06-18 08:18    [W:0.420 / U:0.216 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site