aboutsummaryrefslogtreecommitdiffstats
diff options
authorGreg Kroah-Hartman <gregkh@suse.de>2010-10-07 10:55:46 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2010-10-07 10:55:46 -0700
commit344107862b45d3d0a15b186ebc178859e6c7f975 (patch)
tree69c4d7f24455551600a97715c331a7684c44e27f
parentd63d4b49a0297ef53ed687810d3ff7df0ad9c934 (diff)
downloadpatches-344107862b45d3d0a15b186ebc178859e6c7f975.tar.gz
more patches
-rw-r--r--series8
-rw-r--r--tty/jsm-remove-the-uart-port-on-errors.patch39
-rw-r--r--tty/serial-imx-serial-driver-fix-resume.patch55
-rw-r--r--usb/usb-core-endpoint-fix-error-path.patch31
-rw-r--r--usb/usb-cp210x-add-wago-750-923-service-cable-device-id.patch48
-rw-r--r--usb/usb-gadget-dummy_hcd-fix-error-path.patch48
6 files changed, 226 insertions, 3 deletions
diff --git a/series b/series
index 1516c9f638e0b6..58758086f5d914 100644
--- a/series
+++ b/series
@@ -108,6 +108,8 @@ tty/altera_uart-fix-missing-prototype-for-registering-an-early-console.patch
tty/altera_uart-don-t-use-plain-integer-as-null-pointer.patch
tty/8250-allow-platforms-to-override-pm-hook.patch
tty/alchemy-add-uart-pm-methods.patch
+tty/jsm-remove-the-uart-port-on-errors.patch
+tty/serial-imx-serial-driver-fix-resume.patch
###################################
# USB stuff for after 2.6.36 is out
@@ -213,10 +215,10 @@ usb/usb-storage-add-new-no_read_disc_info-quirk.patch
usb/scsi-sd-add-a-no_read_capacity_16-scsi_device-flag.patch
usb/usb-storage-add-new-no_read_capacity_16-quirk.patch
usb/usb-do-not-print-eshutdown-message-if-usb-at-otg-device-mode.patch
-
+usb/usb-cp210x-add-wago-750-923-service-cable-device-id.patch
+usb/usb-core-endpoint-fix-error-path.patch
+usb/usb-gadget-dummy_hcd-fix-error-path.patch
# staging stuff for next is now in the staging-next tree on git.kernel.org
-
-
diff --git a/tty/jsm-remove-the-uart-port-on-errors.patch b/tty/jsm-remove-the-uart-port-on-errors.patch
new file mode 100644
index 00000000000000..68380a0b7b10c2
--- /dev/null
+++ b/tty/jsm-remove-the-uart-port-on-errors.patch
@@ -0,0 +1,39 @@
+From linux-serial-owner@vger.kernel.org Thu Oct 7 10:48:23 2010
+From: Breno Leitao <leitao@linux.vnet.ibm.com>
+To: greg@kroah.com
+Cc: linux-serial@vger.kernel.org,
+ Breno Leitao <leitao@linux.vnet.ibm.com>
+Subject: jsm: Remove the uart port on errors
+Date: Thu, 7 Oct 2010 13:40:42 -0300
+Message-Id: <1286469642-18796-1-git-send-email-leitao@linux.vnet.ibm.com>
+
+If kzmalloc fails, the uart port is not removed causing a leak.
+This patch just add another label that removes the uart when the
+kzmalloc fails.
+
+Signed-off-by: Breno Leitao <leitao@linux.vnet.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/serial/jsm/jsm_driver.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/serial/jsm/jsm_driver.c
++++ b/drivers/serial/jsm/jsm_driver.c
+@@ -172,13 +172,15 @@ static int __devinit jsm_probe_one(struc
+ jsm_uart_port_init here! */
+ dev_err(&pdev->dev, "memory allocation for flipbuf failed\n");
+ rc = -ENOMEM;
+- goto out_free_irq;
++ goto out_free_uart;
+ }
+
+ pci_set_drvdata(pdev, brd);
+ pci_save_state(pdev);
+
+ return 0;
++ out_free_uart:
++ jsm_remove_uart_port(brd);
+ out_free_irq:
+ jsm_remove_uart_port(brd);
+ free_irq(brd->irq, brd);
diff --git a/tty/serial-imx-serial-driver-fix-resume.patch b/tty/serial-imx-serial-driver-fix-resume.patch
new file mode 100644
index 00000000000000..b68bb284517808
--- /dev/null
+++ b/tty/serial-imx-serial-driver-fix-resume.patch
@@ -0,0 +1,55 @@
+From daniel@caiaq.de Thu Oct 7 10:49:08 2010
+From: Volker Ernst <volker.ernst@txtr.com>
+To: linux-arm-kernel@lists.infradead.org
+Cc: gregkh@suse.de, akpm@linux-foundation.org,
+ s.hauer@pengutronix.de, Volker Ernst <volker.ernst@txtr.com>,
+ Daniel Mack <daniel@caiaq.de>, Andy Green <andy@warmcat.com>
+Subject: serial: imx serial driver: fix resume
+Date: Wed, 6 Oct 2010 18:57:16 +0200
+Message-Id: <1286384236-4241-1-git-send-email-daniel@caiaq.de>
+
+From: Volker Ernst <volker.ernst@txtr.com>
+
+I just came across a bug in the IMX31 serial driver which is still
+present in the newest kernels and which prevents successful
+resume-operation for the IMX31 serial ports.
+
+What happens is that in "drivers/serial/imx.c" on resume function
+"serial_imx_resume" gets called. This function in turn calls
+"uart_resume_port" (in the generic serial driver "serial_core.c"),
+which in turn calls "imx_start_tx" in "imx.c" (in case the SIO-port
+was really suspended) which in turn calls "imx_transmit_buffer".
+
+However calling "imx_transmit_buffer" with an empty TX-fifo (as is
+usually the case) will result in the serial port starting to transmit
+(actually the old [already sent] tx-buffer), as there is no check if
+the tx-buffer is empty before starting to feed tx-fifo-data to the
+serial port hardware.
+
+Signed-off-by: Volker Ernst <volker.ernst@txtr.com>
+Cc: Daniel Mack <daniel@caiaq.de>
+Cc: Andy Green <andy@warmcat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/serial/imx.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/serial/imx.c
++++ b/drivers/serial/imx.c
+@@ -328,13 +328,13 @@ static inline void imx_transmit_buffer(s
+ struct circ_buf *xmit = &sport->port.state->xmit;
+
+ while (!(readl(sport->port.membase + UTS) & UTS_TXFULL)) {
++ if (uart_circ_empty(xmit))
++ break;
+ /* send xmit->buf[xmit->tail]
+ * out the port here */
+ writel(xmit->buf[xmit->tail], sport->port.membase + URTX0);
+ xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1);
+ sport->port.icount.tx++;
+- if (uart_circ_empty(xmit))
+- break;
+ }
+
+ if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
diff --git a/usb/usb-core-endpoint-fix-error-path.patch b/usb/usb-core-endpoint-fix-error-path.patch
new file mode 100644
index 00000000000000..5da3dfda286040
--- /dev/null
+++ b/usb/usb-core-endpoint-fix-error-path.patch
@@ -0,0 +1,31 @@
+From rahul.ruikar@gmail.com Thu Oct 7 10:51:06 2010
+From: Rahul Ruikar <rahul.ruikar@gmail.com>
+To: Greg Kroah-Hartman <gregkh@suse.de>, Tejun Heo <tj@kernel.org>,
+ asanchez@neurowork.net, rjw@sisk.pl, csanchez@neurowork.net
+Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
+ Rahul Ruikar <rahul.ruikar@gmail.com>
+Subject: usb: core: endpoint: Fix error path
+Date: Thu, 7 Oct 2010 09:31:12 +0530
+Message-Id: <1286424072-2819-1-git-send-email-rahul.ruikar@gmail.com>
+
+In function usb_create_ep_devs()
+call put_device() when device_register() fails.
+
+Signed-off-by: Rahul Ruikar <rahul.ruikar@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/endpoint.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/core/endpoint.c
++++ b/drivers/usb/core/endpoint.c
+@@ -202,7 +202,7 @@ int usb_create_ep_devs(struct device *pa
+ return retval;
+
+ error_register:
+- kfree(ep_dev);
++ put_device(&ep_dev->dev);
+ exit:
+ return retval;
+ }
diff --git a/usb/usb-cp210x-add-wago-750-923-service-cable-device-id.patch b/usb/usb-cp210x-add-wago-750-923-service-cable-device-id.patch
new file mode 100644
index 00000000000000..136ce534de0d38
--- /dev/null
+++ b/usb/usb-cp210x-add-wago-750-923-service-cable-device-id.patch
@@ -0,0 +1,48 @@
+From anders@alarsen.net Thu Oct 7 10:48:47 2010
+Date: Wed, 6 Oct 2010 23:46:25 +0200
+From: Anders Larsen <al@alarsen.net>
+To: Greg Kroah-Hartman <gregkh@suse.de>
+Cc: Craig Shelley <craig@microtron.org.uk>,
+ linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
+Subject: USB: cp210x: Add WAGO 750-923 Service Cable device ID
+Message-ID: <20101006214625.GA21514@alarsen.net>
+Content-Disposition: inline
+
+The WAGO 750-923 USB Service Cable is used for configuration and firmware
+updates of several industrial automation products from WAGO Kontakttechnik GmbH.
+
+Bus 004 Device 002: ID 1be3:07a6
+Device Descriptor:
+ bLength 18
+ bDescriptorType 1
+ bcdUSB 1.10
+ bDeviceClass 0 (Defined at Interface level)
+ bDeviceSubClass 0
+ bDeviceProtocol 0
+ bMaxPacketSize0 64
+ idVendor 0x1be3
+ idProduct 0x07a6
+ bcdDevice 1.00
+ iManufacturer 1 Silicon Labs
+ iProduct 2 WAGO USB Service Cable
+ iSerial 3 1277796751
+ . . .
+
+Signed-off-by: Anders Larsen <al@alarsen.net>
+Cc: stable <stable@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/cp210x.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/serial/cp210x.c
++++ b/drivers/usb/serial/cp210x.c
+@@ -133,6 +133,7 @@ static const struct usb_device_id id_tab
+ { USB_DEVICE(0x17F4, 0xAAAA) }, /* Wavesense Jazz blood glucose meter */
+ { USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */
+ { USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */
++ { USB_DEVICE(0x1BE3, 0x07A6) }, /* WAGO 750-923 USB Service Cable */
+ { USB_DEVICE(0x413C, 0x9500) }, /* DW700 GPS USB interface */
+ { } /* Terminating Entry */
+ };
diff --git a/usb/usb-gadget-dummy_hcd-fix-error-path.patch b/usb/usb-gadget-dummy_hcd-fix-error-path.patch
new file mode 100644
index 00000000000000..8dad556e3e4cee
--- /dev/null
+++ b/usb/usb-gadget-dummy_hcd-fix-error-path.patch
@@ -0,0 +1,48 @@
+From rahul.ruikar@gmail.com Thu Oct 7 10:51:20 2010
+From: Rahul Ruikar <rahul.ruikar@gmail.com>
+To: David Brownell <dbrownell@users.sourceforge.net>,
+ Greg Kroah-Hartman <gregkh@suse.de>,
+ Alan Stern <stern@rowland.harvard.edu>
+Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
+ Rahul Ruikar <rahul.ruikar@gmail.com>
+Subject: usb: gadget: dummy_hcd: Fix error path
+Date: Thu, 7 Oct 2010 09:40:45 +0530
+Message-Id: <1286424645-2899-1-git-send-email-rahul.ruikar@gmail.com>
+
+In function dummy_udc_probe()
+call put_device() when device_register() fails.
+also usb_get_hcd() put before device_register() after review comment
+from Alan Stern.
+
+Signed-off-by: Rahul Ruikar <rahul.ruikar@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/dummy_hcd.c | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/gadget/dummy_hcd.c
++++ b/drivers/usb/gadget/dummy_hcd.c
+@@ -874,6 +874,8 @@ static int dummy_udc_probe (struct platf
+ struct dummy *dum = the_controller;
+ int rc;
+
++ usb_get_hcd(dummy_to_hcd(dum));
++
+ dum->gadget.name = gadget_name;
+ dum->gadget.ops = &dummy_ops;
+ dum->gadget.is_dualspeed = 1;
+@@ -885,10 +887,10 @@ static int dummy_udc_probe (struct platf
+ dum->gadget.dev.parent = &pdev->dev;
+ dum->gadget.dev.release = dummy_gadget_release;
+ rc = device_register (&dum->gadget.dev);
+- if (rc < 0)
++ if (rc < 0) {
++ put_device(&dum->gadget.dev);
+ return rc;
+-
+- usb_get_hcd (dummy_to_hcd (dum));
++ }
+
+ platform_set_drvdata (pdev, dum);
+ rc = device_create_file (&dum->gadget.dev, &dev_attr_function);