rpms/kernel/F-8 linux-2.6-pcmcia-fix-broken-abuse-of-dev-driver_data.patch, NONE, 1.1 kernel.spec, 1.539, 1.540
Chuck Ebbert
cebbert at fedoraproject.org
Tue Sep 23 00:59:03 UTC 2008
- Previous message (by thread): rpms/kernel/F-9 linux-2.6-pcmcia-fix-broken-abuse-of-dev-driver_data.patch, NONE, 1.1 kernel.spec, 1.772, 1.773
- Next message (by thread): rpms/librsvg2/devel .cvsignore, 1.35, 1.36 librsvg2.spec, 1.71, 1.72 sources, 1.36, 1.37
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: cebbert
Update of /cvs/pkgs/rpms/kernel/F-8
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv13261
Modified Files:
kernel.spec
Added Files:
linux-2.6-pcmcia-fix-broken-abuse-of-dev-driver_data.patch
Log Message:
pcmcia: Fix broken abuse of dev->driver_data (F9#462178)
linux-2.6-pcmcia-fix-broken-abuse-of-dev-driver_data.patch:
--- NEW FILE linux-2.6-pcmcia-fix-broken-abuse-of-dev-driver_data.patch ---
From: Alan Cox <alan at redhat.com>
Date: Mon, 22 Sep 2008 14:58:14 +0000 (+0100)
Subject: pcmcia: Fix broken abuse of dev->driver_data
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=cec5eb7be3a104fffd27ca967ee8e15a123050e2
pcmcia: Fix broken abuse of dev->driver_data
PCMCIA abuses dev->private_data in the probe methods. Unfortunately it
continues to abuse it after calling drv->probe() which leads to crashes and
other nasties (such as bogus probes of multifunction devices) giving errors like
pcmcia: registering new device pcmcia0.1
kernel: 0.1: GetNextTuple: No more items
Extract the passed data before calling the driver probe function that way
we don't blow up when the driver reuses dev->private_data as its right.
As its close to the final release just move the hack so it works out,
hopefully someone will be sufficiently embarrassed to produce a nice rework
for 2.6.28.
Signed-off-by: Alan Cox <alan at redhat.com>
Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
---
BZ 462178
diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c
index 4174d96..34c83d3 100644
--- a/drivers/pcmcia/ds.c
+++ b/drivers/pcmcia/ds.c
@@ -427,6 +427,18 @@ static int pcmcia_device_probe(struct device * dev)
p_drv = to_pcmcia_drv(dev->driver);
s = p_dev->socket;
+ /* The PCMCIA code passes the match data in via dev->driver_data
+ * which is an ugly hack. Once the driver probe is called it may
+ * and often will overwrite the match data so we must save it first
+ *
+ * handle pseudo multifunction devices:
+ * there are at most two pseudo multifunction devices.
+ * if we're matching against the first, schedule a
+ * call which will then check whether there are two
+ * pseudo devices, and if not, add the second one.
+ */
+ did = p_dev->dev.driver_data;
+
ds_dbg(1, "trying to bind %s to %s\n", p_dev->dev.bus_id,
p_drv->drv.name);
@@ -455,21 +467,14 @@ static int pcmcia_device_probe(struct device * dev)
goto put_module;
}
- /* handle pseudo multifunction devices:
- * there are at most two pseudo multifunction devices.
- * if we're matching against the first, schedule a
- * call which will then check whether there are two
- * pseudo devices, and if not, add the second one.
- */
- did = p_dev->dev.driver_data;
if (did && (did->match_flags & PCMCIA_DEV_ID_MATCH_DEVICE_NO) &&
(p_dev->socket->device_count == 1) && (p_dev->device_no == 0))
pcmcia_add_device_later(p_dev->socket, 0);
- put_module:
+put_module:
if (ret)
module_put(p_drv->owner);
- put_dev:
+put_dev:
if (ret)
put_device(dev);
return (ret);
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/kernel.spec,v
retrieving revision 1.539
retrieving revision 1.540
diff -u -r1.539 -r1.540
--- kernel.spec 23 Sep 2008 00:39:39 -0000 1.539
+++ kernel.spec 23 Sep 2008 00:58:33 -0000 1.540
@@ -701,6 +701,8 @@
Patch1910: linux-2.6-firewire-git-update.patch
#Patch1911: linux-2.6-firewire-git-pending.patch
+Patch2703: linux-2.6-pcmcia-fix-broken-abuse-of-dev-driver_data.patch
+
%endif
BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root-%{_target_cpu}
@@ -1278,9 +1280,8 @@
ApplyPatch linux-2.6-firewire-git-update.patch
#ApplyPatch linux-2.6-firewire-git-pending.patch
-# ---------- below all scheduled for 2.6.25 -----------------
-
-# SELinux perf patches
+# fix subtle but annoying PCMCIA bug
+ApplyPatch linux-2.6-pcmcia-fix-broken-abuse-of-dev-driver_data.patch
# END OF PATCH APPLICATIONS
@@ -1876,6 +1877,9 @@
%changelog
+* Mon Sep 22 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.26.5-30
+- pcmcia: Fix broken abuse of dev->driver_data (F9#462178)
+
* Mon Sep 22 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.26.5-29
- Copy forgotten libata patch from F9.
- Previous message (by thread): rpms/kernel/F-9 linux-2.6-pcmcia-fix-broken-abuse-of-dev-driver_data.patch, NONE, 1.1 kernel.spec, 1.772, 1.773
- Next message (by thread): rpms/librsvg2/devel .cvsignore, 1.35, 1.36 librsvg2.spec, 1.71, 1.72 sources, 1.36, 1.37
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list