Hi Uwe,

I love your patch! Yet something to improve:

[auto build test ERROR on tty/tty-testing]
[also build test ERROR on v4.17-rc3 next-20180503]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Uwe-Kleine-K-nig/tty-implement-led-triggers/20180504-075232
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git 
tty-testing
config: i386-randconfig-x014-201817 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-16) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   drivers/tty/tty_io.c: In function 'do_tty_write':
>> drivers/tty/tty_io.c:962:38: error: 'struct tty_port' has no member named 
>> 'led_trigger_tx'
      led_trigger_blink_oneshot(tty->port->led_trigger_tx, &delay, &delay, 0);
                                         ^~
--
   drivers/tty/tty_buffer.c: In function 'flush_to_ldisc':
>> drivers/tty/tty_buffer.c:526:33: error: 'struct tty_port' has no member 
>> named 'led_trigger_rx'
      led_trigger_blink_oneshot(port->led_trigger_rx, &delay, &delay, 0);
                                    ^~

vim +962 drivers/tty/tty_io.c

   893  
   894  /*
   895   * Split writes up in sane blocksizes to avoid
   896   * denial-of-service type attacks
   897   */
   898  static inline ssize_t do_tty_write(
   899          ssize_t (*write)(struct tty_struct *, struct file *, const 
unsigned char *, size_t),
   900          struct tty_struct *tty,
   901          struct file *file,
   902          const char __user *buf,
   903          size_t count)
   904  {
   905          ssize_t ret, written = 0;
   906          unsigned int chunk;
   907  
   908          ret = tty_write_lock(tty, file->f_flags & O_NDELAY);
   909          if (ret < 0)
   910                  return ret;
   911  
   912          /*
   913           * We chunk up writes into a temporary buffer. This
   914           * simplifies low-level drivers immensely, since they
   915           * don't have locking issues and user mode accesses.
   916           *
   917           * But if TTY_NO_WRITE_SPLIT is set, we should use a
   918           * big chunk-size..
   919           *
   920           * The default chunk-size is 2kB, because the NTTY
   921           * layer has problems with bigger chunks. It will
   922           * claim to be able to handle more characters than
   923           * it actually does.
   924           *
   925           * FIXME: This can probably go away now except that 64K chunks
   926           * are too likely to fail unless switched to vmalloc...
   927           */
   928          chunk = 2048;
   929          if (test_bit(TTY_NO_WRITE_SPLIT, &tty->flags))
   930                  chunk = 65536;
   931          if (count < chunk)
   932                  chunk = count;
   933  
   934          /* write_buf/write_cnt is protected by the atomic_write_lock 
mutex */
   935          if (tty->write_cnt < chunk) {
   936                  unsigned char *buf_chunk;
   937  
   938                  if (chunk < 1024)
   939                          chunk = 1024;
   940  
   941                  buf_chunk = kmalloc(chunk, GFP_KERNEL);
   942                  if (!buf_chunk) {
   943                          ret = -ENOMEM;
   944                          goto out;
   945                  }
   946                  kfree(tty->write_buf);
   947                  tty->write_cnt = chunk;
   948                  tty->write_buf = buf_chunk;
   949          }
   950  
   951          /* Do the write .. */
   952          for (;;) {
   953                  size_t size = count;
   954                  unsigned long delay = 50 /* ms */;
   955  
   956                  if (size > chunk)
   957                          size = chunk;
   958                  ret = -EFAULT;
   959                  if (copy_from_user(tty->write_buf, buf, size))
   960                          break;
   961  
 > 962                  led_trigger_blink_oneshot(tty->port->led_trigger_tx, 
 > &delay, &delay, 0);
   963  
   964                  ret = write(tty, file, tty->write_buf, size);
   965                  if (ret <= 0)
   966                          break;
   967                  written += ret;
   968                  buf += ret;
   969                  count -= ret;
   970                  if (!count)
   971                          break;
   972                  ret = -ERESTARTSYS;
   973                  if (signal_pending(current))
   974                          break;
   975                  cond_resched();
   976          }
   977          if (written) {
   978                  tty_update_time(&file_inode(file)->i_mtime);
   979                  ret = written;
   980          }
   981  out:
   982          tty_write_unlock(tty);
   983          return ret;
   984  }
   985  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to