summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Young <m.a.young@durham.ac.uk>2010-12-04 17:23:38 +0000
committerMichael Young <m.a.young@durham.ac.uk>2010-12-04 17:23:38 +0000
commit993c86d8e951ca7dc4d7c6bd96c772d5c480745b (patch)
tree182e772f0bc6c56185b0e6501a5e8c1a296a24b4
parent92830e5e3c70ef01547bfa61b583965a4a12b192 (diff)
downloaddom0-kernel-993c86d8e951ca7dc4d7c6bd96c772d5c480745b.tar.gz
dom0-kernel-993c86d8e951ca7dc4d7c6bd96c772d5c480745b.tar.xz
dom0-kernel-993c86d8e951ca7dc4d7c6bd96c772d5c480745b.zip
add patch "fix ethtool_get_drvinfo NULL pointer dereference"
-rw-r--r--kernel.spec4
-rw-r--r--xen.pvops.post.patch48
2 files changed, 52 insertions, 0 deletions
diff --git a/kernel.spec b/kernel.spec
index ce2266c..e69a6cc 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -2227,6 +2227,10 @@ fi
%kernel_variant_files -k vmlinux %{with_kdump} kdump
%changelog
+* Sat Dec 04 2010 Michael Young <m.a.young@durham.ac.uk>
+- add patch "fix ethtool_get_drvinfo NULL pointer dereference"
+ to xen.pvops.post.patch (post F12 EOL)
+
* Wed Dec 01 2010 Michael Young <m.a.young@durham.ac.uk>
- update pvops to get a crash-on-shutdown fix
diff --git a/xen.pvops.post.patch b/xen.pvops.post.patch
index 495a81a..4108b5a 100644
--- a/xen.pvops.post.patch
+++ b/xen.pvops.post.patch
@@ -66,3 +66,51 @@ index 2202b62..f371fe8 100644
} mm_context_t;
#ifdef CONFIG_SMP
+Date: Fri, 03 Dec 2010 21:48:34 +0100
+From: Paolo Bonzini <pbonzini@redhat.com>
+Subject: [PATCH xen/stable-2.6.32.x] fix ethtool_get_drvinfo NULL pointer dereference
+
+Fixes the following crash on "ethtool -i":
+
+BUG: unable to handle kernel NULL pointer dereference at 0000000000000148
+IP: [<ffffffff813bcfe2>] ethtool_get_drvinfo+0x106/0x1a5
+PGD d8040067 PUD d8041067 PMD 0
+Oops: 0000 [#1] SMP
+last sysfs file: /sys/devices/pci0000:00/0000:00:1c.0/0000:09:00.0/irq
+...
+Call Trace:
+[<ffffffff813bd298>] dev_ethtool+0x93/0x1153
+[<ffffffff810dd957>] ? __alloc_pages_nodemask+0x122/0x62d
+[<ffffffff810dd957>] ? __alloc_pages_nodemask+0x122/0x62d
+[<ffffffff811ee21e>] ? avc_has_perm+0x5c/0x6e
+[<ffffffff811158ad>] ? try_get_mem_cgroup_from_mm+0x39/0x49
+...
+RIP [<ffffffff813bcfe2>] ethtool_get_drvinfo+0x106/0x1a5
+
+The backport of 01414802 was incomplete. This is the patch we are
+using in RHEL6.
+
+Reported-by: M A Young <m.a.young@durham.ac.uk>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Cc: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
+---
+ ethtool.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/net/core/ethtool.c b/net/core/ethtool.c
+index ff35ce3..8ca3a26 100644
+--- a/net/core/ethtool.c
++++ b/net/core/ethtool.c
+@@ -211,9 +211,9 @@ static int ethtool_get_drvinfo(struct net_device *dev, void __user *useraddr)
+ } else {
+ /* code path for obsolete hooks */
+
+- if (ops->self_test_count)
++ if (ops && ops->self_test_count)
+ info.testinfo_len = ops->self_test_count(dev);
+- if (ops->get_stats_count)
++ if (ops && ops->get_stats_count)
+ info.n_stats = ops->get_stats_count(dev);
+ }
+ if (ops && ops->get_regs_len)
+