From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Wang Subject: Re: [PATCH RFC] virtio_net: fix error handling for mergeable buffers Date: Thu, 21 Nov 2013 11:27:44 +0800 Message-ID: <528D7DB0.8030101@redhat.com> References: <1384938447-3775-1-git-send-email-jasowang@redhat.com> <20131120132657.GA8455@redhat.com> <125586345.27477452.1384955642143.JavaMail.root@redhat.com> <20131120142032.GA13492@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: Michael Dalton , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, Eric Dumazet , Shirley Ma To: "Michael S. Tsirkin" Return-path: In-Reply-To: <20131120142032.GA13492@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org List-Id: netdev.vger.kernel.org T24gMTEvMjAvMjAxMyAxMDoyMCBQTSwgTWljaGFlbCBTLiBUc2lya2luIHdyb3RlOgo+IE9uIFdl ZCwgTm92IDIwLCAyMDEzIGF0IDA4OjU0OjAyQU0gLTA1MDAsIEphc29uIFdhbmcgd3JvdGU6Cj4+ Cj4+IC0tLS0tIOWOn+Wni+mCruS7tiAtLS0tLQo+Pj4gT24gV2VkLCBOb3YgMjAsIDIwMTMgYXQg MDU6MDc6MjVQTSArMDgwMCwgSmFzb24gV2FuZyB3cm90ZToKPj4+PiBXaGVuIG1lcmdlYWJsZSBi dWZmZXIgd2VyZSB1c2VkLCB3ZSBvbmx5IHB1dCB0aGUgZmlyc3QgcGFnZSBidWYgbGVhdmUgdGhl Cj4+Pj4gcmVzdAo+Pj4+IG9mIGJ1ZmZlcnMgaW4gdGhlIHZpcnQgcXVldWUuIFRoaXMgd2lsbCBj YXVzZSB0aGUgZHJpdmVyIGNvdWxkIG5vdCBnZXQgdGhlCj4+Pj4gY29ycmVjdCBoZWFkIGJ1ZmZl ciBhbnkgbW9yZS4gRml4IHRoaXMgYnkgZHJvcHBpbmcgdGhlIHJlc3Qgb2YgYnVmZmVycyBmb3IK Pj4+PiB0aGlzCj4+Pj4gcGFja2V0Lgo+Pj4+Cj4+Pj4gVGhlIGJ1ZyB3YXMgaW50cm9kdWNlZCBi eSBjb21taXQgOWFiODZiYmNmOGJlNzU1MjU2ZjBhNWU5OTRlMGIzOGFmNmI0ZDM5OQo+Pj4+ICh2 aXJ0aW9fbmV0OiBEZWZlciBza2IgYWxsb2NhdGlvbiBpbiByZWNlaXZlIHBhdGgpLgo+Pj4+Cj4+ Pj4gQ2M6IFJ1c3R5IFJ1c3NlbGwgPHJ1c3R5QHJ1c3Rjb3JwLmNvbS5hdT4KPj4+PiBDYzogTWlj aGFlbCBTLiBUc2lya2luIDxtc3RAcmVkaGF0LmNvbT4KPj4+PiBDYzogTWljaGFlbCBEYWx0b24g PG13ZGFsdG9uQGdvb2dsZS5jb20+Cj4+Pj4gQ2M6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29v Z2xlLmNvbT4KPj4+PiBDYzogU2hpcmxleSBNYSA8eG1hQHVzLmlibS5jb20+Cj4+Pj4gU2lnbmVk LW9mZi1ieTogSmFzb24gV2FuZyA8amFzb3dhbmdAcmVkaGF0LmNvbT4KPj4+IEp1c3QgdG8gY2xh cmlmeSBteSBwcmV2aW91cyBjb21tZW50OiBpdCB3YXMgbm90IGFib3V0IHRoZQo+Pj4gaWRlYSBv ZiBhZGRpbmcgZHJvcF9tZXJnZWFibGVfYnVmZmVyIC0gcmF0aGVyLCBJIHRoaW5rIHRoYXQKPj4+ IGFkZGluZyBrbm93bGVkZ2UgYWJvdXQgbWVyZ2VhYmxlIGJ1ZmZlcnMgaW50byBwYWdlX3RvX3Nr YiBjcmVhdGVzIGFuCj4+PiB1Z2x5IGludGVybmFsIEFQSS4KPj4+Cj4+PiBMZXQncyBtb3ZlIHRo ZSBjYWxsIHRvIHBhZ2VfdG9fc2tiIHdpdGhpbiByZWNlaXZlX21lcmdlYWJsZSBpbnN0ZWFkOgo+ Pj4gaXQncyBhbHNvIG5pY2UgdGhhdCBpbnQgb2Zmc2V0ID0gYnVmIC0gcGFnZV9hZGRyZXNzKHBh Z2UpIGxvZ2ljCj4+PiBpcyBub3Qgc3ByZWFkIGFyb3VuZCBsaWtlIGl0IHdhcy4KPj4+Cj4+PiBB bHNvLCBpdCdzIG5vdCBuaWNlIHRoYXQgd2UgaWdub3JlIGxlbmd0aCBlcnJvcnMgd2hlbiB3ZSBk cm9wCj4+PiBwYWNrZXRzIGJlY2F1c2Ugb2YgT09NLgo+Pj4KPj4+IFNvIEkgY2FtZSB1cCB3aXRo IHRoZSBmb2xsb3dpbmcgLSBpdCBzZWVtcyB0byB3b3JrIGJ1dCBJIGRpZG4ndAo+Pj4gc3RyZXNz IHRlc3QgeWV0Lgo+PiBJJ3ZlIG5vIG9iamVjdGlvbiBvbiB0aGlzLiBCdXQgSSd2ZSByYXRoZXIg bGlrZSBteSBzbWFsbCBhbmQgZGlyZWN0IHBhdGNoIAo+PiB0byBiZSBhcHBsaWVkIHRvIC1uZXQg Zmlyc3QuIEl0IGhhcyBsb3dlciByaXNrIGFuZCB3YXMgbXVjaCBtb3JlIGVhc2llciB0byAKPj4g YmUgYmFja3BvcnRlZCB0byBzdGFibGUgdHJlZXMuIFRoZW4gd2UgY2FuIGRvIHRoZSByZS1mYWN0 b3IgbGlrZSB0aGlzIGluIAo+PiBuZXQtbmV4dC4gCj4gSXQgbWFrZXMgdGhlIGludGVyZmFjZXMg dG9vIG1lc3N5LiAKCkRvIHlvdSBtZWFuIHJlY2VpdmVfbWVyZ2VhYmxlKCkgc2hvdWxkIGNhbGwg cGFnZV90b19za2IoKT8gSXQgaGFzIGJlZW4KdGhlcmUgc2V2ZXJhbCB5ZWFycy4gQW5kIGV2ZW4g d2l0aCB5b3VyIGNoYW5nZXMsIGZvciBiaWcgYW5kIHNtYWxsCnBhY2tldHMsIHBhZ2VfdG9fc2ti KCkgd2VyZSBzdGlsbCBjYWxsZWQgZGlyZWN0bHkgcmVjZWl2ZV9idWYoKSBhbmQgdGhlCmVycm9y IGhhbmRsaW5nIHdlcmUgZG9uZSB0aGVyZS4KPiBXZSBhcmUgbm90IGluIGNvZGUgZnJlZXplIGlu IC1uZXQgLQo+IG9ubHkgZmVhdHVyZSBmcmVlemUsIHNvIG5vIHJlYXNvbiB0byBtYWtlIGNvZGUg bGlrZSBzcGFnZXR0eSwKPiBhbmQgaXQncyBvbmx5IDI1IGxpbmVzIGNoYW5nZWQgYXMgY29tcGFy ZWQgdG8gNDAuCj4gSXQncyBub3QgYSBodWdlIHJlZmFjdG9yaW5nLgoKVGhlIHByb2JsZW0gaXMg eW91ciBwYXRjaCBtaXhlcyBzZXZlcmFsIGJ1Z3MgZml4aW5nIHdpdGggcmUtZmFjdG9yaW5nLApv bmx5IG9uZSBvZiB0aGUgYnVnIGZpeGluZyB3YXMgcmVhbGx5IG5lZWRlZCBmb3Igc3RhYmxlLiBB dCBsZWFzdCB3ZQpzaG91bGQgbWFrZSBpbmNyZW1lbnRhbCBwYXRjaGVzIG9uIHRoaXMuCj4KPiBJ dCdzIGp1c3QgYXMgZWFzeSB0byBiYWNrcG9ydCBteSBwYXRjaCB0b28uCj4gWW91IGp1c3QgZHJv cCB0aGUgZ290byBpbiB0aGUgbmV3IGNvZGUgcGF0aCB3ZSBhZGRlZC4KCkl0IG1heSBub3QgYmUg c28gZWFzeSBmb3IgdGhlIHBlb3BsZSB3aG8gYXJlIG5vdCBmYW1pbGlhciB3aXRoCnZpcnRpby1u ZXQgYW5kIHRoZSBzL3NrYi0+ZGV2L2Rldi9nIGNoYW5nZXMgbG9va3MgaXJyZWxldmFudCBoZXJl Lgo+IExldCBtZSBzaG93IHlvdSAodW50ZXN0ZWQpIC0geW91ciBwYXRjaCBpcyBub3Qgc21hbGxl ci4KPgo+IFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgUy4gVHNpcmtpbiA8bXN0QHJlZGhhdC5jb20+ Cj4KPgo+Cj4gY29tbWl0IDliNDQyZmU5NzBkNWM3MTMxMWQ0MzE0ZWRlZjI2ZWUyZWIxNmU3ZmIK PiBBdXRob3I6IE1pY2hhZWwgUy4gVHNpcmtpbiA8bXN0QHJlZGhhdC5jb20+Cj4gRGF0ZTogICBX ZWQgTm92IDIwIDEyOjQ0OjE0IDIwMTMgKzAyMDAKPgo+ICAgICB2aXJ0aW9fbmV0OiBmaXggcmVz b3VyY2UgbGVhayBvbiBhbGxvYyBmYWlsdXJlCj4gICAgIAo+ICAgICB2aXJ0aW8gbmV0IGdvdCBj b25mdXNlZCwgc3RhcnRlZCBkcm9wcGluZyBwYWNrZXRzLgo+ICAgICAKPiAgICAgU2lnbmVkLW9m Zi1ieTogTWljaGFlbCBTLiBUc2lya2luIDxtc3RAcmVkaGF0LmNvbT4KPgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMgYi9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMKPiBp bmRleCA5ZmJkZmNkLi5kZjRiOWQwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRpb19u ZXQuYwo+ICsrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYwo+IEBAIC0yOTcsMTMgKzI5Nywy MiBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnBhZ2VfdG9fc2tiKHN0cnVjdCByZWNlaXZlX3F1 ZXVlICpycSwKPiAgCXJldHVybiBza2I7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgcmVjZWl2ZV9t ZXJnZWFibGUoc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQo+ ICtzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJlY2VpdmVfbWVyZ2VhYmxlKHN0cnVjdCBuZXRfZGV2 aWNlICpkZXYsCj4gKwkJCQkJIHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSwKPiArCQkJCQkgc3Ry dWN0IHBhZ2UgKnBhZ2UsCj4gKwkJCQkJIHVuc2lnbmVkIGludCBsZW4pCj4gIHsKPiAtCXN0cnVj dCBza2Jfdm5ldF9oZHIgKmhkciA9IHNrYl92bmV0X2hkcihza2IpOwo+IC0Jc3RydWN0IHBhZ2Ug KnBhZ2U7Cj4gLQlpbnQgbnVtX2J1ZiwgaSwgbGVuOwo+ICsJc3RydWN0IHNrYl92bmV0X2hkciAq aGRyID0gcGFnZV9hZGRyZXNzKGJ1Zik7Cj4gKwlpbnQgbnVtX2J1ZiA9IGhkci0+bWhkci5udW1f YnVmZmVyczsKPiArCXN0cnVjdCBza19idWZmICpza2IgPSBwYWdlX3RvX3NrYihycSwgcGFnZSwg bGVuKTsKPiArCWludCBpOwo+ICsKPiArCXNrYiA9IHBhZ2VfdG9fc2tiKHJxLCBwYWdlLCBsZW4p Owo+ICsKPiArCWlmICh1bmxpa2VseSghc2tiKSkKPiArCQlnb3RvIGVycl9za2I7Cj4gKwo+ICAK PiAtCW51bV9idWYgPSBoZHItPm1oZHIubnVtX2J1ZmZlcnM7Cj4gIAl3aGlsZSAoLS1udW1fYnVm KSB7Cj4gIAkJaSA9IHNrYl9zaGluZm8oc2tiKS0+bnJfZnJhZ3M7Cj4gIAkJaWYgKGkgPj0gTUFY X1NLQl9GUkFHUykgewo+IEBAIC0zMTMsMTAgKzMyMiwxMCBAQCBzdGF0aWMgaW50IHJlY2VpdmVf bWVyZ2VhYmxlKHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSwgc3RydWN0IHNrX2J1ZmYgKnNrYikK PiAgCQl9Cj4gIAkJcGFnZSA9IHZpcnRxdWV1ZV9nZXRfYnVmKHJxLT52cSwgJmxlbik7Cj4gIAkJ aWYgKCFwYWdlKSB7Cj4gLQkJCXByX2RlYnVnKCIlczogcnggZXJyb3I6ICVkIGJ1ZmZlcnMgbWlz c2luZ1xuIiwKPiAtCQkJCSBza2ItPmRldi0+bmFtZSwgaGRyLT5taGRyLm51bV9idWZmZXJzKTsK PiAtCQkJc2tiLT5kZXYtPnN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKzsKPiAtCQkJcmV0dXJuIC1F SU5WQUw7Cj4gKwkJCXByX2RlYnVnKCIlczogcnggZXJyb3I6ICVkIGJ1ZmZlcnMgJWQgbWlzc2lu Z1xuIiwKPiArCQkJCSBkZXYtPm5hbWUsIGhkci0+bWhkci5udW1fYnVmZmVycywgbnVtX2J1Zik7 Cj4gKwkJCWRldi0+c3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrOwo+ICsJCQlnb3RvIGVycl9idWY7 Cj4gIAkJfQo+ICAKPiAgCQlpZiAobGVuID4gUEFHRV9TSVpFKQo+IEBAIC0zMjYsNyArMzM1LDI1 IEBAIHN0YXRpYyBpbnQgcmVjZWl2ZV9tZXJnZWFibGUoc3RydWN0IHJlY2VpdmVfcXVldWUgKnJx LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQo+ICAKPiAgCQktLXJxLT5udW07Cj4gIAl9Cj4gLQlyZXR1 cm4gMDsKPiArCXJldHVybiBza2I7Cj4gK2Vycl9za2I6Cj4gKwlwdXRfcGFnZShwYWdlKTsKPiAr ZXJyX2J1ZjoKPiArCWRldi0+c3RhdHMucnhfZHJvcHBlZCsrOwo+ICsJZGV2X2tmcmVlX3NrYiho ZWFkX3NrYik7Cj4gKwl3aGlsZSAoLS1udW1fYnVmKSB7Cj4gKwkJYnVmID0gdmlydHF1ZXVlX2dl dF9idWYocnEtPnZxLCAmbGVuKTsKPiArCQlpZiAodW5saWtlbHkoIWJ1ZikpIHsKPiArCQkJcHJf ZGVidWcoIiVzOiByeCBlcnJvcjogJWQgYnVmZmVycyBtaXNzaW5nXG4iLAo+ICsJCQkJIGRldi0+ bmFtZSwgbnVtX2J1Zik7Cj4gKwkJCWRldi0+c3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrOwo+ICsJ CQlicmVhazsKPiArCQl9Cj4gKwkJcGFnZSA9IGJ1ZjsKPiArCQlnaXZlX3BhZ2VzKHJxLCBwYWdl KTsKPiArCQktLXJxLT5udW07Cj4gKwl9Cj4gKwlyZXR1cm4gTlVMTDsKPiAgfQo+ICAKPiAgc3Rh dGljIHZvaWQgcmVjZWl2ZV9idWYoc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxLCB2b2lkICpidWYs IHVuc2lnbmVkIGludCBsZW4pCj4gQEAgLTM1NCwxNyArMzgxLDE4IEBAIHN0YXRpYyB2b2lkIHJl Y2VpdmVfYnVmKHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSwgdm9pZCAqYnVmLCB1bnNpZ25lZCBp bnQgbGVuKQo+ICAJCXNrYl90cmltKHNrYiwgbGVuKTsKPiAgCX0gZWxzZSB7Cj4gIAkJcGFnZSA9 IGJ1ZjsKPiAtCQlza2IgPSBwYWdlX3RvX3NrYihycSwgcGFnZSwgbGVuKTsKPiAtCQlpZiAodW5s aWtlbHkoIXNrYikpIHsKPiAtCQkJZGV2LT5zdGF0cy5yeF9kcm9wcGVkKys7Cj4gLQkJCWdpdmVf cGFnZXMocnEsIHBhZ2UpOwo+IC0JCQlyZXR1cm47Cj4gLQkJfQo+IC0JCWlmICh2aS0+bWVyZ2Vh YmxlX3J4X2J1ZnMpCj4gLQkJCWlmIChyZWNlaXZlX21lcmdlYWJsZShycSwgc2tiKSkgewo+IC0J CQkJZGV2X2tmcmVlX3NrYihza2IpOwo+ICsJCWlmICh2aS0+bWVyZ2VhYmxlX3J4X2J1ZnMpIHsK PiArCQkJc2tiID0gcmVjZWl2ZV9tZXJnZWFibGUoZGV2LCBycSwgcGFnZSwgbGVuKTsKPiArCQkJ aWYgKHVubGlrZWx5KCFza2IpKQo+ICsJCQkJcmV0dXJuOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCXNr YiA9IHBhZ2VfdG9fc2tiKHJxLCBwYWdlLCBsZW4pOwo+ICsJCQlpZiAodW5saWtlbHkoIXNrYikp IHsKPiArCQkJCWRldi0+c3RhdHMucnhfZHJvcHBlZCsrOwo+ICsJCQkJZ2l2ZV9wYWdlcyhycSwg cGFnZSk7Cj4gIAkJCQlyZXR1cm47Cj4gIAkJCX0KPiArCQl9Cj4gIAl9Cj4gIAo+ICAJaGRyID0g c2tiX3ZuZXRfaGRyKHNrYik7CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVhbGl6YXRpb25AbGlz dHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3Jn L21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24=