Update to 2.6.36-rc6
svn path=/dists/trunk/linux-2.6/; revision=16367
This commit is contained in:
parent
769bfb21c3
commit
1c573ade5f
|
@ -1,10 +1,13 @@
|
|||
linux-2.6 (2.6.36~rc5-1~experimental.2) UNRELEASED; urgency=low
|
||||
linux-2.6 (2.6.36~rc6-1~experimental.1) UNRELEASED; urgency=low
|
||||
|
||||
* New upstream release candidate
|
||||
- drm/i915: Ensure that the crtcinfo is populated during mode_fixup()
|
||||
(Closes: #592415)
|
||||
- USB: fix bug in initialization of interface minor numbers
|
||||
(Closes: #598207)
|
||||
|
||||
[ Ben Hutchings ]
|
||||
* linux-base: Remove dependency on libapt-pkg-perl (Closes: #589996, really)
|
||||
* drm/i915: Ensure that the crtcinfo is populated during mode_fixup()
|
||||
(Closes: #592415)
|
||||
* USB: fix bug in initialization of interface minor numbers (Closes: #598207)
|
||||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Sun, 26 Sep 2010 15:34:10 +0100
|
||||
|
||||
|
|
|
@ -1,122 +0,0 @@
|
|||
From: Alan Stern <stern@rowland.harvard.edu>
|
||||
Date: Tue, 21 Sep 2010 15:01:53 -0400
|
||||
Subject: [PATCH] USB: fix bug in initialization of interface minor numbers
|
||||
|
||||
commit 0026e00523a85b90a92a93ddf6660939ecef3e54 upstream.
|
||||
|
||||
Recent changes in the usbhid layer exposed a bug in usbcore. If
|
||||
CONFIG_USB_DYNAMIC_MINORS is enabled then an interface may be assigned
|
||||
a minor number of 0. However interfaces that aren't registered as USB
|
||||
class devices also have their minor number set to 0, during
|
||||
initialization. As a result usb_find_interface() may return the
|
||||
wrong interface, leading to a crash.
|
||||
|
||||
This patch (as1418) fixes the problem by initializing every
|
||||
interface's minor number to -1. It also cleans up the
|
||||
usb_register_dev() function, which besides being somewhat awkwardly
|
||||
written, does not unwind completely on all its error paths.
|
||||
|
||||
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
|
||||
Tested-by: Philip J. Turmel <philip@turmel.org>
|
||||
Tested-by: Gabriel Craciunescu <nix.or.die@googlemail.com>
|
||||
Tested-by: Alex Riesen <raa.lkml@gmail.com>
|
||||
Tested-by: Matthias Bayer <jackdachef@gmail.com>
|
||||
CC: Jiri Kosina <jkosina@suse.cz>
|
||||
Cc: stable <stable@kernel.org>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/usb/core/file.c | 35 ++++++++++++++++-------------------
|
||||
drivers/usb/core/message.c | 1 +
|
||||
2 files changed, 17 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/drivers/usb/core/file.c b/drivers/usb/core/file.c
|
||||
index f06f5db..1e6ccef 100644
|
||||
--- a/drivers/usb/core/file.c
|
||||
+++ b/drivers/usb/core/file.c
|
||||
@@ -159,9 +159,9 @@ void usb_major_cleanup(void)
|
||||
int usb_register_dev(struct usb_interface *intf,
|
||||
struct usb_class_driver *class_driver)
|
||||
{
|
||||
- int retval = -EINVAL;
|
||||
+ int retval;
|
||||
int minor_base = class_driver->minor_base;
|
||||
- int minor = 0;
|
||||
+ int minor;
|
||||
char name[20];
|
||||
char *temp;
|
||||
|
||||
@@ -173,12 +173,17 @@ int usb_register_dev(struct usb_interface *intf,
|
||||
*/
|
||||
minor_base = 0;
|
||||
#endif
|
||||
- intf->minor = -1;
|
||||
-
|
||||
- dbg ("looking for a minor, starting at %d", minor_base);
|
||||
|
||||
if (class_driver->fops == NULL)
|
||||
- goto exit;
|
||||
+ return -EINVAL;
|
||||
+ if (intf->minor >= 0)
|
||||
+ return -EADDRINUSE;
|
||||
+
|
||||
+ retval = init_usb_class();
|
||||
+ if (retval)
|
||||
+ return retval;
|
||||
+
|
||||
+ dev_dbg(&intf->dev, "looking for a minor, starting at %d", minor_base);
|
||||
|
||||
down_write(&minor_rwsem);
|
||||
for (minor = minor_base; minor < MAX_USB_MINORS; ++minor) {
|
||||
@@ -186,20 +191,12 @@ int usb_register_dev(struct usb_interface *intf,
|
||||
continue;
|
||||
|
||||
usb_minors[minor] = class_driver->fops;
|
||||
-
|
||||
- retval = 0;
|
||||
+ intf->minor = minor;
|
||||
break;
|
||||
}
|
||||
up_write(&minor_rwsem);
|
||||
-
|
||||
- if (retval)
|
||||
- goto exit;
|
||||
-
|
||||
- retval = init_usb_class();
|
||||
- if (retval)
|
||||
- goto exit;
|
||||
-
|
||||
- intf->minor = minor;
|
||||
+ if (intf->minor < 0)
|
||||
+ return -EXFULL;
|
||||
|
||||
/* create a usb class device for this usb interface */
|
||||
snprintf(name, sizeof(name), class_driver->name, minor - minor_base);
|
||||
@@ -213,11 +210,11 @@ int usb_register_dev(struct usb_interface *intf,
|
||||
"%s", temp);
|
||||
if (IS_ERR(intf->usb_dev)) {
|
||||
down_write(&minor_rwsem);
|
||||
- usb_minors[intf->minor] = NULL;
|
||||
+ usb_minors[minor] = NULL;
|
||||
+ intf->minor = -1;
|
||||
up_write(&minor_rwsem);
|
||||
retval = PTR_ERR(intf->usb_dev);
|
||||
}
|
||||
-exit:
|
||||
return retval;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(usb_register_dev);
|
||||
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
|
||||
index 844683e..9f0ce7d 100644
|
||||
--- a/drivers/usb/core/message.c
|
||||
+++ b/drivers/usb/core/message.c
|
||||
@@ -1802,6 +1802,7 @@ free_interfaces:
|
||||
intf->dev.groups = usb_interface_groups;
|
||||
intf->dev.dma_mask = dev->dev.dma_mask;
|
||||
INIT_WORK(&intf->reset_ws, __usb_queue_reset_device);
|
||||
+ intf->minor = -1;
|
||||
device_initialize(&intf->dev);
|
||||
dev_set_name(&intf->dev, "%d-%s:%d.%d",
|
||||
dev->bus->busnum, dev->devpath,
|
||||
--
|
||||
1.7.1
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
From: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Date: Sun, 12 Sep 2010 18:25:19 +0100
|
||||
Subject: [PATCH] drm/i915: Ensure that the crtcinfo is populated during mode_fixup()
|
||||
|
||||
commit 532db7fe1fd75f20f3abf959419d160fb7850aff upstream.
|
||||
|
||||
This should fix the mysterious mode setting failures reported during
|
||||
boot up and after resume, generally for i8xx class machines.
|
||||
|
||||
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=16478
|
||||
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
---
|
||||
drivers/gpu/drm/i915/intel_display.c | 8 ++++++++
|
||||
1 files changed, 8 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
||||
index 161f6ea..1698c52 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -2477,11 +2477,19 @@ static bool intel_crtc_mode_fixup(struct drm_crtc *crtc,
|
||||
struct drm_display_mode *adjusted_mode)
|
||||
{
|
||||
struct drm_device *dev = crtc->dev;
|
||||
+
|
||||
if (HAS_PCH_SPLIT(dev)) {
|
||||
/* FDI link clock is fixed at 2.7G */
|
||||
if (mode->clock * 3 > IRONLAKE_FDI_FREQ * 4)
|
||||
return false;
|
||||
}
|
||||
+
|
||||
+ /* XXX some encoders set the crtcinfo, others don't.
|
||||
+ * Obviously we need some form of conflict resolution here...
|
||||
+ */
|
||||
+ if (adjusted_mode->crtc_htotal == 0)
|
||||
+ drm_mode_set_crtcinfo(adjusted_mode, 0);
|
||||
+
|
||||
return true;
|
||||
}
|
||||
|
||||
--
|
||||
1.7.3
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
+ bugfix/x86/drm-i915-Ensure-that-the-crtcinfo-is-populated-during-mode_fixup.patch
|
||||
+ bugfix/all/USB-fix-bug-in-initialization-of-interface-minor-num.patch
|
Loading…
Reference in New Issue