Re: [PATCH v11] leds: trigger: implement a tty trigger
From: Pavel Machek <hidden>
Date: 2021-02-18 16:26:14
Also in:
linux-leds, lkml
Attachments
- signature.asc [application/pgp-signature] 195 bytes
From: Pavel Machek <hidden>
Date: 2021-02-18 16:26:14
Also in:
linux-leds, lkml
Hi! Close, but see below:
+static ssize_t ttyname_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);
+ char *ttyname;
+ ssize_t ret = size;
+ bool running;
+
+ if (size > 0 && buf[size - 1] == '\n')
+ size -= 1;
+
+ if (size) {
+ ttyname = kmemdup_nul(buf, size, GFP_KERNEL);
+ if (!ttyname) {
+ ret = -ENOMEM;
+ goto out_unlock;Unlock without a lock:
+out_unlock: + mutex_unlock(&trigger_data->mutex); + + if (ttyname && !running) + ledtrig_tty_restart(trigger_data); + + return ret; +}
+ + tty = tty_kopen_shared(devno); + if (IS_ERR(tty) || !tty) + /* What to do? retry or abort */ + goto out;
Abort would make sense to me.
+ if (icount.rx != trigger_data->rx ||
+ icount.tx != trigger_data->tx) {
+ led_set_brightness(trigger_data->led_cdev, LED_ON);Please use _sync version. Best regards, Pavel -- http://www.livejournal.com/~pavelmachek