summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaura Abbott <labbott@fedoraproject.org>2016-08-11 14:49:16 -0700
committerLaura Abbott <labbott@fedoraproject.org>2016-08-11 14:50:22 -0700
commit744edb7493aba8b8d79d95c92aeb674dbbd49524 (patch)
tree2be4a8e7e086097a7b24e435849305dda71e17e0
parent018c63534e19d5eda2c644403a1479c824a5903a (diff)
downloadkernel-744edb7493aba8b8d79d95c92aeb674dbbd49524.tar.gz
kernel-744edb7493aba8b8d79d95c92aeb674dbbd49524.tar.xz
kernel-744edb7493aba8b8d79d95c92aeb674dbbd49524.zip
Fix for crash seen with open stack (rhbz 1361414)
-rw-r--r--kernel.spec6
-rw-r--r--openstack_fix.patch53
2 files changed, 59 insertions, 0 deletions
diff --git a/kernel.spec b/kernel.spec
index 027d9b6a7..6587971f5 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -605,6 +605,9 @@ Patch839: drm-i915-Acquire-audio-powerwell-for-HD-Audio-regist.patch
#rhbz 1365686
Patch840: 0001-mm-rmap-fix-false-positive-VM_BUG-in-page_add_file_r.patch
+#rhbz 1361414
+Patch841: openstack_fix.patch
+
# END OF PATCH DEFINITIONS
%endif
@@ -2139,6 +2142,9 @@ fi
#
#
%changelog
+* Thu Aug 11 2016 Laura Abbott <labbott@fedoraproject.org>
+- Fix for crash seen with open stack (rhbz 1361414)
+
* Thu Aug 11 2016 Peter Robinson <pbrobinson@fedoraproject.org>
- Minor ARM config updates
- Disable long running watchdog in VM patch (in theory fixed)
diff --git a/openstack_fix.patch b/openstack_fix.patch
new file mode 100644
index 000000000..a967c350e
--- /dev/null
+++ b/openstack_fix.patch
@@ -0,0 +1,53 @@
+From 5ef9f289c4e698054e5687edb54f0da3cdc9173a Mon Sep 17 00:00:00 2001
+From: Ian Wienand <iwienand@redhat.com>
+Date: Wed, 3 Aug 2016 15:44:57 +1000
+Subject: OVS: Ignore negative headroom value
+
+net_device->ndo_set_rx_headroom (introduced in
+871b642adebe300be2e50aa5f65a418510f636ec) says
+
+ "Setting a negtaive value reset the rx headroom
+ to the default value".
+
+It seems that the OVS implementation in
+3a927bc7cf9d0fbe8f4a8189dd5f8440228f64e7 overlooked this and sets
+dev->needed_headroom unconditionally.
+
+This doesn't have an immediate effect, but can mess up later
+LL_RESERVED_SPACE calculations, such as done in
+net/ipv6/mcast.c:mld_newpack. For reference, this issue was found
+from a skb_panic raised there after the length calculations had given
+the wrong result.
+
+Note the other current users of this interface
+(drivers/net/tun.c:tun_set_headroom and
+drivers/net/veth.c:veth_set_rx_headroom) are both checking this
+correctly thus need no modification.
+
+Thanks to Ben for some pointers from the crash dumps!
+
+Cc: Benjamin Poirier <bpoirier@suse.com>
+Cc: Paolo Abeni <pabeni@redhat.com>
+Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1361414
+Signed-off-by: Ian Wienand <iwienand@redhat.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ net/openvswitch/vport-internal_dev.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/net/openvswitch/vport-internal_dev.c b/net/openvswitch/vport-internal_dev.c
+index 434e04c..95c3614 100644
+--- a/net/openvswitch/vport-internal_dev.c
++++ b/net/openvswitch/vport-internal_dev.c
+@@ -140,7 +140,7 @@ internal_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats)
+
+ static void internal_set_rx_headroom(struct net_device *dev, int new_hr)
+ {
+- dev->needed_headroom = new_hr;
++ dev->needed_headroom = new_hr < 0 ? 0 : new_hr;
+ }
+
+ static const struct net_device_ops internal_dev_netdev_ops = {
+--
+cgit v0.12
+