aboutsummaryrefslogtreecommitdiffstats
diff options
authorGreg Kroah-Hartman <gregkh@suse.de>2010-09-21 06:48:19 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2010-09-21 06:48:19 -0700
commit607fc569672ee97fe92aaa7d8010bae9cb57bc59 (patch)
tree5b28878735de594b4ad8798c766e1a99e66442d3
parent6e59f9739ac77a39f6db572f31b6f2c98b8c7b96 (diff)
downloadpatches-607fc569672ee97fe92aaa7d8010bae9cb57bc59.tar.gz
2.6.36-rc5
-rw-r--r--driver-core/debugfs-mark-me-as-the-maintainer.patch35
-rw-r--r--series10
-rw-r--r--staging.current/revert-staging-batman-adv-adding-netfilter-bridge-hooks.patch88
-rw-r--r--staging.current/staging-vt6655-fix-buffer-overflow.patch50
-rw-r--r--tty.current/serial-amba-pl010-fix-set_ldisc.patch41
-rw-r--r--tty.current/serial-mfd-fix-bug-in-serial_hsu_remove.patch59
-rw-r--r--usb.current/usb-ehci-disable-langwell-penwell-lpm-capability.patch36
-rw-r--r--usb.current/usb-musb-maintainers-fix-my-mail-address.patch38
-rw-r--r--usb.current/usb-musb_debugfs-don-t-use-the-struct-file-private_data-field-with-seq_files.patch41
-rw-r--r--usb.current/usb-otg-twl4030-fix-phy-initialization-v1.patch287
-rw-r--r--usb.current/usb-serial-mos-prevent-reading-uninitialized.patch49
-rw-r--r--version2
12 files changed, 37 insertions, 699 deletions
diff --git a/driver-core/debugfs-mark-me-as-the-maintainer.patch b/driver-core/debugfs-mark-me-as-the-maintainer.patch
new file mode 100644
index 00000000000000..27d9f7966711d1
--- /dev/null
+++ b/driver-core/debugfs-mark-me-as-the-maintainer.patch
@@ -0,0 +1,35 @@
+From foo@baz Tue Sep 21 06:39:23 PDT 2010
+Date: Tue, 21 Sep 2010 06:39:23 -0700
+To: Greg KH <greg@kroah.com>
+From: Greg Kroah-Hartman <gregkh@suse.de>
+Subject: debugfs: mark me as the maintainer
+
+Add DEBUGFS information to my MAINTAINERS entry as some people have
+asked about this recently.
+
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ MAINTAINERS | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/MAINTAINERS
++++ b/MAINTAINERS
+@@ -2033,14 +2033,16 @@ F: drivers/block/drbd/
+ F: lib/lru_cache.c
+ F: Documentation/blockdev/drbd/
+
+-DRIVER CORE, KOBJECTS, AND SYSFS
++DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS
+ M: Greg Kroah-Hartman <gregkh@suse.de>
+ T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
+ S: Supported
+ F: Documentation/kobject.txt
+ F: drivers/base/
+ F: fs/sysfs/
++F: fs/debugfs/
+ F: include/linux/kobj*
++F: include/linux/debugfs.h
+ F: lib/kobj*
+
+ DRM DRIVERS
diff --git a/series b/series
index 0d5221b7d8667b..a1d3337331f61f 100644
--- a/series
+++ b/series
@@ -13,25 +13,16 @@ gregkh/gkh-version.patch
#################################
# TTY patches for 2.6.36
#################################
-tty.current/serial-amba-pl010-fix-set_ldisc.patch
-tty.current/serial-mfd-fix-bug-in-serial_hsu_remove.patch
#################################
# USB patches for 2.6.36
#################################
-usb.current/usb-musb_debugfs-don-t-use-the-struct-file-private_data-field-with-seq_files.patch
-usb.current/usb-ehci-disable-langwell-penwell-lpm-capability.patch
-usb.current/usb-otg-twl4030-fix-phy-initialization-v1.patch
-usb.current/usb-serial-mos-prevent-reading-uninitialized.patch
-usb.current/usb-musb-maintainers-fix-my-mail-address.patch
#################################
# Staging patches for 2.6.36
#################################
-staging.current/revert-staging-batman-adv-adding-netfilter-bridge-hooks.patch
-staging.current/staging-vt6655-fix-buffer-overflow.patch
#####################################################################
@@ -49,6 +40,7 @@ driver-core/uio-do-not-use-pci-resources-before-pci_enable_device.patch
driver-core/driver-core-platform_bus-allow-runtime-override-of-dev_pm_ops.patch
driver-core/add-packet-hub-driver-for-topcliff-platform-controller-hub.patch
driver-core/pch_phub-fix-build-warnings.patch
+driver-core/debugfs-mark-me-as-the-maintainer.patch
# can we really almost drop it? please let it happen this time...
driver-core/driver-core-remove-config_sysfs_deprecated_v2-but-keep-it-for-block-devices.patch
diff --git a/staging.current/revert-staging-batman-adv-adding-netfilter-bridge-hooks.patch b/staging.current/revert-staging-batman-adv-adding-netfilter-bridge-hooks.patch
deleted file mode 100644
index 735aabe54259d3..00000000000000
--- a/staging.current/revert-staging-batman-adv-adding-netfilter-bridge-hooks.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From sven.eckelmann@gmx.de Sun Sep 5 00:23:24 2010
-From: Sven Eckelmann <sven.eckelmann@gmx.de>
-Date: Sun, 5 Sep 2010 01:58:18 +0200
-Subject: Revert: "Staging: batman-adv: Adding netfilter-bridge hooks"
-To: greg@kroah.com
-Cc: b.a.t.m.a.n@lists.open-mesh.net, Sven Eckelmann <sven.eckelmann@gmx.de>
-Message-ID: <1283644718-653-2-git-send-email-sven.eckelmann@gmx.de>
-
-
-This reverts commit 96d592ed599434d2d5f339a1d282871bc6377d2c.
-
-The netfilter hook seems to be misused and may leak skbs in situations
-when NF_HOOK returns NF_STOLEN. It may not filter everything as
-expected. Also the ethernet bridge tables are not yet capable to
-understand batman-adv packet correctly.
-
-It was only added for testing purposes and can be removed again.
-
-Reported-by: Vasiliy Kulikov <segooon@gmail.com>
-Signed-off-by: Sven Eckelmann <sven.eckelmann@gmx.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/staging/batman-adv/hard-interface.c | 13 -------------
- drivers/staging/batman-adv/send.c | 8 ++------
- 2 files changed, 2 insertions(+), 19 deletions(-)
-
---- a/drivers/staging/batman-adv/hard-interface.c
-+++ b/drivers/staging/batman-adv/hard-interface.c
-@@ -30,7 +30,6 @@
- #include "hash.h"
-
- #include <linux/if_arp.h>
--#include <linux/netfilter_bridge.h>
-
- #define MIN(x, y) ((x) < (y) ? (x) : (y))
-
-@@ -431,11 +430,6 @@ out:
- return NOTIFY_DONE;
- }
-
--static int batman_skb_recv_finish(struct sk_buff *skb)
--{
-- return NF_ACCEPT;
--}
--
- /* receive a packet with the batman ethertype coming on a hard
- * interface */
- int batman_skb_recv(struct sk_buff *skb, struct net_device *dev,
-@@ -456,13 +450,6 @@ int batman_skb_recv(struct sk_buff *skb,
- if (atomic_read(&module_state) != MODULE_ACTIVE)
- goto err_free;
-
-- /* if netfilter/ebtables wants to block incoming batman
-- * packets then give them a chance to do so here */
-- ret = NF_HOOK(PF_BRIDGE, NF_BR_LOCAL_IN, skb, dev, NULL,
-- batman_skb_recv_finish);
-- if (ret != 1)
-- goto err_out;
--
- /* packet should hold at least type and version */
- if (unlikely(skb_headlen(skb) < 2))
- goto err_free;
---- a/drivers/staging/batman-adv/send.c
-+++ b/drivers/staging/batman-adv/send.c
-@@ -29,7 +29,6 @@
- #include "vis.h"
- #include "aggregation.h"
-
--#include <linux/netfilter_bridge.h>
-
- static void send_outstanding_bcast_packet(struct work_struct *work);
-
-@@ -92,12 +91,9 @@ int send_skb_packet(struct sk_buff *skb,
-
- /* dev_queue_xmit() returns a negative result on error. However on
- * congestion and traffic shaping, it drops and returns NET_XMIT_DROP
-- * (which is > 0). This will not be treated as an error.
-- * Also, if netfilter/ebtables wants to block outgoing batman
-- * packets then giving them a chance to do so here */
-+ * (which is > 0). This will not be treated as an error. */
-
-- return NF_HOOK(PF_BRIDGE, NF_BR_LOCAL_OUT, skb, NULL, skb->dev,
-- dev_queue_xmit);
-+ return dev_queue_xmit(skb);
- send_skb_err:
- kfree_skb(skb);
- return NET_XMIT_DROP;
diff --git a/staging.current/staging-vt6655-fix-buffer-overflow.patch b/staging.current/staging-vt6655-fix-buffer-overflow.patch
deleted file mode 100644
index 9415947a8c365f..00000000000000
--- a/staging.current/staging-vt6655-fix-buffer-overflow.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From error27@gmail.com Tue Sep 7 00:45:09 2010
-From: Dan Carpenter <error27@gmail.com>
-Date: Mon, 6 Sep 2010 14:32:30 +0200
-Subject: Staging: vt6655: fix buffer overflow
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: Charles Cl�ment <caratorn@gmail.com>, Jim Lieb <lieb@canonical.com>, devel@driverdev.osuosl.org, kernel-janitors@vger.kernel.org
-Message-ID: <20100906123230.GB2764@bicker>
-Content-Disposition: inline
-
-
-"param->u.wpa_associate.wpa_ie_len" comes from the user. We should
-check it so that the copy_from_user() doesn't overflow the buffer.
-
-Also further down in the function, we assume that if
-"param->u.wpa_associate.wpa_ie_len" is set then "abyWPAIE[0]" is
-initialized. To make that work, I changed the test here to say that if
-"wpa_ie_len" is set then "wpa_ie" has to be a valid pointer or we return
--EINVAL.
-
-Oddly, we only use the first element of the abyWPAIE[] array. So I
-suspect there may be some other issues in this function.
-
-Signed-off-by: Dan Carpenter <error27@gmail.com>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/staging/vt6655/wpactl.c | 11 ++++++++---
- 1 file changed, 8 insertions(+), 3 deletions(-)
-
---- a/drivers/staging/vt6655/wpactl.c
-+++ b/drivers/staging/vt6655/wpactl.c
-@@ -766,9 +766,14 @@ static int wpa_set_associate(PSDevice pD
- DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "wpa_ie_len = %d\n", param->u.wpa_associate.wpa_ie_len);
-
-
-- if (param->u.wpa_associate.wpa_ie &&
-- copy_from_user(&abyWPAIE[0], param->u.wpa_associate.wpa_ie, param->u.wpa_associate.wpa_ie_len))
-- return -EINVAL;
-+ if (param->u.wpa_associate.wpa_ie_len) {
-+ if (!param->u.wpa_associate.wpa_ie)
-+ return -EINVAL;
-+ if (param->u.wpa_associate.wpa_ie_len > sizeof(abyWPAIE))
-+ return -EINVAL;
-+ if (copy_from_user(&abyWPAIE[0], param->u.wpa_associate.wpa_ie, param->u.wpa_associate.wpa_ie_len))
-+ return -EFAULT;
-+ }
-
- if (param->u.wpa_associate.mode == 1)
- pMgmt->eConfigMode = WMAC_CONFIG_IBSS_STA;
diff --git a/tty.current/serial-amba-pl010-fix-set_ldisc.patch b/tty.current/serial-amba-pl010-fix-set_ldisc.patch
deleted file mode 100644
index 927dfd1f78c361..00000000000000
--- a/tty.current/serial-amba-pl010-fix-set_ldisc.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From mika.westerberg@iki.fi Sat Sep 4 21:04:11 2010
-From: Mika Westerberg <mika.westerberg@iki.fi>
-Date: Sat, 4 Sep 2010 10:23:23 +0300
-Subject: serial: amba-pl010: fix set_ldisc
-To: linux-kernel@vger.kernel.org
-Cc: Alan Cox <alan@linux.intel.com>, Russell King <rmk+kernel@arm.linux.org.uk>, gregkh@suse.de
-Message-ID: <20100904072323.GR25559@gw.healthdatacare.com>
-
-
-Commit d87d9b7d1 ("tty: serial - fix tty referencing in set_ldisc") changed
-set_ldisc to take ldisc number as parameter. This patch fixes AMBA PL010 driver
-according the new prototype.
-
-Signed-off-by: Mika Westerberg <mika.westerberg@iki.fi>
-Cc: Alan Cox <alan@linux.intel.com>
-Cc: Russell King <rmk+kernel@arm.linux.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/serial/amba-pl010.c | 9 ++-------
- 1 file changed, 2 insertions(+), 7 deletions(-)
-
---- a/drivers/serial/amba-pl010.c
-+++ b/drivers/serial/amba-pl010.c
-@@ -472,14 +472,9 @@ pl010_set_termios(struct uart_port *port
- spin_unlock_irqrestore(&uap->port.lock, flags);
- }
-
--static void pl010_set_ldisc(struct uart_port *port)
-+static void pl010_set_ldisc(struct uart_port *port, int new)
- {
-- int line = port->line;
--
-- if (line >= port->state->port.tty->driver->num)
-- return;
--
-- if (port->state->port.tty->ldisc->ops->num == N_PPS) {
-+ if (new == N_PPS) {
- port->flags |= UPF_HARDPPS_CD;
- pl010_enable_ms(port);
- } else
diff --git a/tty.current/serial-mfd-fix-bug-in-serial_hsu_remove.patch b/tty.current/serial-mfd-fix-bug-in-serial_hsu_remove.patch
deleted file mode 100644
index 5678f5606ace43..00000000000000
--- a/tty.current/serial-mfd-fix-bug-in-serial_hsu_remove.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From alan@linux.intel.com Tue Sep 7 00:48:03 2010
-From: Feng Tang <feng.tang@intel.com>
-Date: Mon, 06 Sep 2010 13:41:02 +0100
-Subject: serial: mfd: fix bug in serial_hsu_remove()
-To: greg@kroah.com, linux-serial@vger.kernel.org
-Message-ID: <20100906124102.1596.96288.stgit@localhost.localdomain>
-
-
-From: Feng Tang <feng.tang@intel.com>
-
-Medfield HSU driver deal with 4 pci devices(3 uart ports + 1 dma controller),
-so in pci remove func, we need handle them differently
-
-Signed-off-by: Feng Tang <feng.tang@intel.com>
-Signed-off-by: Alan Cox <alan@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/serial/mfd.c | 17 +++++++++--------
- 1 file changed, 9 insertions(+), 8 deletions(-)
-
---- a/drivers/serial/mfd.c
-+++ b/drivers/serial/mfd.c
-@@ -1423,7 +1423,6 @@ static void hsu_global_init(void)
- }
-
- phsu = hsu;
--
- hsu_debugfs_init(hsu);
- return;
-
-@@ -1435,18 +1434,20 @@ err_free_region:
-
- static void serial_hsu_remove(struct pci_dev *pdev)
- {
-- struct hsu_port *hsu;
-- int i;
-+ void *priv = pci_get_drvdata(pdev);
-+ struct uart_hsu_port *up;
-
-- hsu = pci_get_drvdata(pdev);
-- if (!hsu)
-+ if (!priv)
- return;
-
-- for (i = 0; i < 3; i++)
-- uart_remove_one_port(&serial_hsu_reg, &hsu->port[i].port);
-+ /* For port 0/1/2, priv is the address of uart_hsu_port */
-+ if (pdev->device != 0x081E) {
-+ up = priv;
-+ uart_remove_one_port(&serial_hsu_reg, &up->port);
-+ }
-
- pci_set_drvdata(pdev, NULL);
-- free_irq(hsu->irq, hsu);
-+ free_irq(pdev->irq, priv);
- pci_disable_device(pdev);
- }
-
diff --git a/usb.current/usb-ehci-disable-langwell-penwell-lpm-capability.patch b/usb.current/usb-ehci-disable-langwell-penwell-lpm-capability.patch
deleted file mode 100644
index de57de40b10f93..00000000000000
--- a/usb.current/usb-ehci-disable-langwell-penwell-lpm-capability.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From alan@linux.intel.com Tue Sep 7 00:49:05 2010
-From: Alek Du <alek.du@intel.com>
-Date: Mon, 06 Sep 2010 14:50:57 +0100
-Subject: USB: EHCI: Disable langwell/penwell LPM capability
-To: linux-usb@vger.kernel.org
-Message-ID: <20100906135040.4591.72919.stgit@localhost.localdomain>
-
-
-From: Alek Du <alek.du@intel.com>
-
-We have to do so due to HW limitation.
-
-Signed-off-by: Alek Du <alek.du@intel.com>
-Signed-off-by: Alan Cox <alan@linux.intel.com>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- drivers/usb/host/ehci-pci.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
---- a/drivers/usb/host/ehci-pci.c
-+++ b/drivers/usb/host/ehci-pci.c
-@@ -119,6 +119,11 @@ static int ehci_pci_setup(struct usb_hcd
- ehci->broken_periodic = 1;
- ehci_info(ehci, "using broken periodic workaround\n");
- }
-+ if (pdev->device == 0x0806 || pdev->device == 0x0811
-+ || pdev->device == 0x0829) {
-+ ehci_info(ehci, "disable lpm for langwell/penwell\n");
-+ ehci->has_lpm = 0;
-+ }
- break;
- case PCI_VENDOR_ID_TDI:
- if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) {
diff --git a/usb.current/usb-musb-maintainers-fix-my-mail-address.patch b/usb.current/usb-musb-maintainers-fix-my-mail-address.patch
deleted file mode 100644
index 342d153ccb263d..00000000000000
--- a/usb.current/usb-musb-maintainers-fix-my-mail-address.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From linux-usb-owner@vger.kernel.org Thu Sep 16 12:12:37 2010
-From: Felipe Balbi <balbi@ti.com>
-To: Greg KH <greg@kroah.com>
-Cc: Felipe Balbi <balbi@ti.com>
-Subject: USB: musb: MAINTAINERS: Fix my mail address
-Date: Thu, 9 Sep 2010 09:04:25 +0300
-Message-Id: <1284012265-20479-1-git-send-email-balbi@ti.com>
-
-If we don't, contributors to musb and any USB OMAP
-code will be sending mails to an unexistent inbox.
-
-Signed-off-by: Felipe Balbi <balbi@ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- MAINTAINERS | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/MAINTAINERS
-+++ b/MAINTAINERS
-@@ -3942,7 +3942,7 @@ F: drivers/char/isicom.c
- F: include/linux/isicom.h
-
- MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER
--M: Felipe Balbi <felipe.balbi@nokia.com>
-+M: Felipe Balbi <balbi@ti.com>
- L: linux-usb@vger.kernel.org
- T: git git://gitorious.org/usb/usb.git
- S: Maintained
-@@ -4240,7 +4240,7 @@ S: Maintained
- F: drivers/char/hw_random/omap-rng.c
-
- OMAP USB SUPPORT
--M: Felipe Balbi <felipe.balbi@nokia.com>
-+M: Felipe Balbi <balbi@ti.com>
- M: David Brownell <dbrownell@users.sourceforge.net>
- L: linux-usb@vger.kernel.org
- L: linux-omap@vger.kernel.org
diff --git a/usb.current/usb-musb_debugfs-don-t-use-the-struct-file-private_data-field-with-seq_files.patch b/usb.current/usb-musb_debugfs-don-t-use-the-struct-file-private_data-field-with-seq_files.patch
deleted file mode 100644
index 6864da9be83596..00000000000000
--- a/usb.current/usb-musb_debugfs-don-t-use-the-struct-file-private_data-field-with-seq_files.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From mathias.nyman@nokia.com Tue Sep 7 00:45:41 2010
-From: Mathias Nyman <mathias.nyman@nokia.com>
-Date: Mon, 6 Sep 2010 13:52:01 +0300
-Subject: usb: musb_debugfs: don't use the struct file private_data field with seq_files
-To: linux-usb@vger.kernel.org
-Cc: Mathias Nyman <mathias.nyman@nokia.com>
-Message-ID: <1283770321-16903-1-git-send-email-mathias.nyman@nokia.com>
-
-
-seq_files use the private_data field of a file struct for storing a seq_file structure,
-data should be stored in seq_file's own private field (e.g. file->private_data->private)
-Otherwise seq_release() will free the private data when the file is closed.
-
-Signed-off-by: Mathias Nyman <mathias.nyman@nokia.com>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/musb/musb_debugfs.c | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
---- a/drivers/usb/musb/musb_debugfs.c
-+++ b/drivers/usb/musb/musb_debugfs.c
-@@ -195,15 +195,14 @@ static const struct file_operations musb
-
- static int musb_test_mode_open(struct inode *inode, struct file *file)
- {
-- file->private_data = inode->i_private;
--
- return single_open(file, musb_test_mode_show, inode->i_private);
- }
-
- static ssize_t musb_test_mode_write(struct file *file,
- const char __user *ubuf, size_t count, loff_t *ppos)
- {
-- struct musb *musb = file->private_data;
-+ struct seq_file *s = file->private_data;
-+ struct musb *musb = s->private;
- u8 test = 0;
- char buf[18];
-
diff --git a/usb.current/usb-otg-twl4030-fix-phy-initialization-v1.patch b/usb.current/usb-otg-twl4030-fix-phy-initialization-v1.patch
deleted file mode 100644
index 2dc026f5ebdbe2..00000000000000
--- a/usb.current/usb-otg-twl4030-fix-phy-initialization-v1.patch
+++ /dev/null
@@ -1,287 +0,0 @@
-From tom.leiming@gmail.com Tue Sep 7 00:49:51 2010
-From: tom.leiming@gmail.com
-Date: Mon, 6 Sep 2010 23:27:09 +0800
-Subject: USB: otg: twl4030: fix phy initialization(v1)
-To: greg@kroah.com
-Cc: linux-usb@vger.kernel.org, linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org, Ming Lei <tom.leiming@gmail.com>, David Brownell <dbrownell@users.sourceforge.net>, Felipe Balbi <me@felipebalbi.com>, Anand Gadiyar <gadiyar@ti.com>, Mike Frysinger <vapier@gentoo.org>, Sergei Shtylyov <sshtylyov@ru.mvista.com>
-Message-ID: <1283786829-3564-1-git-send-email-tom.leiming@gmail.com>
-
-
-From: Ming Lei <tom.leiming@gmail.com>
-
-Commit 461c317705eca5cac09a360f488715927fd0a927(into 2.6.36-v3)
-is put forward to power down phy if no usb cable is connected,
-but does introduce the two issues below:
-
-1), phy is not into work state if usb cable is connected
-with PC during poweron, so musb device mode is not usable
-in such case, follows the reasons:
- -twl4030_phy_resume is not called, so
- regulators are not enabled
- i2c access are not enabled
- usb mode not configurated
-
-2), The kernel warings[1] of regulators 'unbalanced disables'
-is caused if poweron without usb cable connected
-with PC or b-device.
-
-This patch fixes the two issues above:
- -power down phy only if no usb cable is connected with PC
-and b-device
- -do phy initialization(via __twl4030_phy_resume) if usb cable
-is connected with PC(vbus event) or another b-device(ID event) in
-twl4030_usb_probe.
-
-This patch also doesn't put VUSB3V1 LDO into active mode in
-twl4030_usb_ldo_init until VBUS/ID change detected, so we can
-save more power consumption than before.
-
-This patch is verified OK on Beagle board either connected with
-usb cable or not when poweron.
-
-[1]. warnings of 'unbalanced disables' of regulators.
-[root@OMAP3EVM /]# dmesg
-------------[ cut here ]------------
-WARNING: at drivers/regulator/core.c:1357 _regulator_disable+0x38/0x128()
-unbalanced disables for VUSB1V8
-Modules linked in:
-Backtrace:
-[<c0030c48>] (dump_backtrace+0x0/0x110) from [<c034f5a8>] (dump_stack+0x18/0x1c)
- r7:c78179d8 r6:c01ed6b8 r5:c0410822 r4:0000054d
-[<c034f590>] (dump_stack+0x0/0x1c) from [<c0057da8>] (warn_slowpath_common+0x54/0x6c)
-[<c0057d54>] (warn_slowpath_common+0x0/0x6c) from [<c0057e64>] (warn_slowpath_fmt+0x38/0x40)
- r9:00000000 r8:00000000 r7:c78e6608 r6:00000000 r5:fffffffb
- r4:c78e6c00
-[<c0057e2c>] (warn_slowpath_fmt+0x0/0x40) from [<c01ed6b8>] (_regulator_disable+0x38/0x128)
- r3:c0410e53 r2:c0410ad5
-[<c01ed680>] (_regulator_disable+0x0/0x128) from [<c01ed87c>] (regulator_disable+0x24/0x38)
- r7:c78e6608 r6:00000000 r5:c78e6c40 r4:c78e6c00
-[<c01ed858>] (regulator_disable+0x0/0x38) from [<c02382dc>] (twl4030_phy_power+0x15c/0x17c)
- r5:c78595c0 r4:00000000
-[<c0238180>] (twl4030_phy_power+0x0/0x17c) from [<c023831c>] (twl4030_phy_suspend+0x20/0x2c)
- r6:00000000 r5:c78595c0 r4:c78595c0
-[<c02382fc>] (twl4030_phy_suspend+0x0/0x2c) from [<c0238638>] (twl4030_usb_irq+0x11c/0x16c)
- r5:c78595c0 r4:00000040
-[<c023851c>] (twl4030_usb_irq+0x0/0x16c) from [<c034ec18>] (twl4030_usb_probe+0x2c4/0x32c)
- r6:00000000 r5:00000000 r4:c78595c0
-[<c034e954>] (twl4030_usb_probe+0x0/0x32c) from [<c02152a0>] (platform_drv_probe+0x20/0x24)
- r7:00000000 r6:c047d49c r5:c78e6608 r4:c047d49c
-[<c0215280>] (platform_drv_probe+0x0/0x24) from [<c0214244>] (driver_probe_device+0xd0/0x190)
-[<c0214174>] (driver_probe_device+0x0/0x190) from [<c02143d4>] (__device_attach+0x44/0x48)
- r7:00000000 r6:c78e6608 r5:c78e6608 r4:c047d49c
-[<c0214390>] (__device_attach+0x0/0x48) from [<c0213694>] (bus_for_each_drv+0x50/0x90)
- r5:c0214390 r4:00000000
-[<c0213644>] (bus_for_each_drv+0x0/0x90) from [<c0214474>] (device_attach+0x70/0x94)
- r6:c78e663c r5:c78e6608 r4:c78e6608
-[<c0214404>] (device_attach+0x0/0x94) from [<c02134fc>] (bus_probe_device+0x2c/0x48)
- r7:00000000 r6:00000002 r5:c78e6608 r4:c78e6600
-[<c02134d0>] (bus_probe_device+0x0/0x48) from [<c0211e48>] (device_add+0x340/0x4b4)
-[<c0211b08>] (device_add+0x0/0x4b4) from [<c021597c>] (platform_device_add+0x110/0x16c)
-[<c021586c>] (platform_device_add+0x0/0x16c) from [<c0220cb0>] (add_numbered_child+0xd8/0x118)
- r7:00000000 r6:c045f15c r5:c78e6600 r4:00000000
-[<c0220bd8>] (add_numbered_child+0x0/0x118) from [<c001c618>] (twl_probe+0x3a4/0x72c)
-[<c001c274>] (twl_probe+0x0/0x72c) from [<c02601ac>] (i2c_device_probe+0x7c/0xa4)
-[<c0260130>] (i2c_device_probe+0x0/0xa4) from [<c0214244>] (driver_probe_device+0xd0/0x190)
- r5:c7856e20 r4:c047c860
-[<c0214174>] (driver_probe_device+0x0/0x190) from [<c02143d4>] (__device_attach+0x44/0x48)
- r7:c7856e04 r6:c7856e20 r5:c7856e20 r4:c047c860
-[<c0214390>] (__device_attach+0x0/0x48) from [<c0213694>] (bus_for_each_drv+0x50/0x90)
- r5:c0214390 r4:00000000
-[<c0213644>] (bus_for_each_drv+0x0/0x90) from [<c0214474>] (device_attach+0x70/0x94)
- r6:c7856e54 r5:c7856e20 r4:c7856e20
-[<c0214404>] (device_attach+0x0/0x94) from [<c02134fc>] (bus_probe_device+0x2c/0x48)
- r7:c7856e04 r6:c78fd048 r5:c7856e20 r4:c7856e20
-[<c02134d0>] (bus_probe_device+0x0/0x48) from [<c0211e48>] (device_add+0x340/0x4b4)
-[<c0211b08>] (device_add+0x0/0x4b4) from [<c0211fd8>] (device_register+0x1c/0x20)
-[<c0211fbc>] (device_register+0x0/0x20) from [<c0260aa8>] (i2c_new_device+0xec/0x150)
- r5:c7856e00 r4:c7856e20
-[<c02609bc>] (i2c_new_device+0x0/0x150) from [<c0260dc0>] (i2c_register_adapter+0xa0/0x1c4)
- r7:00000000 r6:c78fd078 r5:c78fd048 r4:c781d5c0
-[<c0260d20>] (i2c_register_adapter+0x0/0x1c4) from [<c0260f80>] (i2c_add_numbered_adapter+0x9c/0xb4)
- r7:00000a28 r6:c04600a8 r5:c78fd048 r4:00000000
-[<c0260ee4>] (i2c_add_numbered_adapter+0x0/0xb4) from [<c034efa4>] (omap_i2c_probe+0x324/0x3e8)
- r5:00000000 r4:c78fd000
-[<c034ec80>] (omap_i2c_probe+0x0/0x3e8) from [<c02152a0>] (platform_drv_probe+0x20/0x24)
-[<c0215280>] (platform_drv_probe+0x0/0x24) from [<c0214244>] (driver_probe_device+0xd0/0x190)
-[<c0214174>] (driver_probe_device+0x0/0x190) from [<c021436c>] (__driver_attach+0x68/0x8c)
- r7:c78b2140 r6:c047e214 r5:c04600e4 r4:c04600b0
-[<c0214304>] (__driver_attach+0x0/0x8c) from [<c021399c>] (bus_for_each_dev+0x50/0x84)
- r7:c78b2140 r6:c047e214 r5:c0214304 r4:00000000
-[<c021394c>] (bus_for_each_dev+0x0/0x84) from [<c0214068>] (driver_attach+0x20/0x28)
- r6:c047e214 r5:c047e214 r4:c00270d0
-[<c0214048>] (driver_attach+0x0/0x28) from [<c0213274>] (bus_add_driver+0xa8/0x228)
-[<c02131cc>] (bus_add_driver+0x0/0x228) from [<c02146a4>] (driver_register+0xb0/0x13c)
-[<c02145f4>] (driver_register+0x0/0x13c) from [<c0215744>] (platform_driver_register+0x4c/0x60)
- r9:00000000 r8:c001f688 r7:00000013 r6:c005b6fc r5:c00083dc
-r4:c00270d0
-[<c02156f8>] (platform_driver_register+0x0/0x60) from [<c001f69c>] (omap_i2c_init_driver+0x14/0x1c)
-[<c001f688>] (omap_i2c_init_driver+0x0/0x1c) from [<c002c460>] (do_one_initcall+0xd0/0x1a4)
-[<c002c390>] (do_one_initcall+0x0/0x1a4) from [<c0008478>] (kernel_init+0x9c/0x154)
-[<c00083dc>] (kernel_init+0x0/0x154) from [<c005b6fc>] (do_exit+0x0/0x688)
- r5:c00083dc r4:00000000
----[ end trace 1b75b31a2719ed1d ]---
-
-Signed-off-by: Ming Lei <tom.leiming@gmail.com>
-Cc: David Brownell <dbrownell@users.sourceforge.net>
-Cc: Felipe Balbi <me@felipebalbi.com>
-Cc: Anand Gadiyar <gadiyar@ti.com>
-Cc: Mike Frysinger <vapier@gentoo.org>
-Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/otg/twl4030-usb.c | 78 +++++++++++++++++++++++++++---------------
- 1 file changed, 51 insertions(+), 27 deletions(-)
-
---- a/drivers/usb/otg/twl4030-usb.c
-+++ b/drivers/usb/otg/twl4030-usb.c
-@@ -347,11 +347,20 @@ static void twl4030_i2c_access(struct tw
- }
- }
-
--static void twl4030_phy_power(struct twl4030_usb *twl, int on)
-+static void __twl4030_phy_power(struct twl4030_usb *twl, int on)
- {
-- u8 pwr;
-+ u8 pwr = twl4030_usb_read(twl, PHY_PWR_CTRL);
-+
-+ if (on)
-+ pwr &= ~PHY_PWR_PHYPWD;
-+ else
-+ pwr |= PHY_PWR_PHYPWD;
-
-- pwr = twl4030_usb_read(twl, PHY_PWR_CTRL);
-+ WARN_ON(twl4030_usb_write_verify(twl, PHY_PWR_CTRL, pwr) < 0);
-+}
-+
-+static void twl4030_phy_power(struct twl4030_usb *twl, int on)
-+{
- if (on) {
- regulator_enable(twl->usb3v1);
- regulator_enable(twl->usb1v8);
-@@ -365,15 +374,13 @@ static void twl4030_phy_power(struct twl
- twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0,
- VUSB_DEDICATED2);
- regulator_enable(twl->usb1v5);
-- pwr &= ~PHY_PWR_PHYPWD;
-- WARN_ON(twl4030_usb_write_verify(twl, PHY_PWR_CTRL, pwr) < 0);
-+ __twl4030_phy_power(twl, 1);
- twl4030_usb_write(twl, PHY_CLK_CTRL,
- twl4030_usb_read(twl, PHY_CLK_CTRL) |
- (PHY_CLK_CTRL_CLOCKGATING_EN |
- PHY_CLK_CTRL_CLK32K_EN));
-- } else {
-- pwr |= PHY_PWR_PHYPWD;
-- WARN_ON(twl4030_usb_write_verify(twl, PHY_PWR_CTRL, pwr) < 0);
-+ } else {
-+ __twl4030_phy_power(twl, 0);
- regulator_disable(twl->usb1v5);
- regulator_disable(twl->usb1v8);
- regulator_disable(twl->usb3v1);
-@@ -387,19 +394,25 @@ static void twl4030_phy_suspend(struct t
-
- twl4030_phy_power(twl, 0);
- twl->asleep = 1;
-+ dev_dbg(twl->dev, "%s\n", __func__);
- }
-
--static void twl4030_phy_resume(struct twl4030_usb *twl)
-+static void __twl4030_phy_resume(struct twl4030_usb *twl)
- {
-- if (!twl->asleep)
-- return;
--
- twl4030_phy_power(twl, 1);
- twl4030_i2c_access(twl, 1);
- twl4030_usb_set_mode(twl, twl->usb_mode);
- if (twl->usb_mode == T2_USB_MODE_ULPI)
- twl4030_i2c_access(twl, 0);
-+}
-+
-+static void twl4030_phy_resume(struct twl4030_usb *twl)
-+{
-+ if (!twl->asleep)
-+ return;
-+ __twl4030_phy_resume(twl);
- twl->asleep = 0;
-+ dev_dbg(twl->dev, "%s\n", __func__);
- }
-
- static int twl4030_usb_ldo_init(struct twl4030_usb *twl)
-@@ -408,8 +421,8 @@ static int twl4030_usb_ldo_init(struct t
- twl_i2c_write_u8(TWL4030_MODULE_PM_MASTER, 0xC0, PROTECT_KEY);
- twl_i2c_write_u8(TWL4030_MODULE_PM_MASTER, 0x0C, PROTECT_KEY);
-
-- /* put VUSB3V1 LDO in active state */
-- twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0, VUSB_DEDICATED2);
-+ /* Keep VUSB3V1 LDO in sleep state until VBUS/ID change detected*/
-+ /*twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0, VUSB_DEDICATED2);*/
-
- /* input to VUSB3V1 LDO is from VBAT, not VBUS */
- twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x14, VUSB_DEDICATED1);
-@@ -502,6 +515,26 @@ static irqreturn_t twl4030_usb_irq(int i
- return IRQ_HANDLED;
- }
-
-+static void twl4030_usb_phy_init(struct twl4030_usb *twl)
-+{
-+ int status;
-+
-+ status = twl4030_usb_linkstat(twl);
-+ if (status >= 0) {
-+ if (status == USB_EVENT_NONE) {
-+ __twl4030_phy_power(twl, 0);
-+ twl->asleep = 1;
-+ } else {
-+ __twl4030_phy_resume(twl);
-+ twl->asleep = 0;
-+ }
-+
-+ blocking_notifier_call_chain(&twl->otg.notifier, status,
-+ twl->otg.gadget);
-+ }
-+ sysfs_notify(&twl->dev->kobj, NULL, "vbus");
-+}
-+
- static int twl4030_set_suspend(struct otg_transceiver *x, int suspend)
- {
- struct twl4030_usb *twl = xceiv_to_twl(x);
-@@ -550,7 +583,6 @@ static int __devinit twl4030_usb_probe(s
- struct twl4030_usb_data *pdata = pdev->dev.platform_data;
- struct twl4030_usb *twl;
- int status, err;
-- u8 pwr;
-
- if (!pdata) {
- dev_dbg(&pdev->dev, "platform_data not available\n");
-@@ -569,10 +601,7 @@ static int __devinit twl4030_usb_probe(s
- twl->otg.set_peripheral = twl4030_set_peripheral;
- twl->otg.set_suspend = twl4030_set_suspend;
- twl->usb_mode = pdata->usb_mode;
--
-- pwr = twl4030_usb_read(twl, PHY_PWR_CTRL);
--
-- twl->asleep = (pwr & PHY_PWR_PHYPWD);
-+ twl->asleep = 1;
-
- /* init spinlock for workqueue */
- spin_lock_init(&twl->lock);
-@@ -610,15 +639,10 @@ static int __devinit twl4030_usb_probe(s
- return status;
- }
-
-- /* The IRQ handler just handles changes from the previous states
-- * of the ID and VBUS pins ... in probe() we must initialize that
-- * previous state. The easy way: fake an IRQ.
-- *
-- * REVISIT: a real IRQ might have happened already, if PREEMPT is
-- * enabled. Else the IRQ may not yet be configured or enabled,
-- * because of scheduling delays.
-+ /* Power down phy or make it work according to
-+ * current link state.
- */
-- twl4030_usb_irq(twl->irq, twl);
-+ twl4030_usb_phy_init(twl);
-
- dev_info(&pdev->dev, "Initialized TWL4030 USB module\n");
- return 0;
diff --git a/usb.current/usb-serial-mos-prevent-reading-uninitialized.patch b/usb.current/usb-serial-mos-prevent-reading-uninitialized.patch
deleted file mode 100644
index 0663c6f911ed26..00000000000000
--- a/usb.current/usb-serial-mos-prevent-reading-uninitialized.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From linux-usb-owner@vger.kernel.org Wed Sep 15 15:20:45 2010
-Subject: USB: serial/mos*: prevent reading uninitialized
- stack memory
-From: Dan Rosenberg <drosenberg@vsecurity.com>
-To: linux-usb@vger.kernel.org
-Cc: linux-kernel@vger.kernel.org, <security@kernel.org>,
- stable@kernel.org
-Date: Wed, 15 Sep 2010 17:44:16 -0400
-Message-ID: <1284587056.6275.100.camel@dan>
-
-The TIOCGICOUNT device ioctl in both mos7720.c and mos7840.c allows
-unprivileged users to read uninitialized stack memory, because the
-"reserved" member of the serial_icounter_struct struct declared on the
-stack is not altered or zeroed before being copied back to the user.
-This patch takes care of it.
-
-Signed-off-by: Dan Rosenberg <dan.j.rosenberg@gmail.com>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/mos7720.c | 3 +++
- drivers/usb/serial/mos7840.c | 3 +++
- 2 files changed, 6 insertions(+)
-
---- a/drivers/usb/serial/mos7720.c
-+++ b/drivers/usb/serial/mos7720.c
-@@ -2024,6 +2024,9 @@ static int mos7720_ioctl(struct tty_stru
-
- case TIOCGICOUNT:
- cnow = mos7720_port->icount;
-+
-+ memset(&icount, 0, sizeof(struct serial_icounter_struct));
-+
- icount.cts = cnow.cts;
- icount.dsr = cnow.dsr;
- icount.rng = cnow.rng;
---- a/drivers/usb/serial/mos7840.c
-+++ b/drivers/usb/serial/mos7840.c
-@@ -2285,6 +2285,9 @@ static int mos7840_ioctl(struct tty_stru
- case TIOCGICOUNT:
- cnow = mos7840_port->icount;
- smp_rmb();
-+
-+ memset(&icount, 0, sizeof(struct serial_icounter_struct));
-+
- icount.cts = cnow.cts;
- icount.dsr = cnow.dsr;
- icount.rng = cnow.rng;
diff --git a/version b/version
index a089193975a522..b5a38511083c8d 100644
--- a/version
+++ b/version
@@ -1 +1 @@
-2.6.36-rc4
+2.6.36-rc5