CC: kbuild-...@lists.01.org CC: linux-ker...@vger.kernel.org TO: Miquel Raynal <miquel.ray...@bootlin.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 1fe5501ba1abf2b7e78295df73675423bd6899a0 commit: 88f9f3e89a8ad1594c4d9c599bdf9c904e3976fe mtd: rawnand: nandsim: Use a consistent ns_ prefix for all functions date: 11 months ago :::::: branch date: 4 hours ago :::::: commit date: 11 months ago config: x86_64-randconfig-m031-20210420 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <l...@intel.com> Reported-by: Dan Carpenter <dan.carpen...@oracle.com> smatch warnings: drivers/mtd/nand/raw/nandsim.c:1792 ns_switch_state() error: we previously assumed 'ns->op' could be null (see line 1714) vim +1792 drivers/mtd/nand/raw/nandsim.c ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1708 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1709 /* ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1710 * Switch simulator's state. ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1711 */ 88f9f3e89a8ad1 drivers/mtd/nand/raw/nandsim.c Miquel Raynal 2020-05-25 1712 static void ns_switch_state(struct nandsim *ns) ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1713 { ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 @1714 if (ns->op) { ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1715 /* ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1716 * The current operation have already been identified. ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1717 * Just follow the states chain. ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1718 */ ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1719 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1720 ns->stateidx += 1; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1721 ns->state = ns->nxstate; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1722 ns->nxstate = ns->op[ns->stateidx + 1]; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1723 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1724 NS_DBG("switch_state: operation is known, switch to the next state, " ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1725 "state: %s, nxstate: %s\n", 88f9f3e89a8ad1 drivers/mtd/nand/raw/nandsim.c Miquel Raynal 2020-05-25 1726 ns_get_state_name(ns->state), 88f9f3e89a8ad1 drivers/mtd/nand/raw/nandsim.c Miquel Raynal 2020-05-25 1727 ns_get_state_name(ns->nxstate)); ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1728 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1729 /* See, whether we need to do some action */ 88f9f3e89a8ad1 drivers/mtd/nand/raw/nandsim.c Miquel Raynal 2020-05-25 1730 if ((ns->state & ACTION_MASK) && 88f9f3e89a8ad1 drivers/mtd/nand/raw/nandsim.c Miquel Raynal 2020-05-25 1731 ns_do_state_action(ns, ns->state) < 0) { 88f9f3e89a8ad1 drivers/mtd/nand/raw/nandsim.c Miquel Raynal 2020-05-25 1732 ns_switch_to_ready_state(ns, NS_STATUS_FAILED(ns)); ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1733 return; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1734 } ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1735 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1736 } else { ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1737 /* ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1738 * We don't yet know which operation we perform. ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1739 * Try to identify it. ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1740 */ ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1741 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1742 /* ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1743 * The only event causing the switch_state function to ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1744 * be called with yet unknown operation is new command. ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1745 */ 88f9f3e89a8ad1 drivers/mtd/nand/raw/nandsim.c Miquel Raynal 2020-05-25 1746 ns->state = ns_get_state_by_command(ns->regs.command); ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1747 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1748 NS_DBG("switch_state: operation is unknown, try to find it\n"); ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1749 88f9f3e89a8ad1 drivers/mtd/nand/raw/nandsim.c Miquel Raynal 2020-05-25 1750 if (ns_find_operation(ns, 0) != 0) ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1751 return; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1752 88f9f3e89a8ad1 drivers/mtd/nand/raw/nandsim.c Miquel Raynal 2020-05-25 1753 if ((ns->state & ACTION_MASK) && 88f9f3e89a8ad1 drivers/mtd/nand/raw/nandsim.c Miquel Raynal 2020-05-25 1754 ns_do_state_action(ns, ns->state) < 0) { 88f9f3e89a8ad1 drivers/mtd/nand/raw/nandsim.c Miquel Raynal 2020-05-25 1755 ns_switch_to_ready_state(ns, NS_STATUS_FAILED(ns)); ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1756 return; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1757 } ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1758 } ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1759 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1760 /* For 16x devices column means the page offset in words */ ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1761 if ((ns->nxstate & STATE_ADDR_MASK) && ns->busw == 16) { ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1762 NS_DBG("switch_state: double the column number for 16x device\n"); ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1763 ns->regs.column <<= 1; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1764 } ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1765 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1766 if (NS_STATE(ns->nxstate) == STATE_READY) { ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1767 /* ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1768 * The current state is the last. Return to STATE_READY ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1769 */ ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1770 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1771 u_char status = NS_STATUS_OK(ns); ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1772 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1773 /* In case of data states, see if all bytes were input/output */ ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1774 if ((ns->state & (STATE_DATAIN_MASK | STATE_DATAOUT_MASK)) ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1775 && ns->regs.count != ns->regs.num) { ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1776 NS_WARN("switch_state: not all bytes were processed, %d left\n", ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1777 ns->regs.num - ns->regs.count); ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1778 status = NS_STATUS_FAILED(ns); ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1779 } ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1780 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1781 NS_DBG("switch_state: operation complete, switch to STATE_READY state\n"); ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1782 88f9f3e89a8ad1 drivers/mtd/nand/raw/nandsim.c Miquel Raynal 2020-05-25 1783 ns_switch_to_ready_state(ns, status); ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1784 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1785 return; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1786 } else if (ns->nxstate & (STATE_DATAIN_MASK | STATE_DATAOUT_MASK)) { ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1787 /* ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1788 * If the next state is data input/output, switch to it now ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1789 */ ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1790 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1791 ns->state = ns->nxstate; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 @1792 ns->nxstate = ns->op[++ns->stateidx + 1]; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1793 ns->regs.num = ns->regs.count = 0; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1794 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1795 NS_DBG("switch_state: the next state is data I/O, switch, " ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1796 "state: %s, nxstate: %s\n", 88f9f3e89a8ad1 drivers/mtd/nand/raw/nandsim.c Miquel Raynal 2020-05-25 1797 ns_get_state_name(ns->state), 88f9f3e89a8ad1 drivers/mtd/nand/raw/nandsim.c Miquel Raynal 2020-05-25 1798 ns_get_state_name(ns->nxstate)); ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1799 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1800 /* ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1801 * Set the internal register to the count of bytes which ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1802 * are expected to be input or output ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1803 */ ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1804 switch (NS_STATE(ns->state)) { ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1805 case STATE_DATAIN: ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1806 case STATE_DATAOUT: ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1807 ns->regs.num = ns->geom.pgszoob - ns->regs.off - ns->regs.column; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1808 break; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1809 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1810 case STATE_DATAOUT_ID: ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1811 ns->regs.num = ns->geom.idbytes; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1812 break; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1813 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1814 case STATE_DATAOUT_STATUS: ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1815 ns->regs.count = ns->regs.num = 0; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1816 break; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1817 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1818 default: ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1819 NS_ERR("switch_state: BUG! unknown data state\n"); ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1820 } ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1821 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1822 } else if (ns->nxstate & STATE_ADDR_MASK) { ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1823 /* ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1824 * If the next state is address input, set the internal ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1825 * register to the number of expected address bytes ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1826 */ ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1827 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1828 ns->regs.count = 0; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1829 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1830 switch (NS_STATE(ns->nxstate)) { ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1831 case STATE_ADDR_PAGE: ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1832 ns->regs.num = ns->geom.pgaddrbytes; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1833 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1834 break; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1835 case STATE_ADDR_SEC: ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1836 ns->regs.num = ns->geom.secaddrbytes; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1837 break; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1838 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1839 case STATE_ADDR_ZERO: ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1840 ns->regs.num = 1; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1841 break; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1842 74216be41a61a8 drivers/mtd/nand/nandsim.c Artem Bityutskiy 2008-07-30 1843 case STATE_ADDR_COLUMN: 74216be41a61a8 drivers/mtd/nand/nandsim.c Artem Bityutskiy 2008-07-30 1844 /* Column address is always 2 bytes */ 74216be41a61a8 drivers/mtd/nand/nandsim.c Artem Bityutskiy 2008-07-30 1845 ns->regs.num = ns->geom.pgaddrbytes - ns->geom.secaddrbytes; 74216be41a61a8 drivers/mtd/nand/nandsim.c Artem Bityutskiy 2008-07-30 1846 break; 74216be41a61a8 drivers/mtd/nand/nandsim.c Artem Bityutskiy 2008-07-30 1847 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1848 default: ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1849 NS_ERR("switch_state: BUG! unknown address state\n"); ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1850 } ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1851 } else { ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1852 /* ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1853 * Just reset internal counters. ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1854 */ ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1855 ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1856 ns->regs.num = 0; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1857 ns->regs.count = 0; ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1858 } ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1859 } ^1da177e4c3f41 drivers/mtd/nand/nandsim.c Linus Torvalds 2005-04-16 1860 :::::: The code at line 1792 was first introduced by commit :::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2 :::::: TO: Linus Torvalds <torva...@ppc970.osdl.org> :::::: CC: Linus Torvalds <torva...@ppc970.osdl.org> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- kbuild@lists.01.org To unsubscribe send an email to kbuild-le...@lists.01.org