Re: [PATCH v6 4/4] leds: trigger: implement a tty trigger

From: Johan Hovold
Date: Wed Feb 19 2020 - 05:52:46 EST


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