From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: drivers/net/hamradio/scc.c:1748 scc_net_siocdevprivate() warn: potential spectre issue 'Ivec' [w]
Date: Tue, 12 Dec 2023 08:17:45 +0800 [thread overview]
Message-ID: <202312120826.wrConx3j-lkp@intel.com> (raw)
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Arnd Bergmann <arnd@arndb.de>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: a39b6ac3781d46ba18193c9dbb2110f31e9bffe9
commit: 25ec92fbdd23a0a2bfd2bdf489e60ea4f0ae46d1 hamradio: use ndo_siocdevprivate
date: 2 years, 5 months ago
:::::: branch date: 26 hours ago
:::::: commit date: 2 years, 5 months ago
config: i386-randconfig-141-20231111 (https://download.01.org/0day-ci/archive/20231212/202312120826.wrConx3j-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce: (https://download.01.org/0day-ci/archive/20231212/202312120826.wrConx3j-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202312120826.wrConx3j-lkp@intel.com/
New smatch warnings:
drivers/net/hamradio/scc.c:1748 scc_net_siocdevprivate() warn: potential spectre issue 'Ivec' [w]
drivers/net/hamradio/scc.c:1783 scc_net_siocdevprivate() error: buffer overflow 'SCC_Info' 8 <= s32max
drivers/net/hamradio/scc.c:1946 scc_net_siocdevprivate() warn: 'hwcfg.vector_latch' from __request_region() not released on lines: 1827.
Old smatch warnings:
drivers/net/hamradio/scc.c:1784 scc_net_siocdevprivate() error: buffer overflow 'SCC_Info' 8 <= s32max
drivers/net/hamradio/scc.c:1785 scc_net_siocdevprivate() error: buffer overflow 'SCC_Info' 8 <= s32max
drivers/net/hamradio/scc.c:1786 scc_net_siocdevprivate() error: buffer overflow 'SCC_Info' 8 <= s32max
drivers/net/hamradio/scc.c:1787 scc_net_siocdevprivate() error: buffer overflow 'SCC_Info' 8 <= s32max
drivers/net/hamradio/scc.c:1788 scc_net_siocdevprivate() error: buffer overflow 'SCC_Info' 8 <= s32max
drivers/net/hamradio/scc.c:1800 scc_net_siocdevprivate() error: buffer overflow 'SCC_Info' 8 <= s32max
drivers/net/hamradio/scc.c:1801 scc_net_siocdevprivate() error: buffer overflow 'SCC_Info' 8 <= s32max
drivers/net/hamradio/scc.c:1802 scc_net_siocdevprivate() error: buffer overflow 'SCC_Info' 8 <= s32max
drivers/net/hamradio/scc.c:1803 scc_net_siocdevprivate() error: buffer overflow 'SCC_Info' 8 <= s32max
drivers/net/hamradio/scc.c:1804 scc_net_siocdevprivate() error: buffer overflow 'SCC_Info' 8 <= s32max
drivers/net/hamradio/scc.c:1822 scc_net_siocdevprivate() error: buffer overflow 'SCC_Info' 8 <= s32max
drivers/net/hamradio/scc.c:1823 scc_net_siocdevprivate() error: buffer overflow 'SCC_Info' 8 <= s32max
drivers/net/hamradio/scc.c:1826 scc_net_siocdevprivate() error: buffer overflow 'SCC_Info' 8 <= s32max
vim +/Ivec +1748 drivers/net/hamradio/scc.c
^1da177e4c3f41 Linus Torvalds 2005-04-16 1695
^1da177e4c3f41 Linus Torvalds 2005-04-16 1696 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 1697 * SIOCSCCCFG - configure driver arg: (struct scc_hw_config *) arg
^1da177e4c3f41 Linus Torvalds 2005-04-16 1698 * SIOCSCCINI - initialize driver arg: ---
^1da177e4c3f41 Linus Torvalds 2005-04-16 1699 * SIOCSCCCHANINI - initialize channel arg: (struct scc_modem *) arg
^1da177e4c3f41 Linus Torvalds 2005-04-16 1700 * SIOCSCCSMEM - set memory arg: (struct scc_mem_config *) arg
^1da177e4c3f41 Linus Torvalds 2005-04-16 1701 * SIOCSCCGKISS - get level 1 parameter arg: (struct scc_kiss_cmd *) arg
^1da177e4c3f41 Linus Torvalds 2005-04-16 1702 * SIOCSCCSKISS - set level 1 parameter arg: (struct scc_kiss_cmd *) arg
^1da177e4c3f41 Linus Torvalds 2005-04-16 1703 * SIOCSCCGSTAT - get driver status arg: (struct scc_stat *) arg
^1da177e4c3f41 Linus Torvalds 2005-04-16 1704 * SIOCSCCCAL - send calib. pattern arg: (struct scc_calibrate *) arg
^1da177e4c3f41 Linus Torvalds 2005-04-16 1705 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1706
25ec92fbdd23a0 Arnd Bergmann 2021-07-27 1707 static int scc_net_siocdevprivate(struct net_device *dev,
25ec92fbdd23a0 Arnd Bergmann 2021-07-27 1708 struct ifreq *ifr, void __user *arg, int cmd)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1709 {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1710 struct scc_kiss_cmd kiss_cmd;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1711 struct scc_mem_config memcfg;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1712 struct scc_hw_config hwcfg;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1713 struct scc_calibrate cal;
f4bdd264b43cc6 Wang Chen 2008-11-20 1714 struct scc_channel *scc = (struct scc_channel *) dev->ml_priv;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1715 int chan;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1716 unsigned char device_name[IFNAMSIZ];
^1da177e4c3f41 Linus Torvalds 2005-04-16 1717
^1da177e4c3f41 Linus Torvalds 2005-04-16 1718 if (!Driver_Initialized)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1719 {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1720 if (cmd == SIOCSCCCFG)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1721 {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1722 int found = 1;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1723
^1da177e4c3f41 Linus Torvalds 2005-04-16 1724 if (!capable(CAP_SYS_RAWIO)) return -EPERM;
25ec92fbdd23a0 Arnd Bergmann 2021-07-27 1725 if (in_compat_syscall())
25ec92fbdd23a0 Arnd Bergmann 2021-07-27 1726 return -EOPNOTSUPP;
25ec92fbdd23a0 Arnd Bergmann 2021-07-27 1727
^1da177e4c3f41 Linus Torvalds 2005-04-16 1728 if (!arg) return -EFAULT;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1729
^1da177e4c3f41 Linus Torvalds 2005-04-16 1730 if (Nchips >= SCC_MAXCHIPS)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1731 return -EINVAL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1732
^1da177e4c3f41 Linus Torvalds 2005-04-16 1733 if (copy_from_user(&hwcfg, arg, sizeof(hwcfg)))
^1da177e4c3f41 Linus Torvalds 2005-04-16 1734 return -EFAULT;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1735
^1da177e4c3f41 Linus Torvalds 2005-04-16 1736 if (hwcfg.irq == 2) hwcfg.irq = 9;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1737
60e4ad7a72fd7c Yinghai Lu 2008-08-19 1738 if (hwcfg.irq < 0 || hwcfg.irq >= nr_irqs)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1739 return -EINVAL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1740
^1da177e4c3f41 Linus Torvalds 2005-04-16 1741 if (!Ivec[hwcfg.irq].used && hwcfg.irq)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1742 {
1b36efe07f83ec Jeff Garzik 2007-10-29 1743 if (request_irq(hwcfg.irq, scc_isr,
9714481e677562 Michael Opdenacker 2013-10-05 1744 0, "AX.25 SCC",
1b36efe07f83ec Jeff Garzik 2007-10-29 1745 (void *)(long) hwcfg.irq))
^1da177e4c3f41 Linus Torvalds 2005-04-16 1746 printk(KERN_WARNING "z8530drv: warning, cannot get IRQ %d\n", hwcfg.irq);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1747 else
^1da177e4c3f41 Linus Torvalds 2005-04-16 @1748 Ivec[hwcfg.irq].used = 1;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1749 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1750
^1da177e4c3f41 Linus Torvalds 2005-04-16 1751 if (hwcfg.vector_latch && !Vector_Latch) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1752 if (!request_region(hwcfg.vector_latch, 1, "scc vector latch"))
^1da177e4c3f41 Linus Torvalds 2005-04-16 1753 printk(KERN_WARNING "z8530drv: warning, cannot reserve vector latch port 0x%lx\n, disabled.", hwcfg.vector_latch);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1754 else
^1da177e4c3f41 Linus Torvalds 2005-04-16 1755 Vector_Latch = hwcfg.vector_latch;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1756 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1757
^1da177e4c3f41 Linus Torvalds 2005-04-16 1758 if (hwcfg.clock == 0)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1759 hwcfg.clock = SCC_DEFAULT_CLOCK;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1760
^1da177e4c3f41 Linus Torvalds 2005-04-16 1761 #ifndef SCC_DONT_CHECK
^1da177e4c3f41 Linus Torvalds 2005-04-16 1762
^1da177e4c3f41 Linus Torvalds 2005-04-16 1763 if(request_region(hwcfg.ctrl_a, 1, "scc-probe"))
^1da177e4c3f41 Linus Torvalds 2005-04-16 1764 {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1765 disable_irq(hwcfg.irq);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1766 Outb(hwcfg.ctrl_a, 0);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1767 OutReg(hwcfg.ctrl_a, R9, FHWRES);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1768 udelay(100);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1769 OutReg(hwcfg.ctrl_a,R13,0x55); /* is this chip really there? */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1770 udelay(5);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1771
^1da177e4c3f41 Linus Torvalds 2005-04-16 1772 if (InReg(hwcfg.ctrl_a,R13) != 0x55)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1773 found = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1774 enable_irq(hwcfg.irq);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1775 release_region(hwcfg.ctrl_a, 1);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1776 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1777 else
^1da177e4c3f41 Linus Torvalds 2005-04-16 1778 found = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1779 #endif
^1da177e4c3f41 Linus Torvalds 2005-04-16 1780
^1da177e4c3f41 Linus Torvalds 2005-04-16 1781 if (found)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1782 {
^1da177e4c3f41 Linus Torvalds 2005-04-16 @1783 SCC_Info[2*Nchips ].ctrl = hwcfg.ctrl_a;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1784 SCC_Info[2*Nchips ].data = hwcfg.data_a;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1785 SCC_Info[2*Nchips ].irq = hwcfg.irq;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1786 SCC_Info[2*Nchips+1].ctrl = hwcfg.ctrl_b;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1787 SCC_Info[2*Nchips+1].data = hwcfg.data_b;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1788 SCC_Info[2*Nchips+1].irq = hwcfg.irq;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1789
^1da177e4c3f41 Linus Torvalds 2005-04-16 1790 SCC_ctrl[Nchips].chan_A = hwcfg.ctrl_a;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1791 SCC_ctrl[Nchips].chan_B = hwcfg.ctrl_b;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1792 SCC_ctrl[Nchips].irq = hwcfg.irq;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1793 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1794
^1da177e4c3f41 Linus Torvalds 2005-04-16 1795
^1da177e4c3f41 Linus Torvalds 2005-04-16 1796 for (chan = 0; chan < 2; chan++)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1797 {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1798 sprintf(device_name, "%s%i", SCC_DriverName, 2*Nchips+chan);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1799
^1da177e4c3f41 Linus Torvalds 2005-04-16 1800 SCC_Info[2*Nchips+chan].special = hwcfg.special;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1801 SCC_Info[2*Nchips+chan].clock = hwcfg.clock;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1802 SCC_Info[2*Nchips+chan].brand = hwcfg.brand;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1803 SCC_Info[2*Nchips+chan].option = hwcfg.option;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1804 SCC_Info[2*Nchips+chan].enhanced = hwcfg.escc;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1805
^1da177e4c3f41 Linus Torvalds 2005-04-16 1806 #ifdef SCC_DONT_CHECK
^1da177e4c3f41 Linus Torvalds 2005-04-16 1807 printk(KERN_INFO "%s: data port = 0x%3.3x control port = 0x%3.3x\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 1808 device_name,
^1da177e4c3f41 Linus Torvalds 2005-04-16 1809 SCC_Info[2*Nchips+chan].data,
^1da177e4c3f41 Linus Torvalds 2005-04-16 1810 SCC_Info[2*Nchips+chan].ctrl);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1811
^1da177e4c3f41 Linus Torvalds 2005-04-16 1812 #else
^1da177e4c3f41 Linus Torvalds 2005-04-16 1813 printk(KERN_INFO "%s: data port = 0x%3.3lx control port = 0x%3.3lx -- %s\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 1814 device_name,
^1da177e4c3f41 Linus Torvalds 2005-04-16 1815 chan? hwcfg.data_b : hwcfg.data_a,
^1da177e4c3f41 Linus Torvalds 2005-04-16 1816 chan? hwcfg.ctrl_b : hwcfg.ctrl_a,
^1da177e4c3f41 Linus Torvalds 2005-04-16 1817 found? "found" : "missing");
^1da177e4c3f41 Linus Torvalds 2005-04-16 1818 #endif
^1da177e4c3f41 Linus Torvalds 2005-04-16 1819
^1da177e4c3f41 Linus Torvalds 2005-04-16 1820 if (found)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1821 {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1822 request_region(SCC_Info[2*Nchips+chan].ctrl, 1, "scc ctrl");
^1da177e4c3f41 Linus Torvalds 2005-04-16 1823 request_region(SCC_Info[2*Nchips+chan].data, 1, "scc data");
^1da177e4c3f41 Linus Torvalds 2005-04-16 1824 if (Nchips+chan != 0 &&
^1da177e4c3f41 Linus Torvalds 2005-04-16 1825 scc_net_alloc(device_name,
^1da177e4c3f41 Linus Torvalds 2005-04-16 1826 &SCC_Info[2*Nchips+chan]))
^1da177e4c3f41 Linus Torvalds 2005-04-16 1827 return -EINVAL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1828 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1829 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1830
^1da177e4c3f41 Linus Torvalds 2005-04-16 1831 if (found) Nchips++;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1832
^1da177e4c3f41 Linus Torvalds 2005-04-16 1833 return 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1834 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1835
^1da177e4c3f41 Linus Torvalds 2005-04-16 1836 if (cmd == SIOCSCCINI)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1837 {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1838 if (!capable(CAP_SYS_RAWIO))
^1da177e4c3f41 Linus Torvalds 2005-04-16 1839 return -EPERM;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1840
^1da177e4c3f41 Linus Torvalds 2005-04-16 1841 if (Nchips == 0)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1842 return -EINVAL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1843
^1da177e4c3f41 Linus Torvalds 2005-04-16 1844 z8530_init();
^1da177e4c3f41 Linus Torvalds 2005-04-16 1845 return 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1846 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1847
^1da177e4c3f41 Linus Torvalds 2005-04-16 1848 return -EINVAL; /* confuse the user */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1849 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1850
^1da177e4c3f41 Linus Torvalds 2005-04-16 1851 if (!scc->init)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1852 {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1853 if (cmd == SIOCSCCCHANINI)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1854 {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1855 if (!capable(CAP_NET_ADMIN)) return -EPERM;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1856 if (!arg) return -EINVAL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1857
^1da177e4c3f41 Linus Torvalds 2005-04-16 1858 scc->stat.bufsize = SCC_BUFSIZE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1859
^1da177e4c3f41 Linus Torvalds 2005-04-16 1860 if (copy_from_user(&scc->modem, arg, sizeof(struct scc_modem)))
^1da177e4c3f41 Linus Torvalds 2005-04-16 1861 return -EINVAL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1862
^1da177e4c3f41 Linus Torvalds 2005-04-16 1863 /* default KISS Params */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1864
^1da177e4c3f41 Linus Torvalds 2005-04-16 1865 if (scc->modem.speed < 4800)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1866 {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1867 scc->kiss.txdelay = 36; /* 360 ms */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1868 scc->kiss.persist = 42; /* 25% persistence */ /* was 25 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1869 scc->kiss.slottime = 16; /* 160 ms */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1870 scc->kiss.tailtime = 4; /* minimal reasonable value */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1871 scc->kiss.fulldup = 0; /* CSMA */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1872 scc->kiss.waittime = 50; /* 500 ms */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1873 scc->kiss.maxkeyup = 10; /* 10 s */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1874 scc->kiss.mintime = 3; /* 3 s */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1875 scc->kiss.idletime = 30; /* 30 s */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1876 scc->kiss.maxdefer = 120; /* 2 min */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1877 scc->kiss.softdcd = 0; /* hardware dcd */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1878 } else {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1879 scc->kiss.txdelay = 10; /* 100 ms */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1880 scc->kiss.persist = 64; /* 25% persistence */ /* was 25 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1881 scc->kiss.slottime = 8; /* 160 ms */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1882 scc->kiss.tailtime = 1; /* minimal reasonable value */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1883 scc->kiss.fulldup = 0; /* CSMA */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1884 scc->kiss.waittime = 50; /* 500 ms */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1885 scc->kiss.maxkeyup = 7; /* 7 s */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1886 scc->kiss.mintime = 3; /* 3 s */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1887 scc->kiss.idletime = 30; /* 30 s */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1888 scc->kiss.maxdefer = 120; /* 2 min */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1889 scc->kiss.softdcd = 0; /* hardware dcd */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1890 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1891
^1da177e4c3f41 Linus Torvalds 2005-04-16 1892 scc->tx_buff = NULL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1893 skb_queue_head_init(&scc->tx_queue);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1894 scc->init = 1;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1895
^1da177e4c3f41 Linus Torvalds 2005-04-16 1896 return 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1897 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1898
^1da177e4c3f41 Linus Torvalds 2005-04-16 1899 return -EINVAL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1900 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1901
^1da177e4c3f41 Linus Torvalds 2005-04-16 1902 switch(cmd)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1903 {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1904 case SIOCSCCRESERVED:
^1da177e4c3f41 Linus Torvalds 2005-04-16 1905 return -ENOIOCTLCMD;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1906
^1da177e4c3f41 Linus Torvalds 2005-04-16 1907 case SIOCSCCSMEM:
^1da177e4c3f41 Linus Torvalds 2005-04-16 1908 if (!capable(CAP_SYS_RAWIO)) return -EPERM;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1909 if (!arg || copy_from_user(&memcfg, arg, sizeof(memcfg)))
^1da177e4c3f41 Linus Torvalds 2005-04-16 1910 return -EINVAL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1911 scc->stat.bufsize = memcfg.bufsize;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1912 return 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1913
^1da177e4c3f41 Linus Torvalds 2005-04-16 1914 case SIOCSCCGSTAT:
^1da177e4c3f41 Linus Torvalds 2005-04-16 1915 if (!arg || copy_to_user(arg, &scc->stat, sizeof(scc->stat)))
^1da177e4c3f41 Linus Torvalds 2005-04-16 1916 return -EINVAL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1917 return 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1918
^1da177e4c3f41 Linus Torvalds 2005-04-16 1919 case SIOCSCCGKISS:
^1da177e4c3f41 Linus Torvalds 2005-04-16 1920 if (!arg || copy_from_user(&kiss_cmd, arg, sizeof(kiss_cmd)))
^1da177e4c3f41 Linus Torvalds 2005-04-16 1921 return -EINVAL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1922 kiss_cmd.param = scc_get_param(scc, kiss_cmd.command);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1923 if (copy_to_user(arg, &kiss_cmd, sizeof(kiss_cmd)))
^1da177e4c3f41 Linus Torvalds 2005-04-16 1924 return -EINVAL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1925 return 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1926
^1da177e4c3f41 Linus Torvalds 2005-04-16 1927 case SIOCSCCSKISS:
^1da177e4c3f41 Linus Torvalds 2005-04-16 1928 if (!capable(CAP_NET_ADMIN)) return -EPERM;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1929 if (!arg || copy_from_user(&kiss_cmd, arg, sizeof(kiss_cmd)))
^1da177e4c3f41 Linus Torvalds 2005-04-16 1930 return -EINVAL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1931 return scc_set_param(scc, kiss_cmd.command, kiss_cmd.param);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1932
^1da177e4c3f41 Linus Torvalds 2005-04-16 1933 case SIOCSCCCAL:
^1da177e4c3f41 Linus Torvalds 2005-04-16 1934 if (!capable(CAP_SYS_RAWIO)) return -EPERM;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1935 if (!arg || copy_from_user(&cal, arg, sizeof(cal)) || cal.time == 0)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1936 return -EINVAL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1937
^1da177e4c3f41 Linus Torvalds 2005-04-16 1938 scc_start_calibrate(scc, cal.time, cal.pattern);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1939 return 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1940
^1da177e4c3f41 Linus Torvalds 2005-04-16 1941 default:
^1da177e4c3f41 Linus Torvalds 2005-04-16 1942 return -ENOIOCTLCMD;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1943
^1da177e4c3f41 Linus Torvalds 2005-04-16 1944 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1945
^1da177e4c3f41 Linus Torvalds 2005-04-16 @1946 return -EINVAL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1947 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1948
:::::: The code at line 1748 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2023-12-12 0:18 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-12 0:17 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2023-12-12 18:43 drivers/net/hamradio/scc.c:1748 scc_net_siocdevprivate() warn: potential spectre issue 'Ivec' [w] kernel test robot
2023-12-13 15:16 kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202312120826.wrConx3j-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.