Using "goto" and "switch" statement only makes it harder to follow
control flow and doesn't bring any advantages. Rewrite the code to avoid
using "goto".

Signed-off-by: Brian Norris <computersforpe...@gmail.com>
Signed-off-by: Andrey Smirnov <andrew.smir...@gmail.com>
---
 drivers/mtd/nand/nand_base.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index bee480f..5316e00 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -2122,7 +2122,7 @@ static int nand_do_read_oob(struct mtd_info *mtd, loff_t 
from,
 static int nand_read_oob(struct mtd_info *mtd, loff_t from,
                         struct mtd_oob_ops *ops)
 {
-       int ret = -ENOTSUPP;
+       int ret;
 
        ops->retlen = 0;
 
@@ -2133,24 +2133,18 @@ static int nand_read_oob(struct mtd_info *mtd, loff_t 
from,
                return -EINVAL;
        }
 
-       nand_get_device(mtd, FL_READING);
-
-       switch (ops->mode) {
-       case MTD_OPS_PLACE_OOB:
-       case MTD_OPS_AUTO_OOB:
-       case MTD_OPS_RAW:
-               break;
+       if (ops->mode != MTD_OPS_PLACE_OOB &&
+           ops->mode != MTD_OPS_AUTO_OOB &&
+           ops->mode != MTD_OPS_RAW)
+               return -ENOTSUPP;
 
-       default:
-               goto out;
-       }
+       nand_get_device(mtd, FL_READING);
 
        if (!ops->datbuf)
                ret = nand_do_read_oob(mtd, from, ops);
        else
                ret = nand_do_read_ops(mtd, from, ops);
 
-out:
        nand_release_device(mtd);
        return ret;
 }
-- 
2.5.5

Reply via email to