From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754979AbcAHMU0 (ORCPT ); Fri, 8 Jan 2016 07:20:26 -0500 Received: from mx1.redhat.com ([209.132.183.28]:32877 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754740AbcAHMUX (ORCPT ); Fri, 8 Jan 2016 07:20:23 -0500 Date: Fri, 8 Jan 2016 10:20:17 -0200 From: Thadeu Lima de Souza Cascardo To: David Laight Cc: "'Konstantin Khlebnikov'" , "netdev@vger.kernel.org" , "David S. Miller" , "dev@openvswitch.org" , Eric Dumazet , Florian Westphal , "linux-kernel@vger.kernel.org" , Pravin Shelar , Cong Wang Subject: Re: [PATCH] net: preserve IP control block during GSO segmentation Message-ID: <20160108122016.GM27290@indiana.gru.redhat.com> References: <145225444176.22215.2003378381077166898.stgit@zurg> <063D6719AE5E284EB5DD2968C1650D6D1CCC01BA@AcuExch.aculab.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <063D6719AE5E284EB5DD2968C1650D6D1CCC01BA@AcuExch.aculab.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jan 08, 2016 at 12:13:49PM +0000, David Laight wrote: > From: Of Konstantin Khlebnikov > > Sent: 08 January 2016 12:01 > > Skb_gso_segment() uses skb control block during segmentation. > > This patch adds 32-bytes room for previous control block which > > will be copied into all resulting segments. > > > > This patch fixes kernel crash during fragmenting forwarded packets. > > Fragmentation requires valid IP CB in skb for clearing ip options. > > Also patch removes custom save/restore in ovs code, now it's redundant. > > > ... > > diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h > > index 4355129fff91..9147f9f34cbe 100644 > > --- a/include/linux/skbuff.h > > +++ b/include/linux/skbuff.h > > @@ -3446,7 +3446,8 @@ struct skb_gso_cb { > > int encap_level; > > __u16 csum_start; > > }; > > -#define SKB_GSO_CB(skb) ((struct skb_gso_cb *)(skb)->cb) > > +#define SKB_SGO_CB_OFFSET 32 > > +#define SKB_GSO_CB(skb) ((struct skb_gso_cb *)((skb)->cb + SKB_SGO_CB_OFFSET)) > > You could set SKB_SGO_CB_OFFSET to sizeof ((skb)->cb) - sizeof (struct skb_gso_cb) > so that the end of 'cb' is always used. > (Assuming the former is a multiple of 4.) > > It might be worth using an on-stack structure passed through as a separate > parameter - it doesn't look as though it has to be queued with the skb. > (Clearly a bigger change.) > I considered that as an option. But the bigger change and the use of the extra stack for all users, plus the extra parameters indicated I should go the other way. In my opinion, at least in the IP fragmentation case, saving/restoring cb is not such a big problem since we are in slow path already. Cascardo. > David > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thadeu Lima de Souza Cascardo Subject: Re: [PATCH] net: preserve IP control block during GSO segmentation Date: Fri, 8 Jan 2016 10:20:17 -0200 Message-ID: <20160108122016.GM27290@indiana.gru.redhat.com> References: <145225444176.22215.2003378381077166898.stgit@zurg> <063D6719AE5E284EB5DD2968C1650D6D1CCC01BA@AcuExch.aculab.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org" , "netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , Florian Westphal , "linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , Eric Dumazet , Cong Wang , "David S. Miller" , 'Konstantin Khlebnikov' To: David Laight Return-path: Content-Disposition: inline In-Reply-To: <063D6719AE5E284EB5DD2968C1650D6D1CCC01BA-VkEWCZq2GCInGFn1LkZF6NBPR1lH4CV8@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-yBygre7rU0TnMu66kgdUjQ@public.gmane.org Sender: "dev" List-Id: netdev.vger.kernel.org T24gRnJpLCBKYW4gMDgsIDIwMTYgYXQgMTI6MTM6NDlQTSArMDAwMCwgRGF2aWQgTGFpZ2h0IHdy b3RlOgo+IEZyb206IE9mIEtvbnN0YW50aW4gS2hsZWJuaWtvdgo+ID4gU2VudDogMDggSmFudWFy eSAyMDE2IDEyOjAxCj4gPiBTa2JfZ3NvX3NlZ21lbnQoKSB1c2VzIHNrYiBjb250cm9sIGJsb2Nr IGR1cmluZyBzZWdtZW50YXRpb24uCj4gPiBUaGlzIHBhdGNoIGFkZHMgMzItYnl0ZXMgcm9vbSBm b3IgcHJldmlvdXMgY29udHJvbCBibG9jayB3aGljaAo+ID4gd2lsbCBiZSBjb3BpZWQgaW50byBh bGwgcmVzdWx0aW5nIHNlZ21lbnRzLgo+ID4gCj4gPiBUaGlzIHBhdGNoIGZpeGVzIGtlcm5lbCBj cmFzaCBkdXJpbmcgZnJhZ21lbnRpbmcgZm9yd2FyZGVkIHBhY2tldHMuCj4gPiBGcmFnbWVudGF0 aW9uIHJlcXVpcmVzIHZhbGlkIElQIENCIGluIHNrYiBmb3IgY2xlYXJpbmcgaXAgb3B0aW9ucy4K PiA+IEFsc28gcGF0Y2ggcmVtb3ZlcyBjdXN0b20gc2F2ZS9yZXN0b3JlIGluIG92cyBjb2RlLCBu b3cgaXQncyByZWR1bmRhbnQuCj4gPiAKPiAuLi4KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xp bnV4L3NrYnVmZi5oIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaAo+ID4gaW5kZXggNDM1NTEyOWZm ZjkxLi45MTQ3ZjlmMzRjYmUgMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5o Cj4gPiArKysgYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oCj4gPiBAQCAtMzQ0Niw3ICszNDQ2LDgg QEAgc3RydWN0IHNrYl9nc29fY2Igewo+ID4gIAlpbnQJZW5jYXBfbGV2ZWw7Cj4gPiAgCV9fdTE2 CWNzdW1fc3RhcnQ7Cj4gPiAgfTsKPiA+IC0jZGVmaW5lIFNLQl9HU09fQ0Ioc2tiKSAoKHN0cnVj dCBza2JfZ3NvX2NiICopKHNrYiktPmNiKQo+ID4gKyNkZWZpbmUgU0tCX1NHT19DQl9PRkZTRVQJ MzIKPiA+ICsjZGVmaW5lIFNLQl9HU09fQ0Ioc2tiKSAoKHN0cnVjdCBza2JfZ3NvX2NiICopKChz a2IpLT5jYiArIFNLQl9TR09fQ0JfT0ZGU0VUKSkKPiAKPiBZb3UgY291bGQgc2V0IFNLQl9TR09f Q0JfT0ZGU0VUIHRvIHNpemVvZiAoKHNrYiktPmNiKSAtIHNpemVvZiAoc3RydWN0IHNrYl9nc29f Y2IpCj4gc28gdGhhdCB0aGUgZW5kIG9mICdjYicgaXMgYWx3YXlzIHVzZWQuCj4gKEFzc3VtaW5n IHRoZSBmb3JtZXIgaXMgYSBtdWx0aXBsZSBvZiA0LikKPiAKPiBJdCBtaWdodCBiZSB3b3J0aCB1 c2luZyBhbiBvbi1zdGFjayBzdHJ1Y3R1cmUgcGFzc2VkIHRocm91Z2ggYXMgYSBzZXBhcmF0ZQo+ IHBhcmFtZXRlciAtIGl0IGRvZXNuJ3QgbG9vayBhcyB0aG91Z2ggaXQgaGFzIHRvIGJlIHF1ZXVl ZCB3aXRoIHRoZSBza2IuCj4gKENsZWFybHkgYSBiaWdnZXIgY2hhbmdlLikKPiAKCkkgY29uc2lk ZXJlZCB0aGF0IGFzIGFuIG9wdGlvbi4gQnV0IHRoZSBiaWdnZXIgY2hhbmdlIGFuZCB0aGUgdXNl IG9mIHRoZSBleHRyYQpzdGFjayBmb3IgYWxsIHVzZXJzLCBwbHVzIHRoZSBleHRyYSBwYXJhbWV0 ZXJzIGluZGljYXRlZCBJIHNob3VsZCBnbyB0aGUgb3RoZXIKd2F5LgoKSW4gbXkgb3Bpbmlvbiwg YXQgbGVhc3QgaW4gdGhlIElQIGZyYWdtZW50YXRpb24gY2FzZSwgc2F2aW5nL3Jlc3RvcmluZyBj YiBpcyBub3QKc3VjaCBhIGJpZyBwcm9ibGVtIHNpbmNlIHdlIGFyZSBpbiBzbG93IHBhdGggYWxy ZWFkeS4KCkNhc2NhcmRvLgoKPiAJRGF2aWQKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZGV2IG1haWxpbmcgbGlzdApkZXZAb3BlbnZzd2l0Y2gub3Jn Cmh0dHA6Ly9vcGVudnN3aXRjaC5vcmcvbWFpbG1hbi9saXN0aW5mby9kZXYK