lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 31 Mar 2015 14:40:59 -0700
From:	Dmitry Torokhov <dmitry.torokhov@...il.com>
To:	Rasmus Villemoes <linux@...musvillemoes.dk>
Cc:	Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
	Jiri Slaby <jslaby@...e.cz>, Mikael Starvik <starvik@...s.com>,
	Jesper Nilsson <jesper.nilsson@...s.com>,
	linux-input@...r.kernel.org, linux-kernel@...r.kernel.org,
	linux-cris-kernel@...s.com, linux-serial@...r.kernel.org
Subject: Re: [PATCH 3/3] tty: remove buf parameter from tty_name()

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@...musvillemoes.dk>
> ---
>  drivers/input/serio/serport.c    |  5 ++---

I am fine with serport changes.

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

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@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ