All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: "Johnson CH Chen (陳昭勳)" <JohnsonCH.Chen@moxa.com>,
	"Jiri Slaby" <jirislaby@gmail.com>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
Cc: kbuild-all@lists.01.org,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-serial@vger.kernel.org" <linux-serial@vger.kernel.org>
Subject: Re: [PATCH] tty: Add MOXA NPort Real TTY Driver
Date: Fri, 24 Jul 2020 13:32:22 +0800	[thread overview]
Message-ID: <202007241310.55tGDyxu%lkp@intel.com> (raw)
In-Reply-To: <HK2PR01MB328134FB2EF5F9D1E381BDA3FA610@HK2PR01MB3281.apcprd01.prod.exchangelabs.com>

[-- Attachment #1: Type: text/plain, Size: 15045 bytes --]

Hi "Johnson,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on tty/tty-testing]
[also build test WARNING on v5.8-rc6 next-20200723]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Johnson-CH-Chen/tty-Add-MOXA-NPort-Real-TTY-Driver/20200714-142712
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git tty-testing
config: mips-randconfig-s032-20200723 (attached as .config)
compiler: mipsel-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.2-93-g4c6cbe55-dirty
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=mips 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)

   drivers/tty/npreal2.c:1107:26: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void [noderef] __user *to @@     got struct serial_struct *retinfo @@
   drivers/tty/npreal2.c:1107:26: sparse:     expected void [noderef] __user *to
   drivers/tty/npreal2.c:1107:26: sparse:     got struct serial_struct *retinfo
   drivers/tty/npreal2.c:1122:56: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void const [noderef] __user *from @@     got struct serial_struct *new_info @@
   drivers/tty/npreal2.c:1122:56: sparse:     expected void const [noderef] __user *from
   drivers/tty/npreal2.c:1122:56: sparse:     got struct serial_struct *new_info
   drivers/tty/npreal2.c:1149:57: sparse: sparse: Using plain integer as NULL pointer
   drivers/tty/npreal2.c:1186:9: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected unsigned int [noderef] __user *__pu_addr @@     got unsigned int *value @@
   drivers/tty/npreal2.c:1186:9: sparse:     expected unsigned int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:1186:9: sparse:     got unsigned int *value
   drivers/tty/npreal2.c:1624:38: sparse: sparse: Using plain integer as NULL pointer
   drivers/tty/npreal2.c:1897:34: sparse: sparse: Using plain integer as NULL pointer
   drivers/tty/npreal2.c:1914:21: sparse: sparse: Using plain integer as NULL pointer
   drivers/tty/npreal2.c:1984:46: sparse: sparse: Using plain integer as NULL pointer
   drivers/tty/npreal2.c:2261:17: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected unsigned long [noderef] __user *__pu_addr @@     got unsigned long * @@
   drivers/tty/npreal2.c:2261:17: sparse:     expected unsigned long [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2261:17: sparse:     got unsigned long *
>> drivers/tty/npreal2.c:2265:17: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected unsigned long const [noderef] __user *__gu_ptr @@     got unsigned long * @@
>> drivers/tty/npreal2.c:2265:17: sparse:     expected unsigned long const [noderef] __user *__gu_ptr
   drivers/tty/npreal2.c:2265:17: sparse:     got unsigned long *
   drivers/tty/npreal2.c:2319:21: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2319:21: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2319:21: sparse:     got int *
   drivers/tty/npreal2.c:2319:62: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2319:62: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2319:62: sparse:     got int *
   drivers/tty/npreal2.c:2320:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2320:25: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2320:25: sparse:     got int *
   drivers/tty/npreal2.c:2321:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2321:25: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2321:25: sparse:     got int *
   drivers/tty/npreal2.c:2322:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2322:25: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2322:25: sparse:     got int *
   drivers/tty/npreal2.c:2323:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2323:25: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2323:25: sparse:     got int *
   drivers/tty/npreal2.c:2324:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2324:25: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2324:25: sparse:     got int *
   drivers/tty/npreal2.c:2329:17: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2329:17: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2329:17: sparse:     got int *
   drivers/tty/npreal2.c:2330:17: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2330:17: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2330:17: sparse:     got int *
   drivers/tty/npreal2.c:2331:17: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2331:17: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2331:17: sparse:     got int *
   drivers/tty/npreal2.c:2332:17: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2332:17: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2332:17: sparse:     got int *
   drivers/tty/npreal2.c:2570:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void [noderef] __user *to @@     got void * @@
   drivers/tty/npreal2.c:2570:35: sparse:     expected void [noderef] __user *to
   drivers/tty/npreal2.c:2570:35: sparse:     got void *
   drivers/tty/npreal2.c:2591:57: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void const [noderef] __user *from @@     got void * @@
   drivers/tty/npreal2.c:2591:57: sparse:     expected void const [noderef] __user *from
   drivers/tty/npreal2.c:2591:57: sparse:     got void *
   drivers/tty/npreal2.c:2720:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void [noderef] __user *to @@     got void * @@
   drivers/tty/npreal2.c:2720:35: sparse:     expected void [noderef] __user *to
   drivers/tty/npreal2.c:2720:35: sparse:     got void *
   drivers/tty/npreal2.c:2734:56: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void const [noderef] __user *from @@     got void * @@
   drivers/tty/npreal2.c:2734:56: sparse:     expected void const [noderef] __user *from
   drivers/tty/npreal2.c:2734:56: sparse:     got void *
   drivers/tty/npreal2.c:2803:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void [noderef] __user *to @@     got char *buf @@
   drivers/tty/npreal2.c:2803:34: sparse:     expected void [noderef] __user *to
   drivers/tty/npreal2.c:2803:34: sparse:     got char *buf
   drivers/tty/npreal2.c:2831:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void [noderef] __user *to @@     got char * @@
   drivers/tty/npreal2.c:2831:38: sparse:     expected void [noderef] __user *to
   drivers/tty/npreal2.c:2831:38: sparse:     got char *
   drivers/tty/npreal2.c:2899:38: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void const [noderef] __user *from @@     got char const *buf @@
   drivers/tty/npreal2.c:2899:38: sparse:     expected void const [noderef] __user *from
   drivers/tty/npreal2.c:2899:38: sparse:     got char const *buf
>> drivers/tty/npreal2.c:2950:22: sparse: sparse: incorrect type in initializer (incompatible argument 2 (different address spaces)) @@     expected int ( *proc_read )( ... ) @@     got int ( * )( ... ) @@
>> drivers/tty/npreal2.c:2950:22: sparse:     expected int ( *proc_read )( ... )
>> drivers/tty/npreal2.c:2950:22: sparse:     got int ( * )( ... )
>> drivers/tty/npreal2.c:2951:23: sparse: sparse: incorrect type in initializer (incompatible argument 2 (different address spaces)) @@     expected int ( *proc_write )( ... ) @@     got int ( * )( ... ) @@
>> drivers/tty/npreal2.c:2951:23: sparse:     expected int ( *proc_write )( ... )
   drivers/tty/npreal2.c:2951:23: sparse:     got int ( * )( ... )
   drivers/tty/npreal2.c:2954:22: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __poll_t ( *proc_poll )( ... ) @@     got unsigned int ( * )( ... ) @@
   drivers/tty/npreal2.c:2954:22: sparse:     expected restricted __poll_t ( *proc_poll )( ... )
   drivers/tty/npreal2.c:2954:22: sparse:     got unsigned int ( * )( ... )

vim +2265 drivers/tty/npreal2.c

  2201	
  2202	static int npreal_ioctl(struct tty_struct *tty, unsigned int cmd,
  2203				unsigned long arg)
  2204	{
  2205		struct npreal_struct *info = (struct npreal_struct *)tty->driver_data;
  2206		struct serial_icounter_struct *p_cuser; /* user space */
  2207		unsigned long templ;
  2208		int ret = 0;
  2209	
  2210		if (!info)
  2211			return -ENODEV;
  2212	
  2213		if ((cmd != TIOCGSERIAL) && (cmd != TIOCMIWAIT) && (cmd != TIOCGICOUNT) &&
  2214			test_bit(TTY_IO_ERROR, &tty->flags))
  2215			return -EIO;
  2216	
  2217		switch (cmd) {
  2218		case TCFLSH:
  2219			ret = tty_check_change(tty);
  2220			if (!ret) {
  2221				switch (arg) {
  2222				case TCIFLUSH:
  2223					if (tty->ldisc->ops->flush_buffer)
  2224						tty->ldisc->ops->flush_buffer(tty);
  2225					break;
  2226	
  2227				case TCIOFLUSH:
  2228					if (tty->ldisc->ops->flush_buffer)
  2229						tty->ldisc->ops->flush_buffer(tty);
  2230					npreal_flush_buffer(tty);
  2231					break;
  2232	
  2233				case TCOFLUSH:
  2234					npreal_flush_buffer(tty);
  2235					break;
  2236	
  2237				default:
  2238					ret = -EINVAL;
  2239				}
  2240			}
  2241			break;
  2242	
  2243		case TCSBRK: /* SVID version: non-zero arg --> no break */
  2244			ret = tty_check_change(tty);
  2245			if (!ret) {
  2246				tty_wait_until_sent(tty, 0);
  2247				if (!arg)
  2248					npreal_send_break(info, HZ / 4);
  2249			}
  2250			break;
  2251	
  2252		case TCSBRKP: /* support for POSIX tcsendbreak() */
  2253			ret = tty_check_change(tty);
  2254			if (!ret) {
  2255				tty_wait_until_sent(tty, 0);
  2256				npreal_send_break(info, arg ? arg * (HZ / 10) : HZ / 4);
  2257			}
  2258			break;
  2259	
  2260		case TIOCGSOFTCAR:
  2261			put_user(C_CLOCAL(tty) ? 1 : 0, (unsigned long *)arg);
  2262			break;
  2263	
  2264		case TIOCSSOFTCAR:
> 2265			get_user(templ, (unsigned long *)arg);
  2266			tty->termios.c_cflag = ((tty->termios.c_cflag & ~CLOCAL) | (arg ? CLOCAL : 0));
  2267			break;
  2268	
  2269		case TIOCGSERIAL:
  2270			ret = (npreal_get_serial_info(info, (struct serial_struct *)arg));
  2271			break;
  2272	
  2273		case TIOCSSERIAL:
  2274			ret = (npreal_set_serial_info(info, (struct serial_struct *)arg));
  2275			break;
  2276	
  2277		case TIOCSERGETLSR: /* Get line status register */
  2278			ret = (npreal_get_lsr_info(info, (unsigned int *)arg));
  2279			break;
  2280	
  2281		case TIOCMIWAIT: {
  2282			struct async_icount cprev;
  2283			DECLARE_WAITQUEUE(wait, current);
  2284	
  2285			cprev = info->icount;
  2286			add_wait_queue(&info->delta_msr_wait, &wait);
  2287			while (1) {
  2288				struct async_icount cnow;
  2289	
  2290				cnow = info->icount;
  2291				if (((arg & TIOCM_RNG) && (cnow.rng != cprev.rng)) ||
  2292					((arg & TIOCM_DSR) && (cnow.dsr != cprev.dsr)) ||
  2293					((arg & TIOCM_CD) && (cnow.dcd != cprev.dcd)) ||
  2294					((arg & TIOCM_CTS) && (cnow.cts != cprev.cts))) {
  2295					ret = 0;
  2296					break;
  2297				}
  2298	
  2299				if (signal_pending(current)) {
  2300					ret = -ERESTARTSYS;
  2301					break;
  2302				}
  2303	
  2304				cprev = cnow;
  2305				current->state = TASK_INTERRUPTIBLE;
  2306				schedule();
  2307			}
  2308	
  2309			remove_wait_queue(&info->delta_msr_wait, &wait);
  2310			break;
  2311		}
  2312	
  2313		case TIOCGICOUNT:{
  2314			struct async_icount cnow;
  2315	
  2316			cnow = info->icount;
  2317			p_cuser = (struct serial_icounter_struct *)arg;
  2318	
  2319			if (put_user(cnow.frame, &p_cuser->frame) || put_user(cnow.brk, &p_cuser->brk) ||
  2320				put_user(cnow.overrun, &p_cuser->overrun) ||
  2321				put_user(cnow.buf_overrun, &p_cuser->buf_overrun) ||
  2322				put_user(cnow.parity, &p_cuser->parity) ||
  2323				put_user(cnow.rx, &p_cuser->rx) ||
  2324				put_user(cnow.tx, &p_cuser->tx)) {
  2325				ret = -EFAULT;
  2326				break;
  2327			}
  2328	
  2329			put_user(cnow.cts, &p_cuser->cts);
  2330			put_user(cnow.dsr, &p_cuser->dsr);
  2331			put_user(cnow.rng, &p_cuser->rng);
  2332			put_user(cnow.dcd, &p_cuser->dcd);
  2333			break;
  2334		}
  2335		case TCXONC:
  2336			ret = tty_check_change(tty);
  2337			if (!ret) {
  2338				switch (arg) {
  2339				case TCOOFF:
  2340					ret = npreal_set_generic_command_done(info, ASPP_CMD_SETXOFF);
  2341					break;
  2342	
  2343				case TCOON:
  2344					ret = npreal_set_generic_command_done(info, ASPP_CMD_SETXON);
  2345					break;
  2346	
  2347				default:
  2348					ret = -EINVAL;
  2349				}
  2350			}
  2351			break;
  2352	
  2353		default:
  2354			ret = -ENOIOCTLCMD;
  2355		}
  2356		return ret;
  2357	}
  2358	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 24970 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH] tty: Add MOXA NPort Real TTY Driver
Date: Fri, 24 Jul 2020 13:32:22 +0800	[thread overview]
Message-ID: <202007241310.55tGDyxu%lkp@intel.com> (raw)
In-Reply-To: <HK2PR01MB328134FB2EF5F9D1E381BDA3FA610@HK2PR01MB3281.apcprd01.prod.exchangelabs.com>

[-- Attachment #1: Type: text/plain, Size: 15323 bytes --]

Hi "Johnson,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on tty/tty-testing]
[also build test WARNING on v5.8-rc6 next-20200723]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Johnson-CH-Chen/tty-Add-MOXA-NPort-Real-TTY-Driver/20200714-142712
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git tty-testing
config: mips-randconfig-s032-20200723 (attached as .config)
compiler: mipsel-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.2-93-g4c6cbe55-dirty
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=mips 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)

   drivers/tty/npreal2.c:1107:26: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void [noderef] __user *to @@     got struct serial_struct *retinfo @@
   drivers/tty/npreal2.c:1107:26: sparse:     expected void [noderef] __user *to
   drivers/tty/npreal2.c:1107:26: sparse:     got struct serial_struct *retinfo
   drivers/tty/npreal2.c:1122:56: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void const [noderef] __user *from @@     got struct serial_struct *new_info @@
   drivers/tty/npreal2.c:1122:56: sparse:     expected void const [noderef] __user *from
   drivers/tty/npreal2.c:1122:56: sparse:     got struct serial_struct *new_info
   drivers/tty/npreal2.c:1149:57: sparse: sparse: Using plain integer as NULL pointer
   drivers/tty/npreal2.c:1186:9: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected unsigned int [noderef] __user *__pu_addr @@     got unsigned int *value @@
   drivers/tty/npreal2.c:1186:9: sparse:     expected unsigned int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:1186:9: sparse:     got unsigned int *value
   drivers/tty/npreal2.c:1624:38: sparse: sparse: Using plain integer as NULL pointer
   drivers/tty/npreal2.c:1897:34: sparse: sparse: Using plain integer as NULL pointer
   drivers/tty/npreal2.c:1914:21: sparse: sparse: Using plain integer as NULL pointer
   drivers/tty/npreal2.c:1984:46: sparse: sparse: Using plain integer as NULL pointer
   drivers/tty/npreal2.c:2261:17: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected unsigned long [noderef] __user *__pu_addr @@     got unsigned long * @@
   drivers/tty/npreal2.c:2261:17: sparse:     expected unsigned long [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2261:17: sparse:     got unsigned long *
>> drivers/tty/npreal2.c:2265:17: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected unsigned long const [noderef] __user *__gu_ptr @@     got unsigned long * @@
>> drivers/tty/npreal2.c:2265:17: sparse:     expected unsigned long const [noderef] __user *__gu_ptr
   drivers/tty/npreal2.c:2265:17: sparse:     got unsigned long *
   drivers/tty/npreal2.c:2319:21: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2319:21: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2319:21: sparse:     got int *
   drivers/tty/npreal2.c:2319:62: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2319:62: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2319:62: sparse:     got int *
   drivers/tty/npreal2.c:2320:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2320:25: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2320:25: sparse:     got int *
   drivers/tty/npreal2.c:2321:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2321:25: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2321:25: sparse:     got int *
   drivers/tty/npreal2.c:2322:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2322:25: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2322:25: sparse:     got int *
   drivers/tty/npreal2.c:2323:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2323:25: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2323:25: sparse:     got int *
   drivers/tty/npreal2.c:2324:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2324:25: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2324:25: sparse:     got int *
   drivers/tty/npreal2.c:2329:17: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2329:17: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2329:17: sparse:     got int *
   drivers/tty/npreal2.c:2330:17: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2330:17: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2330:17: sparse:     got int *
   drivers/tty/npreal2.c:2331:17: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2331:17: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2331:17: sparse:     got int *
   drivers/tty/npreal2.c:2332:17: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected int [noderef] __user *__pu_addr @@     got int * @@
   drivers/tty/npreal2.c:2332:17: sparse:     expected int [noderef] __user *__pu_addr
   drivers/tty/npreal2.c:2332:17: sparse:     got int *
   drivers/tty/npreal2.c:2570:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void [noderef] __user *to @@     got void * @@
   drivers/tty/npreal2.c:2570:35: sparse:     expected void [noderef] __user *to
   drivers/tty/npreal2.c:2570:35: sparse:     got void *
   drivers/tty/npreal2.c:2591:57: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void const [noderef] __user *from @@     got void * @@
   drivers/tty/npreal2.c:2591:57: sparse:     expected void const [noderef] __user *from
   drivers/tty/npreal2.c:2591:57: sparse:     got void *
   drivers/tty/npreal2.c:2720:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void [noderef] __user *to @@     got void * @@
   drivers/tty/npreal2.c:2720:35: sparse:     expected void [noderef] __user *to
   drivers/tty/npreal2.c:2720:35: sparse:     got void *
   drivers/tty/npreal2.c:2734:56: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void const [noderef] __user *from @@     got void * @@
   drivers/tty/npreal2.c:2734:56: sparse:     expected void const [noderef] __user *from
   drivers/tty/npreal2.c:2734:56: sparse:     got void *
   drivers/tty/npreal2.c:2803:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void [noderef] __user *to @@     got char *buf @@
   drivers/tty/npreal2.c:2803:34: sparse:     expected void [noderef] __user *to
   drivers/tty/npreal2.c:2803:34: sparse:     got char *buf
   drivers/tty/npreal2.c:2831:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void [noderef] __user *to @@     got char * @@
   drivers/tty/npreal2.c:2831:38: sparse:     expected void [noderef] __user *to
   drivers/tty/npreal2.c:2831:38: sparse:     got char *
   drivers/tty/npreal2.c:2899:38: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void const [noderef] __user *from @@     got char const *buf @@
   drivers/tty/npreal2.c:2899:38: sparse:     expected void const [noderef] __user *from
   drivers/tty/npreal2.c:2899:38: sparse:     got char const *buf
>> drivers/tty/npreal2.c:2950:22: sparse: sparse: incorrect type in initializer (incompatible argument 2 (different address spaces)) @@     expected int ( *proc_read )( ... ) @@     got int ( * )( ... ) @@
>> drivers/tty/npreal2.c:2950:22: sparse:     expected int ( *proc_read )( ... )
>> drivers/tty/npreal2.c:2950:22: sparse:     got int ( * )( ... )
>> drivers/tty/npreal2.c:2951:23: sparse: sparse: incorrect type in initializer (incompatible argument 2 (different address spaces)) @@     expected int ( *proc_write )( ... ) @@     got int ( * )( ... ) @@
>> drivers/tty/npreal2.c:2951:23: sparse:     expected int ( *proc_write )( ... )
   drivers/tty/npreal2.c:2951:23: sparse:     got int ( * )( ... )
   drivers/tty/npreal2.c:2954:22: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __poll_t ( *proc_poll )( ... ) @@     got unsigned int ( * )( ... ) @@
   drivers/tty/npreal2.c:2954:22: sparse:     expected restricted __poll_t ( *proc_poll )( ... )
   drivers/tty/npreal2.c:2954:22: sparse:     got unsigned int ( * )( ... )

vim +2265 drivers/tty/npreal2.c

  2201	
  2202	static int npreal_ioctl(struct tty_struct *tty, unsigned int cmd,
  2203				unsigned long arg)
  2204	{
  2205		struct npreal_struct *info = (struct npreal_struct *)tty->driver_data;
  2206		struct serial_icounter_struct *p_cuser; /* user space */
  2207		unsigned long templ;
  2208		int ret = 0;
  2209	
  2210		if (!info)
  2211			return -ENODEV;
  2212	
  2213		if ((cmd != TIOCGSERIAL) && (cmd != TIOCMIWAIT) && (cmd != TIOCGICOUNT) &&
  2214			test_bit(TTY_IO_ERROR, &tty->flags))
  2215			return -EIO;
  2216	
  2217		switch (cmd) {
  2218		case TCFLSH:
  2219			ret = tty_check_change(tty);
  2220			if (!ret) {
  2221				switch (arg) {
  2222				case TCIFLUSH:
  2223					if (tty->ldisc->ops->flush_buffer)
  2224						tty->ldisc->ops->flush_buffer(tty);
  2225					break;
  2226	
  2227				case TCIOFLUSH:
  2228					if (tty->ldisc->ops->flush_buffer)
  2229						tty->ldisc->ops->flush_buffer(tty);
  2230					npreal_flush_buffer(tty);
  2231					break;
  2232	
  2233				case TCOFLUSH:
  2234					npreal_flush_buffer(tty);
  2235					break;
  2236	
  2237				default:
  2238					ret = -EINVAL;
  2239				}
  2240			}
  2241			break;
  2242	
  2243		case TCSBRK: /* SVID version: non-zero arg --> no break */
  2244			ret = tty_check_change(tty);
  2245			if (!ret) {
  2246				tty_wait_until_sent(tty, 0);
  2247				if (!arg)
  2248					npreal_send_break(info, HZ / 4);
  2249			}
  2250			break;
  2251	
  2252		case TCSBRKP: /* support for POSIX tcsendbreak() */
  2253			ret = tty_check_change(tty);
  2254			if (!ret) {
  2255				tty_wait_until_sent(tty, 0);
  2256				npreal_send_break(info, arg ? arg * (HZ / 10) : HZ / 4);
  2257			}
  2258			break;
  2259	
  2260		case TIOCGSOFTCAR:
  2261			put_user(C_CLOCAL(tty) ? 1 : 0, (unsigned long *)arg);
  2262			break;
  2263	
  2264		case TIOCSSOFTCAR:
> 2265			get_user(templ, (unsigned long *)arg);
  2266			tty->termios.c_cflag = ((tty->termios.c_cflag & ~CLOCAL) | (arg ? CLOCAL : 0));
  2267			break;
  2268	
  2269		case TIOCGSERIAL:
  2270			ret = (npreal_get_serial_info(info, (struct serial_struct *)arg));
  2271			break;
  2272	
  2273		case TIOCSSERIAL:
  2274			ret = (npreal_set_serial_info(info, (struct serial_struct *)arg));
  2275			break;
  2276	
  2277		case TIOCSERGETLSR: /* Get line status register */
  2278			ret = (npreal_get_lsr_info(info, (unsigned int *)arg));
  2279			break;
  2280	
  2281		case TIOCMIWAIT: {
  2282			struct async_icount cprev;
  2283			DECLARE_WAITQUEUE(wait, current);
  2284	
  2285			cprev = info->icount;
  2286			add_wait_queue(&info->delta_msr_wait, &wait);
  2287			while (1) {
  2288				struct async_icount cnow;
  2289	
  2290				cnow = info->icount;
  2291				if (((arg & TIOCM_RNG) && (cnow.rng != cprev.rng)) ||
  2292					((arg & TIOCM_DSR) && (cnow.dsr != cprev.dsr)) ||
  2293					((arg & TIOCM_CD) && (cnow.dcd != cprev.dcd)) ||
  2294					((arg & TIOCM_CTS) && (cnow.cts != cprev.cts))) {
  2295					ret = 0;
  2296					break;
  2297				}
  2298	
  2299				if (signal_pending(current)) {
  2300					ret = -ERESTARTSYS;
  2301					break;
  2302				}
  2303	
  2304				cprev = cnow;
  2305				current->state = TASK_INTERRUPTIBLE;
  2306				schedule();
  2307			}
  2308	
  2309			remove_wait_queue(&info->delta_msr_wait, &wait);
  2310			break;
  2311		}
  2312	
  2313		case TIOCGICOUNT:{
  2314			struct async_icount cnow;
  2315	
  2316			cnow = info->icount;
  2317			p_cuser = (struct serial_icounter_struct *)arg;
  2318	
  2319			if (put_user(cnow.frame, &p_cuser->frame) || put_user(cnow.brk, &p_cuser->brk) ||
  2320				put_user(cnow.overrun, &p_cuser->overrun) ||
  2321				put_user(cnow.buf_overrun, &p_cuser->buf_overrun) ||
  2322				put_user(cnow.parity, &p_cuser->parity) ||
  2323				put_user(cnow.rx, &p_cuser->rx) ||
  2324				put_user(cnow.tx, &p_cuser->tx)) {
  2325				ret = -EFAULT;
  2326				break;
  2327			}
  2328	
  2329			put_user(cnow.cts, &p_cuser->cts);
  2330			put_user(cnow.dsr, &p_cuser->dsr);
  2331			put_user(cnow.rng, &p_cuser->rng);
  2332			put_user(cnow.dcd, &p_cuser->dcd);
  2333			break;
  2334		}
  2335		case TCXONC:
  2336			ret = tty_check_change(tty);
  2337			if (!ret) {
  2338				switch (arg) {
  2339				case TCOOFF:
  2340					ret = npreal_set_generic_command_done(info, ASPP_CMD_SETXOFF);
  2341					break;
  2342	
  2343				case TCOON:
  2344					ret = npreal_set_generic_command_done(info, ASPP_CMD_SETXON);
  2345					break;
  2346	
  2347				default:
  2348					ret = -EINVAL;
  2349				}
  2350			}
  2351			break;
  2352	
  2353		default:
  2354			ret = -ENOIOCTLCMD;
  2355		}
  2356		return ret;
  2357	}
  2358	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 24970 bytes --]

  parent reply	other threads:[~2020-07-24  5:33 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-14  6:24 [PATCH] tty: Add MOXA NPort Real TTY Driver Johnson CH Chen (陳昭勳)
2020-07-14  7:11 ` Greg Kroah-Hartman
2020-07-23 10:54   ` Johnson CH Chen (陳昭勳)
2020-07-14  7:36 ` Greg Kroah-Hartman
2020-07-16  7:19   ` Johnson CH Chen (陳昭勳)
2020-07-16  7:23     ` Greg Kroah-Hartman
2020-07-22  7:04       ` Johnson CH Chen (陳昭勳)
2020-07-22  7:11         ` Greg Kroah-Hartman
2020-07-14  9:34 ` Jiri Slaby
2020-08-07  9:18   ` Johnson CH Chen (陳昭勳)
2020-08-07  9:48     ` Greg Kroah-Hartman
2020-07-15  8:27 ` kernel test robot
2020-07-15  8:27   ` kernel test robot
2020-07-24  5:32 ` kernel test robot [this message]
2020-07-24  5:32   ` kernel test robot
2020-07-28 20:40 ` Pavel Machek

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=202007241310.55tGDyxu%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=JohnsonCH.Chen@moxa.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jirislaby@gmail.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    /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.