Re: [PATCH 3/3] tty: remove buf parameter from tty_name()

From: Dmitry Torokhov
Date: Tue Mar 31 2015 - 17:41:13 EST


On Tue, Mar 31, 2015 at 03:55:59PM +0200, Rasmus Villemoes wrote:
> tty_name no longer uses the buf parameter, so remove it along with all
> the 64 byte stack buffers that used to be passed in.
>
> Mostly generated by the coccinelle script
>
> @depends on patch@
> identifier buf;
> constant C;
> expression tty;
> @@
> - char buf[C];
> <+...
> - tty_name(tty, buf)
> + tty_name(tty)
> ...+>
>
> allmodconfig compiles, so I'm fairly confident the stack buffers
> weren't used for other purposes as well.
>
> Signed-off-by: Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx>
> ---
> drivers/input/serio/serport.c | 5 ++---

I am fine with serport changes.

Acked-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>

Thanks.

> drivers/tty/amiserial.c | 8 ++------
> drivers/tty/cyclades.c | 8 ++------
> drivers/tty/n_gsm.c | 3 +--
> drivers/tty/n_tty.c | 7 ++-----
> drivers/tty/serial/crisv10.c | 8 ++------
> drivers/tty/serial/serial_core.c | 4 +---
> drivers/tty/tty_io.c | 28 +++++++++++-----------------
> drivers/tty/tty_ioctl.c | 4 +---
> drivers/tty/tty_ldisc.c | 8 +++-----
> include/linux/tty.h | 2 +-
> 11 files changed, 28 insertions(+), 57 deletions(-)
>
> diff --git a/drivers/input/serio/serport.c b/drivers/input/serio/serport.c
> index 69175b825346..9c927d35c1f5 100644
> --- a/drivers/input/serio/serport.c
> +++ b/drivers/input/serio/serport.c
> @@ -167,7 +167,6 @@ static ssize_t serport_ldisc_read(struct tty_struct * tty, struct file * file, u
> {
> struct serport *serport = (struct serport*) tty->disc_data;
> struct serio *serio;
> - char name[64];
>
> if (test_and_set_bit(SERPORT_BUSY, &serport->flags))
> return -EBUSY;
> @@ -177,7 +176,7 @@ static ssize_t serport_ldisc_read(struct tty_struct * tty, struct file * file, u
> return -ENOMEM;
>
> strlcpy(serio->name, "Serial port", sizeof(serio->name));
> - snprintf(serio->phys, sizeof(serio->phys), "%s/serio0", tty_name(tty, name));
> + snprintf(serio->phys, sizeof(serio->phys), "%s/serio0", tty_name(tty));
> serio->id = serport->id;
> serio->id.type = SERIO_RS232;
> serio->write = serport_serio_write;
> @@ -187,7 +186,7 @@ static ssize_t serport_ldisc_read(struct tty_struct * tty, struct file * file, u
> serio->dev.parent = tty->dev;
>
> serio_register_port(serport->serio);
> - printk(KERN_INFO "serio: Serial port %s\n", tty_name(tty, name));
> + printk(KERN_INFO "serio: Serial port %s\n", tty_name(tty));
>
> wait_event_interruptible(serport->wait, test_bit(SERPORT_DEAD, &serport->flags));
> serio_unregister_port(serport->serio);
> diff --git a/drivers/tty/amiserial.c b/drivers/tty/amiserial.c
> index b2d760055952..894d3a84e285 100644
> --- a/drivers/tty/amiserial.c
> +++ b/drivers/tty/amiserial.c
> @@ -966,9 +966,7 @@ static void rs_throttle(struct tty_struct * tty)
> struct serial_state *info = tty->driver_data;
> unsigned long flags;
> #ifdef SERIAL_DEBUG_THROTTLE
> - char buf[64];
> -
> - printk("throttle %s: %d....\n", tty_name(tty, buf),
> + printk("throttle %s: %d....\n", tty_name(tty),
> tty->ldisc.chars_in_buffer(tty));
> #endif
>
> @@ -991,9 +989,7 @@ static void rs_unthrottle(struct tty_struct * tty)
> struct serial_state *info = tty->driver_data;
> unsigned long flags;
> #ifdef SERIAL_DEBUG_THROTTLE
> - char buf[64];
> -
> - printk("unthrottle %s: %d....\n", tty_name(tty, buf),
> + printk("unthrottle %s: %d....\n", tty_name(tty),
> tty->ldisc.chars_in_buffer(tty));
> #endif
>
> diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c
> index fd66f57390d0..87f6578c6f4a 100644
> --- a/drivers/tty/cyclades.c
> +++ b/drivers/tty/cyclades.c
> @@ -2861,9 +2861,7 @@ static void cy_throttle(struct tty_struct *tty)
> unsigned long flags;
>
> #ifdef CY_DEBUG_THROTTLE
> - char buf[64];
> -
> - printk(KERN_DEBUG "cyc:throttle %s: %ld...ttyC%d\n", tty_name(tty, buf),
> + printk(KERN_DEBUG "cyc:throttle %s: %ld...ttyC%d\n", tty_name(tty),
> tty->ldisc.chars_in_buffer(tty), info->line);
> #endif
>
> @@ -2902,10 +2900,8 @@ static void cy_unthrottle(struct tty_struct *tty)
> unsigned long flags;
>
> #ifdef CY_DEBUG_THROTTLE
> - char buf[64];
> -
> printk(KERN_DEBUG "cyc:unthrottle %s: %ld...ttyC%d\n",
> - tty_name(tty, buf), tty_chars_in_buffer(tty), info->line);
> + tty_name(tty), tty_chars_in_buffer(tty), info->line);
> #endif
>
> if (serial_paranoia_check(info, tty->name, "cy_unthrottle"))
> diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
> index c4343764cc5b..9b6d3d5ee51c 100644
> --- a/drivers/tty/n_gsm.c
> +++ b/drivers/tty/n_gsm.c
> @@ -2274,7 +2274,6 @@ static void gsmld_receive_buf(struct tty_struct *tty, const unsigned char *cp,
> const unsigned char *dp;
> char *f;
> int i;
> - char buf[64];
> char flags = TTY_NORMAL;
>
> if (debug & 4)
> @@ -2296,7 +2295,7 @@ static void gsmld_receive_buf(struct tty_struct *tty, const unsigned char *cp,
> break;
> default:
> WARN_ONCE(1, "%s: unknown flag %d\n",
> - tty_name(tty, buf), flags);
> + tty_name(tty), flags);
> break;
> }
> }
> diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c
> index cf6e0f2e1331..54da8f49394d 100644
> --- a/drivers/tty/n_tty.c
> +++ b/drivers/tty/n_tty.c
> @@ -1179,13 +1179,12 @@ static void n_tty_receive_break(struct tty_struct *tty)
> static void n_tty_receive_overrun(struct tty_struct *tty)
> {
> struct n_tty_data *ldata = tty->disc_data;
> - char buf[64];
>
> ldata->num_overrun++;
> if (time_after(jiffies, ldata->overrun_time + HZ) ||
> time_after(ldata->overrun_time, jiffies)) {
> printk(KERN_WARNING "%s: %d input overrun(s)\n",
> - tty_name(tty, buf),
> + tty_name(tty),
> ldata->num_overrun);
> ldata->overrun_time = jiffies;
> ldata->num_overrun = 0;
> @@ -1460,8 +1459,6 @@ static void n_tty_receive_char_closing(struct tty_struct *tty, unsigned char c)
> static void
> n_tty_receive_char_flagged(struct tty_struct *tty, unsigned char c, char flag)
> {
> - char buf[64];
> -
> switch (flag) {
> case TTY_BREAK:
> n_tty_receive_break(tty);
> @@ -1475,7 +1472,7 @@ n_tty_receive_char_flagged(struct tty_struct *tty, unsigned char c, char flag)
> break;
> default:
> printk(KERN_ERR "%s: unknown flag %d\n",
> - tty_name(tty, buf), flag);
> + tty_name(tty), flag);
> break;
> }
> }
> diff --git a/drivers/tty/serial/crisv10.c b/drivers/tty/serial/crisv10.c
> index 0c1825b0b41d..568ea0d2d699 100644
> --- a/drivers/tty/serial/crisv10.c
> +++ b/drivers/tty/serial/crisv10.c
> @@ -3216,9 +3216,7 @@ rs_throttle(struct tty_struct * tty)
> {
> struct e100_serial *info = (struct e100_serial *)tty->driver_data;
> #ifdef SERIAL_DEBUG_THROTTLE
> - char buf[64];
> -
> - printk("throttle %s: %lu....\n", tty_name(tty, buf),
> + printk("throttle %s: %lu....\n", tty_name(tty),
> (unsigned long)tty->ldisc.chars_in_buffer(tty));
> #endif
> DFLOW(DEBUG_LOG(info->line,"rs_throttle %lu\n", tty->ldisc.chars_in_buffer(tty)));
> @@ -3238,9 +3236,7 @@ rs_unthrottle(struct tty_struct * tty)
> {
> struct e100_serial *info = (struct e100_serial *)tty->driver_data;
> #ifdef SERIAL_DEBUG_THROTTLE
> - char buf[64];
> -
> - printk("unthrottle %s: %lu....\n", tty_name(tty, buf),
> + printk("unthrottle %s: %lu....\n", tty_name(tty),
> (unsigned long)tty->ldisc.chars_in_buffer(tty));
> #endif
> DFLOW(DEBUG_LOG(info->line,"rs_unthrottle ldisc %d\n", tty->ldisc.chars_in_buffer(tty)));
> diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
> index 6a1055ae3437..4e73b6482f0b 100644
> --- a/drivers/tty/serial/serial_core.c
> +++ b/drivers/tty/serial/serial_core.c
> @@ -894,12 +894,10 @@ static int uart_set_info(struct tty_struct *tty, struct tty_port *port,
> * need to rate-limit; it's CAP_SYS_ADMIN only.
> */
> if (uport->flags & UPF_SPD_MASK) {
> - char buf[64];
> -
> dev_notice(uport->dev,
> "%s sets custom speed on %s. This is deprecated.\n",
> current->comm,
> - tty_name(port->tty, buf));
> + tty_name(port->tty));
> }
> uart_change_speed(tty, state, NULL);
> }
> diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
> index ab549e7bdaa8..96f948dc43a6 100644
> --- a/drivers/tty/tty_io.c
> +++ b/drivers/tty/tty_io.c
> @@ -235,7 +235,6 @@ static void tty_del_file(struct file *file)
> /**
> * tty_name - return tty naming
> * @tty: tty structure
> - * @buf: unused
> *
> * Convert a tty structure into a name. The name reflects the kernel
> * naming policy and if udev is in use may not reflect user space
> @@ -243,7 +242,7 @@ static void tty_del_file(struct file *file)
> * Locking: none
> */
>
> -const char *tty_name(const struct tty_struct *tty, char *buf)
> +const char *tty_name(const struct tty_struct *tty)
> {
> if (!tty) /* Hmm. NULL pointer. That's fun. */
> return "NULL tty";
> @@ -768,8 +767,7 @@ static void do_tty_hangup(struct work_struct *work)
> void tty_hangup(struct tty_struct *tty)
> {
> #ifdef TTY_DEBUG_HANGUP
> - char buf[64];
> - printk(KERN_DEBUG "%s hangup...\n", tty_name(tty, buf));
> + printk(KERN_DEBUG "%s hangup...\n", tty_name(tty));
> #endif
> schedule_work(&tty->hangup_work);
> }
> @@ -788,9 +786,7 @@ EXPORT_SYMBOL(tty_hangup);
> void tty_vhangup(struct tty_struct *tty)
> {
> #ifdef TTY_DEBUG_HANGUP
> - char buf[64];
> -
> - printk(KERN_DEBUG "%s vhangup...\n", tty_name(tty, buf));
> + printk(KERN_DEBUG "%s vhangup...\n", tty_name(tty));
> #endif
> __tty_hangup(tty, 0);
> }
> @@ -829,9 +825,7 @@ void tty_vhangup_self(void)
> static void tty_vhangup_session(struct tty_struct *tty)
> {
> #ifdef TTY_DEBUG_HANGUP
> - char buf[64];
> -
> - printk(KERN_DEBUG "%s vhangup session...\n", tty_name(tty, buf));
> + printk(KERN_DEBUG "%s vhangup session...\n", tty_name(tty));
> #endif
> __tty_hangup(tty, 1);
> }
> @@ -1761,7 +1755,6 @@ int tty_release(struct inode *inode, struct file *filp)
> struct tty_struct *o_tty = NULL;
> int do_sleep, final;
> int idx;
> - char buf[64];
> long timeout = 0;
> int once = 1;
>
> @@ -1785,7 +1778,7 @@ int tty_release(struct inode *inode, struct file *filp)
>
> #ifdef TTY_DEBUG_HANGUP
> printk(KERN_DEBUG "%s: %s (tty count=%d)...\n", __func__,
> - tty_name(tty, buf), tty->count);
> + tty_name(tty), tty->count);
> #endif
>
> if (tty->ops->close)
> @@ -1836,7 +1829,7 @@ int tty_release(struct inode *inode, struct file *filp)
> if (once) {
> once = 0;
> printk(KERN_WARNING "%s: %s: read/write wait queue active!\n",
> - __func__, tty_name(tty, buf));
> + __func__, tty_name(tty));
> }
> schedule_timeout_killable(timeout);
> if (timeout < 120 * HZ)
> @@ -1848,13 +1841,13 @@ int tty_release(struct inode *inode, struct file *filp)
> if (o_tty) {
> if (--o_tty->count < 0) {
> printk(KERN_WARNING "%s: bad pty slave count (%d) for %s\n",
> - __func__, o_tty->count, tty_name(o_tty, buf));
> + __func__, o_tty->count, tty_name(o_tty));
> o_tty->count = 0;
> }
> }
> if (--tty->count < 0) {
> printk(KERN_WARNING "%s: bad tty->count (%d) for %s\n",
> - __func__, tty->count, tty_name(tty, buf));
> + __func__, tty->count, tty_name(tty));
> tty->count = 0;
> }
>
> @@ -1897,7 +1890,7 @@ int tty_release(struct inode *inode, struct file *filp)
> return 0;
>
> #ifdef TTY_DEBUG_HANGUP
> - printk(KERN_DEBUG "%s: %s: final close\n", __func__, tty_name(tty, buf));
> + printk(KERN_DEBUG "%s: %s: final close\n", __func__, tty_name(tty));
> #endif
> /*
> * Ask the line discipline code to release its structures
> @@ -1908,7 +1901,8 @@ int tty_release(struct inode *inode, struct file *filp)
> tty_flush_works(tty);
>
> #ifdef TTY_DEBUG_HANGUP
> - printk(KERN_DEBUG "%s: %s: freeing structure...\n", __func__, tty_name(tty, buf));
> + printk(KERN_DEBUG "%s: %s: freeing structure...\n", __func__,
> + tty_name(tty));
> #endif
> /*
> * The release_tty function takes care of the details of clearing
> diff --git a/drivers/tty/tty_ioctl.c b/drivers/tty/tty_ioctl.c
> index 632fc8152061..e590207e9c0a 100644
> --- a/drivers/tty/tty_ioctl.c
> +++ b/drivers/tty/tty_ioctl.c
> @@ -211,9 +211,7 @@ int tty_unthrottle_safe(struct tty_struct *tty)
> void tty_wait_until_sent(struct tty_struct *tty, long timeout)
> {
> #ifdef TTY_DEBUG_WAIT_UNTIL_SENT
> - char buf[64];
> -
> - printk(KERN_DEBUG "%s wait until sent...\n", tty_name(tty, buf));
> + printk(KERN_DEBUG "%s wait until sent...\n", tty_name(tty));
> #endif
> if (!timeout)
> timeout = MAX_SCHEDULE_TIMEOUT;
> diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c
> index 3737f55272d2..c07fb5d9bcf9 100644
> --- a/drivers/tty/tty_ldisc.c
> +++ b/drivers/tty/tty_ldisc.c
> @@ -22,9 +22,8 @@
> #undef LDISC_DEBUG_HANGUP
>
> #ifdef LDISC_DEBUG_HANGUP
> -#define tty_ldisc_debug(tty, f, args...) ({ \
> - char __b[64]; \
> - printk(KERN_DEBUG "%s: %s: " f, __func__, tty_name(tty, __b), ##args); \
> +#define tty_ldisc_debug(tty, f, args...) ({ \
> + printk(KERN_DEBUG "%s: %s: " f, __func__, tty_name(tty), ##args); \
> })
> #else
> #define tty_ldisc_debug(tty, f, args...)
> @@ -483,7 +482,6 @@ static void tty_ldisc_close(struct tty_struct *tty, struct tty_ldisc *ld)
>
> static void tty_ldisc_restore(struct tty_struct *tty, struct tty_ldisc *old)
> {
> - char buf[64];
> struct tty_ldisc *new_ldisc;
> int r;
>
> @@ -504,7 +502,7 @@ static void tty_ldisc_restore(struct tty_struct *tty, struct tty_ldisc *old)
> if (r < 0)
> panic("Couldn't open N_TTY ldisc for "
> "%s --- error %d.",
> - tty_name(tty, buf), r);
> + tty_name(tty), r);
> }
> }
>
> diff --git a/include/linux/tty.h b/include/linux/tty.h
> index 8771cc4faf9f..f0fc326cf08e 100644
> --- a/include/linux/tty.h
> +++ b/include/linux/tty.h
> @@ -421,7 +421,7 @@ static inline struct tty_struct *tty_kref_get(struct tty_struct *tty)
>
> extern int tty_paranoia_check(struct tty_struct *tty, struct inode *inode,
> const char *routine);
> -extern const char *tty_name(const struct tty_struct *tty, char *buf);
> +extern const char *tty_name(const struct tty_struct *tty);
> extern void tty_wait_until_sent(struct tty_struct *tty, long timeout);
> extern int tty_check_change(struct tty_struct *tty);
> extern void __stop_tty(struct tty_struct *tty);
> --
> 2.1.3
>

--
Dmitry
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/