diff options
author | Laura Abbott <labbott@fedoraproject.org> | 2016-08-11 14:49:16 -0700 |
---|---|---|
committer | Laura Abbott <labbott@fedoraproject.org> | 2016-08-11 14:50:22 -0700 |
commit | 744edb7493aba8b8d79d95c92aeb674dbbd49524 (patch) | |
tree | 2be4a8e7e086097a7b24e435849305dda71e17e0 | |
parent | 018c63534e19d5eda2c644403a1479c824a5903a (diff) | |
download | kernel-744edb7493aba8b8d79d95c92aeb674dbbd49524.tar.gz kernel-744edb7493aba8b8d79d95c92aeb674dbbd49524.tar.xz kernel-744edb7493aba8b8d79d95c92aeb674dbbd49524.zip |
Fix for crash seen with open stack (rhbz 1361414)
-rw-r--r-- | kernel.spec | 6 | ||||
-rw-r--r-- | openstack_fix.patch | 53 |
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 + |