On Thu, Feb 13, 2020 at 10:16:00AM +0100, Uwe Kleine-König wrote: > From: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> > > Usage is as follows: > > myled=ledname > tty=ttyS0 > > echo tty > /sys/class/leds/$myled/trigger > cat /sys/class/tty/$tty/dev > /sys/class/leds/$myled/dev > > . When this new trigger is active it periodically checks the tty's > statistics and when it changed since the last check the led is flashed > once. > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> > --- > +static ssize_t dev_store(struct device *dev, > + struct device_attribute *attr, const char *buf, > + size_t size) > +{ > + struct ledtrig_tty_data *trigger_data = led_trigger_get_drvdata(dev); > + struct tty_struct *tty; > + dev_t d; > + int ret; > + > + if (size == 0 || (size == 1 && buf[0] == '\n')) { > + tty = NULL; > + } else { > + ret = kstrtodev_t(buf, &d); > + if (ret < 0) > + return ret; > + > + tty = tty_kopen_shared(d); I really don't have time to look at this, but having the led-trigger keep the port open looks fundamentally broken (consider modem-control signals, power, etc). Johan