[PATCH 1/2] staging: dgnc: make error codes uniform

Tobin C. Harding me at tobin.cc
Tue Mar 14 23:44:28 UTC 2017


Driver code is non-uniform in its use of error return codes, identical
failures are returning different error codes. Return is on failure
when checking struct magic numbers. Error codes used include -ENODEV,
-ENXIO, -EIO, and -EFAULT.

Use -ENXIO. Justification is that usual call includes a check that the
struct is non-NULL OR'd with check on the magic number.

#define ENXIO 6 /* No such device or address */

Seems like a good fit. Also this choice results in the minimum number
of files touched.

Pick one error code, ENXIO. Change all functions to use the same error
return code for the cases of failed magic number checks.

Signed-off-by: Tobin C. Harding <me at tobin.cc>
---
 drivers/staging/dgnc/dgnc_mgmt.c |  2 +-
 drivers/staging/dgnc/dgnc_tty.c  | 44 ++++++++++++++++++++--------------------
 2 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/drivers/staging/dgnc/dgnc_mgmt.c b/drivers/staging/dgnc/dgnc_mgmt.c
index ee8a626..f134222 100644
--- a/drivers/staging/dgnc/dgnc_mgmt.c
+++ b/drivers/staging/dgnc/dgnc_mgmt.c
@@ -187,7 +187,7 @@ long dgnc_mgmt_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 		ch = dgnc_board[board]->channels[channel];
 
 		if (!ch || ch->magic != DGNC_CHANNEL_MAGIC)
-			return -ENODEV;
+			return -ENXIO;
 
 		memset(&ni, 0, sizeof(ni));
 		ni.board = board;
diff --git a/drivers/staging/dgnc/dgnc_tty.c b/drivers/staging/dgnc/dgnc_tty.c
index 854bd1d..2e65d33 100644
--- a/drivers/staging/dgnc/dgnc_tty.c
+++ b/drivers/staging/dgnc/dgnc_tty.c
@@ -1679,15 +1679,15 @@ static int dgnc_tty_tiocmget(struct tty_struct *tty)
 	unsigned long flags;
 
 	if (!tty || tty->magic != TTY_MAGIC)
-		return -EIO;
+		return -ENXIO;
 
 	un = tty->driver_data;
 	if (!un || un->magic != DGNC_UNIT_MAGIC)
-		return -EIO;
+		return -ENXIO;
 
 	ch = un->un_ch;
 	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC)
-		return -EIO;
+		return -ENXIO;
 
 	spin_lock_irqsave(&ch->ch_lock, flags);
 
@@ -1728,19 +1728,19 @@ static int dgnc_tty_tiocmset(struct tty_struct *tty,
 	unsigned long flags;
 
 	if (!tty || tty->magic != TTY_MAGIC)
-		return -EIO;
+		return -ENXIO;
 
 	un = tty->driver_data;
 	if (!un || un->magic != DGNC_UNIT_MAGIC)
-		return -EIO;
+		return -ENXIO;
 
 	ch = un->un_ch;
 	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC)
-		return -EIO;
+		return -ENXIO;
 
 	bd = ch->ch_bd;
 	if (!bd || bd->magic != DGNC_BOARD_MAGIC)
-		return -EIO;
+		return -ENXIO;
 
 	spin_lock_irqsave(&ch->ch_lock, flags);
 
@@ -1776,19 +1776,19 @@ static int dgnc_tty_send_break(struct tty_struct *tty, int msec)
 	unsigned long flags;
 
 	if (!tty || tty->magic != TTY_MAGIC)
-		return -EIO;
+		return -ENXIO;
 
 	un = tty->driver_data;
 	if (!un || un->magic != DGNC_UNIT_MAGIC)
-		return -EIO;
+		return -ENXIO;
 
 	ch = un->un_ch;
 	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC)
-		return -EIO;
+		return -ENXIO;
 
 	bd = ch->ch_bd;
 	if (!bd || bd->magic != DGNC_BOARD_MAGIC)
-		return -EIO;
+		return -ENXIO;
 
 	if (msec < 0)
 		msec = 0xFFFF;
@@ -1990,15 +1990,15 @@ static int dgnc_tty_digigeta(struct tty_struct *tty,
 		return -EFAULT;
 
 	if (!tty || tty->magic != TTY_MAGIC)
-		return -EFAULT;
+		return -ENXIO;
 
 	un = tty->driver_data;
 	if (!un || un->magic != DGNC_UNIT_MAGIC)
-		return -EFAULT;
+		return -ENXIO;
 
 	ch = un->un_ch;
 	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC)
-		return -EFAULT;
+		return -ENXIO;
 
 	memset(&tmp, 0, sizeof(tmp));
 
@@ -2027,19 +2027,19 @@ static int dgnc_tty_digiseta(struct tty_struct *tty,
 	unsigned long flags;
 
 	if (!tty || tty->magic != TTY_MAGIC)
-		return -EFAULT;
+		return -ENXIO;
 
 	un = tty->driver_data;
 	if (!un || un->magic != DGNC_UNIT_MAGIC)
-		return -EFAULT;
+		return -ENXIO;
 
 	ch = un->un_ch;
 	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC)
-		return -EFAULT;
+		return -ENXIO;
 
 	bd = ch->ch_bd;
 	if (!bd || bd->magic != DGNC_BOARD_MAGIC)
-		return -EFAULT;
+		return -ENXIO;
 
 	if (copy_from_user(&new_digi, new_info, sizeof(new_digi)))
 		return -EFAULT;
@@ -2356,19 +2356,19 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,
 	void __user *uarg = (void __user *)arg;
 
 	if (!tty || tty->magic != TTY_MAGIC)
-		return -ENODEV;
+		return -ENXIO;
 
 	un = tty->driver_data;
 	if (!un || un->magic != DGNC_UNIT_MAGIC)
-		return -ENODEV;
+		return -ENXIO;
 
 	ch = un->un_ch;
 	if (!ch || ch->magic != DGNC_CHANNEL_MAGIC)
-		return -ENODEV;
+		return -ENXIO;
 
 	bd = ch->ch_bd;
 	if (!bd || bd->magic != DGNC_BOARD_MAGIC)
-		return -ENODEV;
+		return -ENXIO;
 
 	ch_bd_ops = bd->bd_ops;
 
-- 
2.7.4



More information about the devel mailing list