2023-02-17 09:44:23

by Florian Eckert

[permalink] [raw]
Subject: [PATCH v2 1/2] tty: new helper function tty_get_mget

For a given struct tty_struct, this provides the appropriate tty line
state flags needed to add more modes to the ledtrig-tty trigger.

The new function is then used to get via tty_tiocmget() the different tty
line states.

Signed-off-by: Florian Eckert <[email protected]>
---
drivers/tty/tty_io.c | 30 +++++++++++++++++++++++-------
include/linux/tty.h | 1 +
2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
index 3149114bf130..f049ab8b3362 100644
--- a/drivers/tty/tty_io.c
+++ b/drivers/tty/tty_io.c
@@ -2493,26 +2493,42 @@ static int send_break(struct tty_struct *tty, unsigned int duration)
return retval;
}

+/*
+ * tty_get_mget - get modem status
+ * @tty: tty device
+ *
+ * Obtain the modem status bits from the tty driver if the feature
+ * is supported. Return -ENOTTY if it is not available.
+ */
+int tty_get_mget(struct tty_struct *tty)
+{
+ int retval = -ENOTTY;
+
+ if (tty->ops->tiocmget)
+ retval = tty->ops->tiocmget(tty);
+
+ return retval;
+}
+EXPORT_SYMBOL_GPL(tty_get_mget);
+
/**
* tty_tiocmget - get modem status
* @tty: tty device
* @p: pointer to result
*
* Obtain the modem status bits from the tty driver if the feature is
- * supported. Return -%ENOTTY if it is not available.
+ * supported.
*
* Locking: none (up to the driver)
*/
static int tty_tiocmget(struct tty_struct *tty, int __user *p)
{
- int retval = -ENOTTY;
+ int retval;

- if (tty->ops->tiocmget) {
- retval = tty->ops->tiocmget(tty);
+ retval = tty_get_mget(tty);
+ if (retval >= 0)
+ retval = put_user(retval, p);

- if (retval >= 0)
- retval = put_user(retval, p);
- }
return retval;
}

diff --git a/include/linux/tty.h b/include/linux/tty.h
index 730c3301d710..825186c0fec1 100644
--- a/include/linux/tty.h
+++ b/include/linux/tty.h
@@ -421,6 +421,7 @@ int tty_unthrottle_safe(struct tty_struct *tty);
int tty_do_resize(struct tty_struct *tty, struct winsize *ws);
int tty_get_icount(struct tty_struct *tty,
struct serial_icounter_struct *icount);
+int tty_get_mget(struct tty_struct *tty);
int is_current_pgrp_orphaned(void);
void tty_hangup(struct tty_struct *tty);
void tty_vhangup(struct tty_struct *tty);
--
2.30.2



2023-02-17 09:49:17

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] tty: new helper function tty_get_mget

On Fri, Feb 17, 2023 at 10:44:02AM +0100, Florian Eckert wrote:
> For a given struct tty_struct, this provides the appropriate tty line
> state flags needed to add more modes to the ledtrig-tty trigger.
>
> The new function is then used to get via tty_tiocmget() the different tty
> line states.
>
> Signed-off-by: Florian Eckert <[email protected]>
> ---
> drivers/tty/tty_io.c | 30 +++++++++++++++++++++++-------
> include/linux/tty.h | 1 +
> 2 files changed, 24 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
> index 3149114bf130..f049ab8b3362 100644
> --- a/drivers/tty/tty_io.c
> +++ b/drivers/tty/tty_io.c
> @@ -2493,26 +2493,42 @@ static int send_break(struct tty_struct *tty, unsigned int duration)
> return retval;
> }
>
> +/*
> + * tty_get_mget - get modem status
> + * @tty: tty device
> + *
> + * Obtain the modem status bits from the tty driver if the feature
> + * is supported. Return -ENOTTY if it is not available.

Please make this proper kernel doc, the first comment line has to be /**

And you didn't mark -ENOTTY properly here either :(

> + */
> +int tty_get_mget(struct tty_struct *tty)
> +{
> + int retval = -ENOTTY;
> +
> + if (tty->ops->tiocmget)
> + retval = tty->ops->tiocmget(tty);
> +
> + return retval;
> +}
> +EXPORT_SYMBOL_GPL(tty_get_mget);
> +
> /**
> * tty_tiocmget - get modem status
> * @tty: tty device
> * @p: pointer to result
> *
> * Obtain the modem status bits from the tty driver if the feature is
> - * supported. Return -%ENOTTY if it is not available.
> + * supported.

Why did you remove the return value statement from the documentation
here? It's still true, right?

thanks,

greg k-h