Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mfd: ab8500-debugfs: Use common error handling code in ab8500_print_modem_registers()

Add jump targets so that two error messages are stored only once
at the end of this function implementation.

This issue was detected by using the Coccinelle software.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>

authored by

Markus Elfring and committed by
Lee Jones
0a5d79bf e368866e

+19 -16
+19 -16
drivers/mfd/ab8500-debugfs.c
··· 1620 1620 1621 1621 err = abx500_get_register_interruptible(dev, 1622 1622 AB8500_REGU_CTRL1, AB8500_SUPPLY_CONTROL_REG, &orig_value); 1623 - if (err < 0) { 1624 - dev_err(dev, "ab->read fail %d\n", err); 1625 - return err; 1626 - } 1623 + if (err < 0) 1624 + goto report_read_failure; 1625 + 1627 1626 /* Config 1 will allow APE side to read SIM registers */ 1628 1627 err = abx500_set_register_interruptible(dev, 1629 1628 AB8500_REGU_CTRL1, AB8500_SUPPLY_CONTROL_REG, 1630 1629 AB8500_SUPPLY_CONTROL_CONFIG_1); 1631 - if (err < 0) { 1632 - dev_err(dev, "ab->write fail %d\n", err); 1633 - return err; 1634 - } 1630 + if (err < 0) 1631 + goto report_write_failure; 1635 1632 1636 1633 seq_printf(s, " bank 0x%02X:\n", bank); 1637 1634 ··· 1638 1641 for (reg = AB8500_FIRST_SIM_REG; reg <= last_sim_reg; reg++) { 1639 1642 err = abx500_get_register_interruptible(dev, 1640 1643 bank, reg, &value); 1641 - if (err < 0) { 1642 - dev_err(dev, "ab->read fail %d\n", err); 1643 - return err; 1644 - } 1644 + if (err < 0) 1645 + goto report_read_failure; 1646 + 1645 1647 seq_printf(s, " [0x%02X/0x%02X]: 0x%02X\n", bank, reg, value); 1646 1648 } 1647 1649 err = abx500_set_register_interruptible(dev, 1648 1650 AB8500_REGU_CTRL1, AB8500_SUPPLY_CONTROL_REG, orig_value); 1649 - if (err < 0) { 1650 - dev_err(dev, "ab->write fail %d\n", err); 1651 - return err; 1652 - } 1651 + if (err < 0) 1652 + goto report_write_failure; 1653 + 1653 1654 return 0; 1655 + 1656 + report_read_failure: 1657 + dev_err(dev, "ab->read fail %d\n", err); 1658 + return err; 1659 + 1660 + report_write_failure: 1661 + dev_err(dev, "ab->write fail %d\n", err); 1662 + return err; 1654 1663 } 1655 1664 1656 1665 static int ab8500_modem_open(struct inode *inode, struct file *file)