All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: stable-review@kernel.org, torvalds@linux-foundation.org,
	akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk,
	Alan Cox <alan@linux.intel.com>
Subject: [092/136] tty: USB serial termios bits
Date: Thu, 01 Oct 2009 18:17:20 -0700	[thread overview]
Message-ID: <20091002012421.467132177@mini.kroah.org> (raw)
In-Reply-To: <20091002012911.GA18542@kroah.com>

[-- Attachment #1: tty-usb-serial-termios-bits.patch --]
[-- Type: text/plain, Size: 17687 bytes --]

2.6.31-stable review patch.  If anyone has any objections, please let us know.

------------------
From: Alan Cox <alan@linux.intel.com>

commit fe1ae7fdd2ee603f2d95f04e09a68f7f79045127 upstream.

Various drivers have hacks to mangle termios structures. This stems from
the fact there is no nice setup hook for configuring the termios settings
when the port is created

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/char/tty_io.c            |    1 
 drivers/usb/serial/ark3116.c     |   46 +++++++++------------------------------
 drivers/usb/serial/cypress_m8.c  |   12 ++--------
 drivers/usb/serial/empeg.c       |   12 ++--------
 drivers/usb/serial/iuu_phoenix.c |   31 +++++++++++---------------
 drivers/usb/serial/kobil_sct.c   |   22 +++++++++---------
 drivers/usb/serial/oti6858.c     |   21 ++++++++---------
 drivers/usb/serial/spcp8x5.c     |   21 ++++++++---------
 drivers/usb/serial/usb-serial.c  |   38 +++++++++++++++++++++++++++++++-
 drivers/usb/serial/whiteheat.c   |    6 ++---
 include/linux/usb/serial.h       |    3 ++
 11 files changed, 106 insertions(+), 107 deletions(-)

--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -1184,6 +1184,7 @@ int tty_init_termios(struct tty_struct *
 	tty->termios->c_ospeed = tty_termios_baud_rate(tty->termios);
 	return 0;
 }
+EXPORT_SYMBOL_GPL(tty_init_termios);
 
 /**
  *	tty_driver_install_tty() - install a tty entry in the driver
--- a/drivers/usb/serial/ark3116.c
+++ b/drivers/usb/serial/ark3116.c
@@ -35,11 +35,6 @@ static struct usb_device_id id_table [] 
 };
 MODULE_DEVICE_TABLE(usb, id_table);
 
-struct ark3116_private {
-	spinlock_t lock;
-	u8 termios_initialized;
-};
-
 static inline void ARK3116_SND(struct usb_serial *serial, int seq,
 			       __u8 request, __u8 requesttype,
 			       __u16 value, __u16 index)
@@ -82,22 +77,11 @@ static inline void ARK3116_RCV_QUIET(str
 static int ark3116_attach(struct usb_serial *serial)
 {
 	char *buf;
-	struct ark3116_private *priv;
-	int i;
-
-	for (i = 0; i < serial->num_ports; ++i) {
-		priv = kzalloc(sizeof(struct ark3116_private), GFP_KERNEL);
-		if (!priv)
-			goto cleanup;
-		spin_lock_init(&priv->lock);
-
-		usb_set_serial_port_data(serial->port[i], priv);
-	}
 
 	buf = kmalloc(1, GFP_KERNEL);
 	if (!buf) {
 		dbg("error kmalloc -> out of mem?");
-		goto cleanup;
+		return -ENOMEM;
 	}
 
 	/* 3 */
@@ -149,13 +133,16 @@ static int ark3116_attach(struct usb_ser
 
 	kfree(buf);
 	return 0;
+}
 
-cleanup:
-	for (--i; i >= 0; --i) {
-		kfree(usb_get_serial_port_data(serial->port[i]));
-		usb_set_serial_port_data(serial->port[i], NULL);
-	}
-	return -ENOMEM;
+static void ark3116_init_termios(struct tty_struct *tty)
+{
+	struct ktermios *termios = tty->termios;
+	*termios = tty_std_termios;
+	termios->c_cflag = B9600 | CS8
+				      | CREAD | HUPCL | CLOCAL;
+	termios->c_ispeed = 9600;
+	termios->c_ospeed = 9600;
 }
 
 static void ark3116_set_termios(struct tty_struct *tty,
@@ -163,10 +150,8 @@ static void ark3116_set_termios(struct t
 				struct ktermios *old_termios)
 {
 	struct usb_serial *serial = port->serial;
-	struct ark3116_private *priv = usb_get_serial_port_data(port);
 	struct ktermios *termios = tty->termios;
 	unsigned int cflag = termios->c_cflag;
-	unsigned long flags;
 	int baud;
 	int ark3116_baud;
 	char *buf;
@@ -176,16 +161,6 @@ static void ark3116_set_termios(struct t
 
 	dbg("%s - port %d", __func__, port->number);
 
-	spin_lock_irqsave(&priv->lock, flags);
-	if (!priv->termios_initialized) {
-		*termios = tty_std_termios;
-		termios->c_cflag = B9600 | CS8
-					      | CREAD | HUPCL | CLOCAL;
-		termios->c_ispeed = 9600;
-		termios->c_ospeed = 9600;
-		priv->termios_initialized = 1;
-	}
-	spin_unlock_irqrestore(&priv->lock, flags);
 
 	cflag = termios->c_cflag;
 	termios->c_cflag &= ~(CMSPAR|CRTSCTS);
@@ -455,6 +430,7 @@ static struct usb_serial_driver ark3116_
 	.num_ports =		1,
 	.attach =		ark3116_attach,
 	.set_termios =		ark3116_set_termios,
+	.init_termios =		ark3116_init_termios,
 	.ioctl =		ark3116_ioctl,
 	.tiocmget =		ark3116_tiocmget,
 	.open =			ark3116_open,
--- a/drivers/usb/serial/cypress_m8.c
+++ b/drivers/usb/serial/cypress_m8.c
@@ -659,15 +659,7 @@ static int cypress_open(struct tty_struc
 	spin_unlock_irqrestore(&priv->lock, flags);
 
 	/* Set termios */
-	result = cypress_write(tty, port, NULL, 0);
-
-	if (result) {
-		dev_err(&port->dev,
-			"%s - failed setting the control lines - error %d\n",
-							__func__, result);
-		return result;
-	} else
-		dbg("%s - success setting the control lines", __func__);
+	cypress_send(port);
 
 	if (tty)
 		cypress_set_termios(tty, port, &priv->tmp_termios);
@@ -1005,6 +997,8 @@ static void cypress_set_termios(struct t
 	dbg("%s - port %d", __func__, port->number);
 
 	spin_lock_irqsave(&priv->lock, flags);
+	/* We can't clean this one up as we don't know the device type
+	   early enough */
 	if (!priv->termios_initialized) {
 		if (priv->chiptype == CT_EARTHMATE) {
 			*(tty->termios) = tty_std_termios;
--- a/drivers/usb/serial/empeg.c
+++ b/drivers/usb/serial/empeg.c
@@ -90,8 +90,7 @@ static int  empeg_chars_in_buffer(struct
 static void empeg_throttle(struct tty_struct *tty);
 static void empeg_unthrottle(struct tty_struct *tty);
 static int  empeg_startup(struct usb_serial *serial);
-static void empeg_set_termios(struct tty_struct *tty,
-		struct usb_serial_port *port, struct ktermios *old_termios);
+static void empeg_init_termios(struct tty_struct *tty);
 static void empeg_write_bulk_callback(struct urb *urb);
 static void empeg_read_bulk_callback(struct urb *urb);
 
@@ -123,7 +122,7 @@ static struct usb_serial_driver empeg_de
 	.throttle =		empeg_throttle,
 	.unthrottle =		empeg_unthrottle,
 	.attach =		empeg_startup,
-	.set_termios =		empeg_set_termios,
+	.init_termios =		empeg_init_termios,
 	.write =		empeg_write,
 	.write_room =		empeg_write_room,
 	.chars_in_buffer =	empeg_chars_in_buffer,
@@ -150,9 +149,6 @@ static int empeg_open(struct tty_struct 
 
 	dbg("%s - port %d", __func__, port->number);
 
-	/* Force default termio settings */
-	empeg_set_termios(tty, port, NULL) ;
-
 	bytes_in = 0;
 	bytes_out = 0;
 
@@ -425,11 +421,9 @@ static int  empeg_startup(struct usb_ser
 }
 
 
-static void empeg_set_termios(struct tty_struct *tty,
-		struct usb_serial_port *port, struct ktermios *old_termios)
+static void empeg_init_termios(struct tty_struct *tty)
 {
 	struct ktermios *termios = tty->termios;
-	dbg("%s - port %d", __func__, port->number);
 
 	/*
 	 * The empeg-car player wants these particular tty settings.
--- a/drivers/usb/serial/iuu_phoenix.c
+++ b/drivers/usb/serial/iuu_phoenix.c
@@ -71,7 +71,6 @@ struct iuu_private {
 	spinlock_t lock;	/* store irq state */
 	wait_queue_head_t delta_msr_wait;
 	u8 line_status;
-	u8 termios_initialized;
 	int tiostatus;		/* store IUART SIGNAL for tiocmget call */
 	u8 reset;		/* if 1 reset is needed */
 	int poll;		/* number of poll */
@@ -1018,6 +1017,18 @@ static void iuu_close(struct usb_serial_
 	}
 }
 
+static void iuu_init_termios(struct tty_struct *tty)
+{
+	*(tty->termios) = tty_std_termios;
+	tty->termios->c_cflag = CLOCAL | CREAD | CS8 | B9600
+				| TIOCM_CTS | CSTOPB | PARENB;
+	tty->termios->c_ispeed = 9600;
+	tty->termios->c_ospeed = 9600;
+	tty->termios->c_lflag = 0;
+	tty->termios->c_oflag = 0;
+	tty->termios->c_iflag = 0;
+}
+
 static int iuu_open(struct tty_struct *tty,
 			struct usb_serial_port *port, struct file *filp)
 {
@@ -1025,7 +1036,6 @@ static int iuu_open(struct tty_struct *t
 	u8 *buf;
 	int result;
 	u32 actual;
-	unsigned long flags;
 	struct iuu_private *priv = usb_get_serial_port_data(port);
 
 	dbg("%s -  port %d", __func__, port->number);
@@ -1064,21 +1074,7 @@ static int iuu_open(struct tty_struct *t
 			  port->bulk_in_buffer, 512,
 			  NULL, NULL);
 
-	/* set the termios structure */
-	spin_lock_irqsave(&priv->lock, flags);
-	if (tty && !priv->termios_initialized) {
-		*(tty->termios) = tty_std_termios;
-		tty->termios->c_cflag = CLOCAL | CREAD | CS8 | B9600
-					| TIOCM_CTS | CSTOPB | PARENB;
-		tty->termios->c_ispeed = 9600;
-		tty->termios->c_ospeed = 9600;
-		tty->termios->c_lflag = 0;
-		tty->termios->c_oflag = 0;
-		tty->termios->c_iflag = 0;
-		priv->termios_initialized = 1;
-		priv->poll = 0;
-	 }
-	spin_unlock_irqrestore(&priv->lock, flags);
+	priv->poll = 0;
 
 	/* initialize writebuf */
 #define FISH(a, b, c, d) do { \
@@ -1201,6 +1197,7 @@ static struct usb_serial_driver iuu_devi
 	.tiocmget = iuu_tiocmget,
 	.tiocmset = iuu_tiocmset,
 	.set_termios = iuu_set_termios,
+	.init_termios = iuu_init_termios,
 	.attach = iuu_startup,
 	.release = iuu_release,
 };
--- a/drivers/usb/serial/kobil_sct.c
+++ b/drivers/usb/serial/kobil_sct.c
@@ -85,7 +85,7 @@ static void kobil_read_int_callback(stru
 static void kobil_write_callback(struct urb *purb);
 static void kobil_set_termios(struct tty_struct *tty,
 			struct usb_serial_port *port, struct ktermios *old);
-
+static void kobil_init_termios(struct tty_struct *tty);
 
 static struct usb_device_id id_table [] = {
 	{ USB_DEVICE(KOBIL_VENDOR_ID, KOBIL_ADAPTER_B_PRODUCT_ID) },
@@ -120,6 +120,7 @@ static struct usb_serial_driver kobil_de
 	.release =		kobil_release,
 	.ioctl =		kobil_ioctl,
 	.set_termios =		kobil_set_termios,
+	.init_termios =		kobil_init_termios,
 	.tiocmget =		kobil_tiocmget,
 	.tiocmset =		kobil_tiocmset,
 	.open =			kobil_open,
@@ -210,6 +211,15 @@ static void kobil_release(struct usb_ser
 		kfree(usb_get_serial_port_data(serial->port[i]));
 }
 
+static void kobil_init_termios(struct tty_struct *tty)
+{
+	/* Default to echo off and other sane device settings */
+	tty->termios->c_lflag = 0;
+	tty->termios->c_lflag &= ~(ISIG | ICANON | ECHO | IEXTEN | XCASE);
+	tty->termios->c_iflag = IGNBRK | IGNPAR | IXOFF;
+	/* do NOT translate CR to CR-NL (0x0A -> 0x0A 0x0D) */
+	tty->termios->c_oflag &= ~ONLCR;
+}
 
 static int kobil_open(struct tty_struct *tty,
 			struct usb_serial_port *port, struct file *filp)
@@ -226,16 +236,6 @@ static int kobil_open(struct tty_struct 
 	/* someone sets the dev to 0 if the close method has been called */
 	port->interrupt_in_urb->dev = port->serial->dev;
 
-	if (tty) {
-
-		/* Default to echo off and other sane device settings */
-		tty->termios->c_lflag = 0;
-		tty->termios->c_lflag &= ~(ISIG | ICANON | ECHO | IEXTEN |
-								 XCASE);
-		tty->termios->c_iflag = IGNBRK | IGNPAR | IXOFF;
-		/* do NOT translate CR to CR-NL (0x0A -> 0x0A 0x0D) */
-		tty->termios->c_oflag &= ~ONLCR;
-	}
 	/* allocate memory for transfer buffer */
 	transfer_buffer = kzalloc(transfer_buffer_length, GFP_KERNEL);
 	if (!transfer_buffer)
--- a/drivers/usb/serial/oti6858.c
+++ b/drivers/usb/serial/oti6858.c
@@ -146,6 +146,7 @@ static int oti6858_open(struct tty_struc
 static void oti6858_close(struct usb_serial_port *port);
 static void oti6858_set_termios(struct tty_struct *tty,
 			struct usb_serial_port *port, struct ktermios *old);
+static void oti6858_init_termios(struct tty_struct *tty);
 static int oti6858_ioctl(struct tty_struct *tty, struct file *file,
 			unsigned int cmd, unsigned long arg);
 static void oti6858_read_int_callback(struct urb *urb);
@@ -186,6 +187,7 @@ static struct usb_serial_driver oti6858_
 	.write =		oti6858_write,
 	.ioctl =		oti6858_ioctl,
 	.set_termios =		oti6858_set_termios,
+	.init_termios = 	oti6858_init_termios,
 	.tiocmget =		oti6858_tiocmget,
 	.tiocmset =		oti6858_tiocmset,
 	.read_bulk_callback =	oti6858_read_bulk_callback,
@@ -206,7 +208,6 @@ struct oti6858_private {
 	struct {
 		u8 read_urb_in_use;
 		u8 write_urb_in_use;
-		u8 termios_initialized;
 	} flags;
 	struct delayed_work delayed_write_work;
 
@@ -447,6 +448,14 @@ static int oti6858_chars_in_buffer(struc
 	return chars;
 }
 
+static void oti6858_init_termios(struct tty_struct *tty)
+{
+	*(tty->termios) = tty_std_termios;
+	tty->termios->c_cflag = B38400 | CS8 | CREAD | HUPCL | CLOCAL;
+	tty->termios->c_ispeed = 38400;
+	tty->termios->c_ospeed = 38400;
+}
+
 static void oti6858_set_termios(struct tty_struct *tty,
 		struct usb_serial_port *port, struct ktermios *old_termios)
 {
@@ -464,16 +473,6 @@ static void oti6858_set_termios(struct t
 		return;
 	}
 
-	spin_lock_irqsave(&priv->lock, flags);
-	if (!priv->flags.termios_initialized) {
-		*(tty->termios) = tty_std_termios;
-		tty->termios->c_cflag = B38400 | CS8 | CREAD | HUPCL | CLOCAL;
-		tty->termios->c_ispeed = 38400;
-		tty->termios->c_ospeed = 38400;
-		priv->flags.termios_initialized = 1;
-	}
-	spin_unlock_irqrestore(&priv->lock, flags);
-
 	cflag = tty->termios->c_cflag;
 
 	spin_lock_irqsave(&priv->lock, flags);
--- a/drivers/usb/serial/spcp8x5.c
+++ b/drivers/usb/serial/spcp8x5.c
@@ -299,7 +299,6 @@ struct spcp8x5_private {
 	wait_queue_head_t	delta_msr_wait;
 	u8 			line_control;
 	u8 			line_status;
-	u8 			termios_initialized;
 };
 
 /* desc : when device plug in,this function would be called.
@@ -498,6 +497,15 @@ static void spcp8x5_close(struct usb_ser
 		dev_dbg(&port->dev, "usb_unlink_urb(read_urb) = %d\n", result);
 }
 
+static void spcp8x5_init_termios(struct tty_struct *tty)
+{
+	/* for the 1st time call this function */
+	*(tty->termios) = tty_std_termios;
+	tty->termios->c_cflag = B115200 | CS8 | CREAD | HUPCL | CLOCAL;
+	tty->termios->c_ispeed = 115200;
+	tty->termios->c_ospeed = 115200;
+}
+
 /* set the serial param for transfer. we should check if we really need to
  * transfer. if we set flow control we should do this too. */
 static void spcp8x5_set_termios(struct tty_struct *tty,
@@ -514,16 +522,6 @@ static void spcp8x5_set_termios(struct t
 	int i;
 	u8 control;
 
-	/* for the 1st time call this function */
-	spin_lock_irqsave(&priv->lock, flags);
-	if (!priv->termios_initialized) {
-		*(tty->termios) = tty_std_termios;
-		tty->termios->c_cflag = B115200 | CS8 | CREAD | HUPCL | CLOCAL;
-		tty->termios->c_ispeed = 115200;
-		tty->termios->c_ospeed = 115200;
-		priv->termios_initialized = 1;
-	}
-	spin_unlock_irqrestore(&priv->lock, flags);
 
 	/* check that they really want us to change something */
 	if (!tty_termios_hw_change(tty->termios, old_termios))
@@ -1011,6 +1009,7 @@ static struct usb_serial_driver spcp8x5_
 	.carrier_raised		= spcp8x5_carrier_raised,
 	.write 			= spcp8x5_write,
 	.set_termios 		= spcp8x5_set_termios,
+	.init_termios		= spcp8x5_init_termios,
 	.ioctl 			= spcp8x5_ioctl,
 	.tiocmget 		= spcp8x5_tiocmget,
 	.tiocmset 		= spcp8x5_tiocmset,
--- a/drivers/usb/serial/usb-serial.c
+++ b/drivers/usb/serial/usb-serial.c
@@ -721,6 +721,41 @@ static const struct tty_port_operations 
 	.dtr_rts = serial_dtr_rts,
 };
 
+/**
+ *	serial_install		-	install tty
+ *	@driver: the driver (USB in our case)
+ *	@tty: the tty being created
+ *
+ *	Create the termios objects for this tty. We use the default USB
+ *	serial ones but permit them to be overriddenby serial->type->termios.
+ *	This lets us remove all the ugly hackery
+ */
+
+static int serial_install(struct tty_driver *driver, struct tty_struct *tty)
+{
+	int idx = tty->index;
+	struct usb_serial *serial;
+	int retval;
+
+	/* If the termios setup has yet to be done */
+	if (tty->driver->termios[idx] == NULL) {
+		/* perform the standard setup */
+		retval = tty_init_termios(tty);
+		if (retval)
+			return retval;
+		/* allow the driver to update it */
+		serial = usb_serial_get_by_index(tty->index);
+		if (serial->type->init_termios)
+			serial->type->init_termios(tty);
+		usb_serial_put(serial);
+	}
+	/* Final install (we use the default method) */
+	tty_driver_kref_get(driver);
+	tty->count++;
+	driver->ttys[idx] = tty;
+	return 0;
+}
+
 int usb_serial_probe(struct usb_interface *interface,
 			       const struct usb_device_id *id)
 {
@@ -1228,7 +1263,8 @@ static const struct tty_operations seria
 	.chars_in_buffer =	serial_chars_in_buffer,
 	.tiocmget =		serial_tiocmget,
 	.tiocmset =		serial_tiocmset,
-	.shutdown =		serial_do_free,
+	.shutdown = 		serial_do_free,
+	.install = 		serial_install,
 	.proc_fops =		&serial_proc_fops,
 };
 
--- a/drivers/usb/serial/whiteheat.c
+++ b/drivers/usb/serial/whiteheat.c
@@ -259,7 +259,7 @@ static int firm_send_command(struct usb_
 						__u8 *data, __u8 datasize);
 static int firm_open(struct usb_serial_port *port);
 static int firm_close(struct usb_serial_port *port);
-static int firm_setup_port(struct tty_struct *tty);
+static void firm_setup_port(struct tty_struct *tty);
 static int firm_set_rts(struct usb_serial_port *port, __u8 onoff);
 static int firm_set_dtr(struct usb_serial_port *port, __u8 onoff);
 static int firm_set_break(struct usb_serial_port *port, __u8 onoff);
@@ -1211,7 +1211,7 @@ static int firm_close(struct usb_serial_
 }
 
 
-static int firm_setup_port(struct tty_struct *tty)
+static void firm_setup_port(struct tty_struct *tty)
 {
 	struct usb_serial_port *port = tty->driver_data;
 	struct whiteheat_port_settings port_settings;
@@ -1286,7 +1286,7 @@ static int firm_setup_port(struct tty_st
 	port_settings.lloop = 0;
 
 	/* now send the message to the device */
-	return firm_send_command(port, WHITEHEAT_SETUP_PORT,
+	firm_send_command(port, WHITEHEAT_SETUP_PORT,
 			(__u8 *)&port_settings, sizeof(port_settings));
 }
 
--- a/include/linux/usb/serial.h
+++ b/include/linux/usb/serial.h
@@ -261,6 +261,9 @@ struct usb_serial_driver {
 	   be an attached tty at this point */
 	void (*dtr_rts)(struct usb_serial_port *port, int on);
 	int  (*carrier_raised)(struct usb_serial_port *port);
+	/* Called by the usb serial hooks to allow the user to rework the
+	   termios state */
+	void (*init_termios)(struct tty_struct *tty);
 	/* USB events */
 	void (*read_int_callback)(struct urb *urb);
 	void (*write_int_callback)(struct urb *urb);



  parent reply	other threads:[~2009-10-02  1:44 UTC|newest]

Thread overview: 159+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20091002011548.335611824@mini.kroah.org>
2009-10-02  1:29 ` [000/136] 2.6.31.2-stable review Greg KH
2009-10-02  1:15   ` [001/136] KVM: VMX: Fix EPT with WP bit change during paging Greg KH
2009-10-02  1:15   ` [002/136] pata_amd: do not filter out valid modes in nv_mode_filter Greg KH
2009-10-02  1:15   ` [003/136] p54usb: add Zcomax XG-705A usbid Greg KH
2009-10-02  1:15   ` [004/136] x86: Increase MIN_GAP to include randomized stack Greg KH
2009-10-02  1:15   ` [005/136] serial: bfin_5xx: fix building as module when early printk is enabled Greg KH
2009-10-02  1:15   ` [006/136] USB: option.c Add support for ZTE AC2726 EVDO modem Greg KH
2009-10-02  1:15   ` [007/136] USB: option: TELIT UC864G support Greg KH
2009-10-02  1:15   ` [008/136] video: s3c_fb.c: fix build with CONFIG_HOTPLUG=n Greg KH
2009-10-02  1:15   ` [009/136] kbuild: fix cc1 options check to ensure we do not use -fPIC when compiling Greg KH
2009-10-02  1:15   ` [010/136] drivers/mfd/ab3100-core.c: fix powerpc build error Greg KH
2009-10-02  1:15   ` [011/136] thinkpad-acpi: dont ask about brightness_mode for fw. 1V and 1R Greg KH
2009-10-02  1:16   ` [012/136] ACPI: pci_slot.ko wants a 64-bit _SUN Greg KH
2009-10-02  1:16   ` [013/136] fbcon: only unbind from console if successfully registered Greg KH
2009-10-02  1:16   ` [014/136] kallsyms: fix segfault in prefix_underscores_count() Greg KH
2009-10-02  1:16   ` [015/136] sisfb: change SiS_DDC_Port type to SISIOADDRESS Greg KH
2009-10-02  1:16   ` [016/136] mmc_spi: fail gracefully if host or card do not support the switch command Greg KH
2009-10-02  1:16     ` Greg KH
2009-10-02  1:16   ` [017/136] alpha: AGP update (fixes compile failure) Greg KH
2009-10-02  1:16   ` [018/136] fs: make sure data stored into inode is properly seen before unlocking new inode Greg KH
2009-10-02  1:16   ` [019/136] eCryptfs: Handle unrecognized tag 3 cipher codes Greg KH
2009-10-02  1:16   ` [020/136] eCryptfs: Check for O_RDONLY lower inodes when opening lower files Greg KH
2009-10-02  1:16   ` [021/136] eCryptfs: Filename encryption only supports password auth tokens Greg KH
2009-10-02  1:16   ` [022/136] eCryptfs: Validate global auth tok keys Greg KH
2009-10-02  1:16   ` [023/136] eCryptfs: Prevent lower dentry from going negative during unlink Greg KH
2009-10-02  1:16   ` [024/136] [CIFS] Re-enable Lanman security Greg KH
2009-10-02  1:16   ` [025/136] xen: make -fstack-protector work under Xen Greg KH
2009-10-02  1:16   ` [026/136] xen: only enable interrupts while actually blocking for spinlock Greg KH
2009-10-02  1:16   ` [027/136] xen: use stronger barrier after unlocking lock Greg KH
2009-10-02  1:16   ` [028/136] xen: check EFER for NX before setting up GDT mapping Greg KH
2009-10-02  1:16   ` [029/136] perf_counter: Fix perf_copy_attr() pointer arithmetic Greg KH
2009-10-02  1:16   ` [030/136] perf tools: Fix buffer allocation Greg KH
2009-10-02  1:16   ` [031/136] tty: serial/pcmcia: add ID for Advantech card Greg KH
2009-10-02  1:16   ` [032/136] PM / PCMCIA: Drop second argument of pcmcia_socket_dev_suspend() Greg KH
2009-10-02  1:16   ` [033/136] PM / yenta: Fix cardbus suspend/resume regression Greg KH
2009-10-02  1:16   ` [034/136] sony-laptop: check for rfkill hard block at load time Greg KH
2009-10-02  1:16   ` [035/136] nilfs2: fix missing zero-fill initialization of btree node cache Greg KH
2009-10-02  1:16   ` [036/136] ar9170usb: add usbid for TP-Link TL-WN821N v2 Greg KH
2009-10-02  1:16   ` [037/136] mtd: nand: fix ECC Correction bug for SMC ordering for NDFC driver Greg KH
2009-10-02  1:16   ` [038/136] mtd: ofpart: Check availability of reg property instead of name property Greg KH
2009-10-02  1:16   ` [039/136] mtd: cfi_cmdset_0002: add 0xFF intolerance for M29W128G Greg KH
2009-10-02  1:16   ` [040/136] USB: serial: ftdi_sio: new hardware support - hameg power supply Greg KH
2009-10-02  1:16   ` [041/136] USB: add PIDs for FTDI based OpenDCC hardware Greg KH
2009-10-02  1:16   ` [042/136] USB: serial: ftdi: handle gnICE+ JTAG adaptors Greg KH
2009-10-02  1:16   ` [043/136] USB: CDC WDM driver doesnt support non-blocking reads Greg KH
2009-10-02  1:16   ` [044/136] USB: fix cdc-acm regression in open Greg KH
2009-10-02  1:16   ` [045/136] cdc_acm: Fix to use modern speed interfaces Greg KH
2009-10-02  1:16   ` [046/136] tty: remove dtr/rts use from the driver open methods Greg KH
2009-10-02  1:16   ` [047/136] tty: gigaset: really fix chars_in_buffer Greg KH
2009-10-02  1:16   ` [048/136] kaweth: Fix memory leak in kaweth_control() Greg KH
2009-10-02  1:16   ` [049/136] x86: SGI UV: Fix IPI macros Greg KH
2009-10-02  1:16   ` [050/136] USB: serial: pl2303: new hardware support - sanwa multimeter Greg KH
2009-10-02  1:16   ` [051/136] USB: storage: fix a resume path GFP_NOIO must be used Greg KH
2009-10-02  1:16   ` [052/136] USB: usb-storage fails to attach to Huawei Datacard cdrom device Greg KH
2009-10-02  1:16   ` [053/136] USB: usbtmc: sanity checks for DEV_DEP_MSG_IN urbs Greg KH
2009-10-02  1:16   ` [054/136] USB: sl811-hcd: Fix device disconnect: Greg KH
2009-10-02  1:16   ` [055/136] drm/i915: remove restore in resume Greg KH
2009-10-02  1:16   ` [056/136] drm/i915: Only destroy a constructed mmap offset Greg KH
2009-10-02  1:16   ` [057/136] drm/i915: prevent FIFO calculation overflows on 32 bits with high dotclocks Greg KH
2009-10-02  1:16   ` [058/136] drm/i915: Add buffer to inactive list immediately during fault Greg KH
2009-10-02  1:16   ` [059/136] drm/i915: Check that the relocation points to within the target Greg KH
2009-10-02  1:16   ` [060/136] drm/i915: Fix typo for wrong LVDS clock setting on IGDNG Greg KH
2009-10-02  1:16   ` [061/136] drm/i915: Fix SSC frequence for IGDNG Greg KH
2009-10-02  1:16   ` [062/136] drm/i915: Remove DAC disable in CRT force detect on IGDNG Greg KH
2009-10-02  1:16   ` [063/136] drm/i915: Fix LVDS panel fitting on Arrandale Greg KH
2009-10-02  1:16   ` [064/136] drm/I915: Use the CRT DDC to get the EDID for DVI-connector on Mac Greg KH
2009-10-02  1:16   ` [065/136] drm/i915: fix tiling on IGDNG Greg KH
2009-10-02  1:16   ` [066/136] agp/intel: Fix the pre-9xx chipset flush Greg KH
2009-10-02  1:16   ` [067/136] nfsd4: fix null dereference creating nfsv4 callback client Greg KH
2009-10-02  1:16   ` [068/136] can: fix NOHZ local_softirq_pending 08 warning Greg KH
2009-10-02  1:16   ` [069/136] ahci: restore pci_intx() handling Greg KH
2009-10-02  1:16   ` [070/136] [ARM] pxa/sharpsl_pm: zaurus c3000 aka spitz: fix resume Greg KH
2009-10-02  1:16   ` [071/136] net ax25: Fix signed comparison in the sockopt handler Greg KH
2009-10-02  1:17   ` [072/136] net: Make the copy length in af_packet sockopt handler unsigned Greg KH
2009-10-02  1:17   ` [073/136] pty_write: dont do a tty_wakeup() when the buffers are full Greg KH
2009-10-02  1:17   ` [074/136] KVM: fix cpuid E2BIG handling for extended request types Greg KH
2009-10-02  1:17   ` [075/136] KVM: MMU: fix missing locking in alloc_mmu_pages Greg KH
2009-10-02  1:17   ` [076/136] KVM: MMU: fix bogus alloc_mmu_pages assignment Greg KH
2009-10-02  1:17   ` [077/136] KVM: Protect update_cr8_intercept() when running without an apic Greg KH
2009-10-02  1:17   ` [078/136] Revert "KVM: x86: check for cr3 validity in ioctl_set_sregs" Greg KH
2009-10-02  1:17   ` [079/136] [CPUFREQ] Fix NULL ptr regression in powernow-k8 Greg KH
2009-10-03 15:19     ` Herton Ronaldo Krzesinski
2009-10-05 16:08       ` [Stable-review] " Greg KH
2009-10-02  1:17   ` [080/136] perf tools: do not complain if root is owning perf.data Greg KH
2009-10-02  1:17   ` [081/136] netfilter: nf_nat: fix inverted logic for persistent NAT mappings Greg KH
2009-10-02  1:17   ` [082/136] netfilter: nf_conntrack: netns fix re reliable conntrack event delivery Greg KH
2009-10-02  1:17   ` [083/136] netfilter: bridge: refcount fix Greg KH
2009-10-02  1:17   ` [084/136] netfilter: ebt_ulog: fix checkentry return value Greg KH
2009-10-02  1:17   ` [085/136] ath5k: Wakeup fixes Greg KH
2009-10-02  1:17   ` [086/136] ath5k: do not release irq across suspend/resume Greg KH
2009-10-02  1:17   ` [087/136] Driver core: add new device to buss list before probing Greg KH
2009-10-02  1:17   ` [088/136] tty: Add a full port_close function Greg KH
2009-10-02  1:17   ` [089/136] tty: USB hangup is racy Greg KH
2009-10-02  1:17   ` [090/136] tty: USB can now use the shutdown method for kref based freeing of ports Greg KH
2009-10-02  1:17   ` [091/136] hwmon: (asus_atk0110) Add maintainer information Greg KH
2009-10-02  1:17   ` Greg KH [this message]
2009-10-02  1:17   ` [093/136] usb-serial: change referencing of port and serial structures Greg KH
2009-10-02  1:17   ` [094/136] usb-serial: put subroutines in logical order Greg KH
2009-10-02  1:17   ` [095/136] usb-serial: change logic of serial lookups Greg KH
2009-10-02  1:17   ` [096/136] usb-serial: acquire references when a new tty is installed Greg KH
2009-10-02  1:17   ` [097/136] usb-serial: fix termios initialization logic Greg KH
2009-10-02  1:17   ` [098/136] usb-serial: rename subroutines Greg KH
2009-10-02  1:17   ` [099/136] usb-serial: add missing tests and debug lines Greg KH
2009-10-02  1:17   ` [100/136] usb-serial: straighten out serial_open Greg KH
2009-10-02  1:17   ` [101/136] USB serial: update the console driver Greg KH
2009-10-02  1:17   ` [102/136] USB: xhci: Work around for chain bit in link TRBs Greg KH
2009-10-02  1:17   ` [103/136] USB: xhci: Fix slot and endpoint context debugging Greg KH
2009-10-02  1:17   ` [104/136] USB: xhci: Configure endpoint code refactoring Greg KH
2009-10-02  1:17   ` [105/136] USB: xhci: Set correct max packet size for HS/FS control endpoints Greg KH
2009-10-02  1:17   ` [106/136] USB: xhci: Support full speed devices Greg KH
2009-10-02  1:17   ` [107/136] USB: xhci: Handle stalled control endpoints Greg KH
2009-10-02  1:17   ` [108/136] USB: xhci: Add quirk for Fresco Logic xHCI hardware Greg KH
2009-10-02  1:17   ` [109/136] USB: xhci: Make TRB completion code comparison readable Greg KH
2009-10-02 16:38     ` David Vrabel
2009-10-02 16:53       ` [stable] " Greg KH
2009-10-02 17:23         ` David Vrabel
2009-10-02 17:35           ` Greg KH
2009-10-02  1:17   ` [110/136] USB: xhci: Handle babbling endpoints correctly Greg KH
2009-10-02  1:17   ` [111/136] USB: xhci: Dont touch xhci_td after its freed Greg KH
2009-10-02  1:17   ` [112/136] USB: xhci: Check URBs actual transfer buffer size Greg KH
2009-10-02  1:17   ` [113/136] USB: xhci: Check URB_SHORT_NOT_OK before setting short packet status Greg KH
2009-10-02  1:17   ` [114/136] USB: xhci: Set -EREMOTEIO when xHC gives bad transfer length Greg KH
2009-10-02  1:17   ` [115/136] USB: xhci: Support interrupt transfers Greg KH
2009-10-02  1:17   ` [116/136] USB: Fix SS endpoint companion descriptor parsing Greg KH
2009-10-02  1:17   ` [117/136] /proc/kcore: work around a BUG() Greg KH
2009-10-02  1:17   ` [118/136] hugetlb: restore interleaving of bootmem huge pages (2.6.31) Greg KH
2009-10-02  1:17   ` [119/136] page-allocator: limit the number of MIGRATE_RESERVE pageblocks per zone Greg KH
2009-10-02  1:17   ` [120/136] mm: munlock use follow_page Greg KH
2009-10-02 16:46     ` Hugh Dickins
2009-10-02 16:54       ` Greg KH
2009-10-02  1:17   ` [121/136] mm: fix anonymous dirtying Greg KH
2009-10-02 16:34     ` Hugh Dickins
2009-10-02 16:55       ` Greg KH
2009-10-02  1:17   ` [122/136] mmap: avoid unnecessary anon_vma lock acquisition in vma_adjust() Greg KH
2009-10-02 16:36     ` Hugh Dickins
2009-10-02 16:54       ` Greg KH
2009-10-02  1:17   ` [123/136] Fix idle time field in /proc/uptime Greg KH
2009-10-02  1:17   ` [124/136] drm/i915: Handle ERESTARTSYS during page fault Greg KH
2009-10-02  1:17   ` [125/136] em28xx: ir-kbd-i2c init data needs a persistent object Greg KH
2009-10-02  1:17   ` [126/136] saa7134: " Greg KH
2009-10-02  1:17   ` [127/136] powerpc/8xx: Fix regression introduced by cache coherency rewrite Greg KH
2009-10-02  1:17     ` Greg KH
2009-10-02  1:17   ` [128/136] powerpc: Fix incorrect setting of __HAVE_ARCH_PTE_SPECIAL Greg KH
2009-10-02  1:17     ` Greg KH
2009-10-02  1:17   ` [129/136] HID: completely remove apple mightymouse from blacklist Greg KH
2009-10-02  1:17   ` [130/136] [SCSI] mptsas : PAE Kernel more than 4 GB kernel panic Greg KH
2009-10-02  1:17   ` [131/136] NOMMU: Fix MAP_PRIVATE mmap() of objects where the data can be mapped directly Greg KH
2009-10-02  1:18   ` [132/136] iwlwifi: Handle new firmware file with ucode build number in header Greg KH
2009-10-02  1:18   ` [133/136] iwlwifi: update 1000 series API version to match firmware Greg KH
2009-10-02  1:18   ` [134/136] iwlagn: modify digital SVR for 1000 Greg KH
2009-10-02  1:18   ` [135/136] iwlwifi: traverse linklist to find the valid OTP block Greg KH
2009-10-02  1:18     ` Greg KH
2009-10-02  1:18   ` [136/136] iwlwifi: fix unloading driver while scanning Greg KH
2009-10-02  5:01   ` [000/136] 2.6.31.2-stable review Eric W. Biederman
2009-10-02  5:10     ` Greg KH
2009-10-02  5:34       ` Eric W. Biederman
2009-10-02  6:06       ` Eric W. Biederman
2009-10-06  0:12   ` Daisuke Nishimura
2009-10-09 22:30     ` [Stable-review] " Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20091002012421.467132177@mini.kroah.org \
    --to=gregkh@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=alan@linux.intel.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable-review@kernel.org \
    --cc=stable@kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.