From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: SNDRV_PCM_TRIGGER_STOP and audio still queued in the driver Date: Thu, 20 Aug 2009 16:52:35 +0200 Message-ID: References: <9e4733910908150806x38a395bev99f042a563d76edf@mail.gmail.com> <9e4733910908150853k60d76150n2130fe217b432d1e@mail.gmail.com> <9e4733910908152040g1f229833x37bde85264f98a7f@mail.gmail.com> <9e4733910908190802s334788feyd36cad62dd6861f2@mail.gmail.com> <9e4733910908190819l19d99236xbf27106d742a54a6@mail.gmail.com> <9e4733910908190950r409c6c1dgd9019ebda4ccd6be@mail.gmail.com> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.suse.de (cantor.suse.de [195.135.220.2]) by alsa0.perex.cz (Postfix) with ESMTP id 8503710381E for ; Thu, 20 Aug 2009 16:52:35 +0200 (CEST) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: alsa-devel-bounces@alsa-project.org Errors-To: alsa-devel-bounces@alsa-project.org To: Jon Smirl Cc: alsa-devel mailing list List-Id: alsa-devel@alsa-project.org QXQgV2VkLCAxOSBBdWcgMjAwOSAyMDowMjoyMyArMDIwMCwKSSB3cm90ZToKPiAKPiBBdCBXZWQs IDE5IEF1ZyAyMDA5IDEyOjUwOjA5IC0wNDAwLAo+IEpvbiBTbWlybCB3cm90ZToKPiA+IAo+ID4g T24gV2VkLCBBdWcgMTksIDIwMDkgYXQgMTE6MzMgQU0sIFRha2FzaGkgSXdhaTx0aXdhaUBzdXNl LmRlPiB3cm90ZToKPiA+ID4gQXQgV2VkLCAxOSBBdWcgMjAwOSAxMToxOTo0NSAtMDQwMCwKPiA+ ID4gSm9uIFNtaXJsIHdyb3RlOgo+ID4gPj4KPiA+ID4+IE9uIFdlZCwgQXVnIDE5LCAyMDA5IGF0 IDExOjEyIEFNLCBUYWthc2hpIEl3YWk8dGl3YWlAc3VzZS5kZT4gd3JvdGU6Cj4gPiA+PiA+IEF0 IFdlZCwgMTkgQXVnIDIwMDkgMTE6MDI6MzEgLTA0MDAsCj4gPiA+PiA+IEpvbiBTbWlybCB3cm90 ZToKPiA+ID4+ID4+Cj4gPiA+PiA+PiBPbiBXZWQsIEF1ZyAxOSwgMjAwOSBhdCA4OjE0IEFNLCBU YWthc2hpIEl3YWk8dGl3YWlAc3VzZS5kZT4gd3JvdGU6Cj4gPiA+PiA+PiA+IEF0IFNhdCwgMTUg QXVnIDIwMDkgMjM6NDA6MzYgLTA0MDAsCj4gPiA+PiA+PiA+IEpvbiBTbWlybCB3cm90ZToKPiA+ ID4+ID4+ID4+Cj4gPiA+PiA+PiA+PiBPbiBTYXQsIEF1ZyAxNSwgMjAwOSBhdCAxMTo1MyBBTSwg Sm9uIFNtaXJsPGpvbnNtaXJsQGdtYWlsLmNvbT4gd3JvdGU6Cj4gPiA+PiA+PiA+PiA+IHZvaWQK PiA+ID4+ID4+ID4+ID4gYmZpb19zeW5jaF9zdG9wKHZvaWQpCj4gPiA+PiA+PiA+PiA+IHsKPiA+ ID4+ID4+ID4+ID4gwqAgwqBpbnQgbjsKPiA+ID4+ID4+ID4+ID4KPiA+ID4+ID4+ID4+ID4gwqAg wqBpZiAoYmFzZV9oYW5kbGUgPT0gTlVMTCkgewo+ID4gPj4gPj4gPj4gPiDCoCDCoCDCoCDCoHJl dHVybjsKPiA+ID4+ID4+ID4+ID4gwqAgwqB9Cj4gPiA+PiA+PiA+PiA+IMKgIMKgRk9SX0lOX0FO RF9PVVQgewo+ID4gPj4gPj4gPj4gPiDCoCDCoCDCoCDCoGZvciAobiA9IDA7IG4gPCBuX2hhbmRs ZXNbSU9dOyBuKyspIHsKPiA+ID4+ID4+ID4+Cj4gPiA+PiA+PiA+PiBJIGFkZGVkOgo+ID4gPj4g Pj4gPj4gc25kX3BjbV9ub25ibG9jayhoYW5kbGVzW0lPXVtuXSwgMCkKPiA+ID4+ID4+ID4+IHNu ZF9wY21fZHJhaW4oaGFuZGxlc1tJT11bbl0pCj4gPiA+PiA+PiA+PiBzbmRfcGNtX25vbmJsb2Nr KGhhbmRsZXNbSU9dW25dLCBTTkRfUENNX05PTkJMT0NLICkKPiA+ID4+ID4+ID4+Cj4gPiA+PiA+ PiA+PiA+IMKgIMKgIMKgIMKgIMKgIMKgc25kX3BjbV9jbG9zZShoYW5kbGVzW0lPXVtuXSk7Cj4g PiA+PiA+PiA+PiA+IMKgIMKgIMKgIMKgfQo+ID4gPj4gPj4gPj4gPiDCoCDCoH0KPiA+ID4+ID4+ ID4+ID4gfQo+ID4gPj4gPj4gPj4KPiA+ID4+ID4+ID4+IFRoaXMgaXMgbm90IHdvcmtpbmcgY29y cmVjdGx5Lgo+ID4gPj4gPj4gPj4gc25kX3BjbV9ub25ibG9jayhoYW5kbGVzW0lPXVtuXSwgMCkK PiA+ID4+ID4+ID4+IEl0IGRvZXMgbm90IHJlbW92ZSBPX05PTkJMT0NLIGZvciBzb21lIHVua25v d24gcmVhc29uLgo+ID4gPj4gPj4gPj4KPiA+ID4+ID4+ID4+IEkgYWRkZWQgcHJpbnRmKCkgdG8g c25kX3BjbV9od19ub25ibG9jaygpCj4gPiA+PiA+PiA+PiBUaGUgZmNudGwgaXMgbm90IGdldHRp bmcgYW4gZXJyb3IuCj4gPiA+PiA+PiA+PiDCoCDCoCDCoCBpZiAoZmNudGwoZmQsIEZfU0VURkws IGZsYWdzKSA8IDApIHsKPiA+ID4+ID4+ID4+IEZsYWdzIGJlaW5nIHNldCBhcmUgMiAoT19SRFdS KS4KPiA+ID4+ID4+ID4+Cj4gPiA+PiA+PiA+PiBCdXQgd2hlbiBJIGdldCBvdmVyIHRvIHNuZF9w Y21fcHJlX2RyYWluX2luaXQoKSwgSSBnZXQgdGhlIC1FQUdBSU4gZXJyb3IuCj4gPiA+PiA+PiA+ PiBzdGF0aWMgaW50IHNuZF9wY21fcHJlX2RyYWluX2luaXQoc3RydWN0IHNuZF9wY21fc3Vic3Ry ZWFtICpzdWJzdHJlYW0sCj4gPiA+PiA+PiA+PiBpbnQgc3RhdGUpCj4gPiA+PiA+PiA+PiB7Cj4g PiA+PiA+PiA+PiDCoCDCoCDCoCBwcmludGsoInNuZF9wY21fcHJlX2RyYWluX2luaXRcbiIpOwo+ ID4gPj4gPj4gPj4gwqAgwqAgwqAgaWYgKHN1YnN0cmVhbS0+Zl9mbGFncyAmIE9fTk9OQkxPQ0sp Cj4gPiA+PiA+PiA+PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gLUVBR0FJTjsKPiA+ID4+ ID4+ID4+IMKgIMKgIMKgIHByaW50aygic25kX3BjbV9wcmVfZHJhaW5faW5pdCAxXG4iKTsKPiA+ ID4+ID4+ID4+IMKgIMKgIMKgIHN1YnN0cmVhbS0+cnVudGltZS0+dHJpZ2dlcl9tYXN0ZXIgPSBz dWJzdHJlYW07Cj4gPiA+PiA+PiA+PiDCoCDCoCDCoCByZXR1cm4gMDsKPiA+ID4+ID4+ID4+IH0K PiA+ID4+ID4+ID4+IFNvIEkgaGF2ZSB0byBjb25jbHVkZSB0aGF0IGZjbnRsKGZkLCBGX1NFVEZM LCBmbGFncykgaXMgbm90IHJlbW92aW5nCj4gPiA+PiA+PiA+PiB0aGUgT19OT05CTE9DSyBmbGFn Lgo+ID4gPj4gPj4gPgo+ID4gPj4gPj4gPiBZZWFoLCB5b3UgZm91bmQgYSBsb25nLXN0YW5kaW5n IGJ1ZyA6KQo+ID4gPj4gPj4gPgo+ID4gPj4gPj4gPiBIb25lc3RseSwgSSB0aGluayB0aGUgY3Vy cmVudCBkZXNpZ25lZCBiZWhhdmlvciBpcyBqdXN0IGFubm95aW5nLgo+ID4gPj4gPj4gPiBBbiBp b2N0bCBtYXkgYmUgYmxvY2tlZCwgdGh1cyB0aGVyZSBpcyBubyByZWFsIG1lcml0IHRvIHJldHVy biAtRUFHQUlOCj4gPiA+PiA+PiA+IHdpdGggRFJBSU4gaW9jdGwuCj4gPiA+PiA+Pgo+ID4gPj4g Pj4gQnJ1dGVmaXIgaXMgYSBzZXJ2ZXIgdHlwZSBhcHAsIHNvIHB1bHNlYXVkaW8gc2hvdWxkIGJl IGhhdmluZyB0cm91YmxlCj4gPiA+PiA+PiB3aXRoIHRoaXMgdG9vLgo+ID4gPj4gPgo+ID4gPj4g PiBNYXliZSBub3QuIMKgT3RoZXJ3aXNlIHdlJ3ZlIGdvdCBhbHJlYWR5IG1hbnkgYnVnIHJlcG9y dHMuCj4gPiA+PiA+Cj4gPiA+PiA+IFRoZSBkaWZmZXJlbmNlIGlzIGhvdyB0byB3YWl0IHVudGls IGFsbCBkYXRhIGlzIG91dC4gwqBQQSB3b3VsZCBsaWtlbHkKPiA+ID4+ID4gd2FpdCB1c2luZyBp dHMgb3duIHRpbWVyIHN0dWZmIHdpdGhvdXQgc2xlZXBpbmcgaW4gZHJhaW4gaW9jdGwuCj4gPiA+ Pgo+ID4gPj4gQ2FuIHlvdSBpbXBsZW1lbnQgYSBwb2xsZWQgZHJhaW4gYnkgY2hlY2tpbmcgaWYg c3RhdGUgaXMgUlVOTklORyBhbmQKPiA+ID4+IHRoZSBsb29raW5nIGZvciB0aGUgdHJhbnNpdGlv biB0byBTVE9QUEVEPwo+ID4gPgo+ID4gPiBDb3VsZCB5b3UgZWxhYm9yYXRlPwo+ID4gPgo+ID4g Pj4gSXMgdGhlcmUgYW55dGhpbmcgc3BlY2lhbCBhYm91dCBiZWluZyBpbiBzdGF0ZSBEUkFJTklO Rz8KPiA+ID4KPiA+ID4gWWVzLiDCoFRoZSBkcmFpbiBuZWVkcyB0aGUgZm9sbG93aW5nIGFjdGl2 ZSBwcm9jZWR1cmU6Cj4gPiA+Cj4gPiA+IDEuIGFwcCBub3RpZmllcyB0aGUgZHJpdmVyIHRoYXQg dGhlIHN0cmVhbSBpcyBkcmFpbmVkLgo+ID4gPiAyLiBhcHAgZ28gdG8gc2xlZXAgKGluIGRyYWlu IGlvY3RsKQo+ID4gPiAzLiB0aGUgZHJpdmVyIG1hcmtzIHRoZSBQQ00gc3RhdGUgRFJBSU4KPiA+ ID4gNC4gd2hlbiB0aGUgYWxsIGRhdGEgaGFzIGJlZW4gc2VudCBvdXQsIHRoZSBkcml2ZXIgc3Rv cHMgdGhlIHN0cmVhbSwKPiA+ID4gwqB3YWtlcyB1cCB0aGUgc2xlZXBlcgo+ID4gPiA1LiBhcHAg cmV0dXJucwo+ID4gPgo+ID4gPiBXaXRob3V0IHRoZSBleHBsaWNpdCBub3RpZmljYXRpb24sIHRo ZSBkcml2ZXIgY2Fubm90IGtub3cgd2hldGhlcgo+ID4gPiB0aGUgc3RyZWFtIGlzIHN1cHBvc2Vk IHRvIGJlIHN0b3BwZWQgc3VjY2Vzc2Z1bGx5IG9yIGp1c3QgZ2V0IGFuCj4gPiA+IFhSVU4uCj4g PiA+Cj4gPiA+IEkgZ3Vlc3MgeW91IHRoaW5rIHRoYXQgaW9jdGwoRFJBSU4pIGp1c3QgbWFya3Mg YW5kIHJldHVybnMsIHRoZW4KPiA+IAo+ID4gVGhhdCB3b3VsZCBiZSBhIGZ1bmN0aW9uIG9mIGJl aW5nIGluIE9GX05PTkJMT0NLRUQgc3RhdGUuCj4gPiAKPiA+ID4gYXBwIGRvZXMgcG9sbCgpIHRv IHdhaXQgdW50aWwgYWxsIGRhdGEgc2VudCBvdXQuIMKgVGhpcyB3b3VsZCB3b3JrLAo+ID4gPiB0 b28sIGFmdGVyIHNvbWUgYW1vdW50IG9mIHdvcmsuIMKgQnV0LCBqdXN0IGZpeGluZyB0aGUgZXhp c3RpbmcgRFJBSU4KPiA+ID4gaW9jdGwgaXMgZmFyIGxlc3Mgd29yayBpbiB0aGUgZW5kLi4uCj4g PiAKPiA+IFJpZ2h0IG5vdyBkcmFpbigpIGlzIGEgc3luY2hyb25vdXMgQVBJLiBUaGVyZSBpcyBu byBhbHRlcm5hdGl2ZSBmb3IKPiA+IGFzeW5jaHJvbm91c2x5IHN0YXJ0aW5nIGEgZHJhaW4gYW5k IHRoZW4gcG9sbGluZyBvciBnZXR0aW5nIHNpZ25hbGVkCj4gPiB3aGVuIGl0IGlzIGZpbmlzaGVk LiBJZiB0aGUgYXBwIGlzIG5vdCB0aHJlYWRlZCBpdCB3aWxsIGdvCj4gPiB1bnJlc3BvbnNpdmUg d2hpbGUgaW4gdGhlIGRyYWluIElPQ1RMICgyMCBzZWNvbmRzIGluIG15IGNhc2UpLgo+ID4gQ3Vy cmVudGx5IGJydXRlZmlyIGlzIG5vdCB3cml0dGVuIGF0IGEgdGhyZWFkZWQgYXBwLgo+IAo+IE9L LCBpdCBzb3VuZHMgbGlrZSBhIHJlYXNvbmFibGUgYXJndW1lbnQuCj4gCj4gTWF5YmUgaXQncyB3 b3J0aCB0byBjaGVjayBob3cgZWFzeSBpdCBjYW4gYmUgaW1wbGVtZW50ZWQuCj4gQmFzaWNhbGx5 IHRoZSBzYW1lIHdhaXRfcXVldWUgbGlrZSBub3JtYWwgcG9sbCBpcyB1c2VkIGZvciBkcmFpbgo+ IGNoZWNrcywgdGh1cyBpdCB3b3VsZG4ndCBiZSB0b28gZGlmZmljdWx0IHRvIHVzZSBwb2xsKCkg Zm9yIHVzZXItc3BhY2UKPiBmb3IgdGhlIHNhbWUgcHVycG9zZS4gIAoKVGhlIHBhdGNoIGlzIGJl bG93LiAgSXQncyBlYXNpZXIgdGhhbiBJIHRob3VnaHQgaW5pdGlhbGx5LgpJdCBzZWVtcyB3b3Jr aW5nIGZpbmUgd2l0aCBteSBzbWFsbCB0ZXN0IGNhc2UuCgpBIHJlbWFpbmluZyBxdWVzdGlvbiBp cyB3aGV0aGVyIGlvY3RsKERSQUlOKSBzaG91bGQgZ2l2ZSAtRUFHQUlOCmluIG5vbi1ibG9ja2lu ZyBtb2RlIGFsdGhvdWdoIGl0IHN1Y2Nlc3NmdWxseSBjaGFuZ2VkIHRoZSBQQ00gc3RhdGUKdG8g RFJBSU4uICBJIGtlcHQgdGhlIHJldHVybiB2YWx1ZSBqdXN0IGZvciBjb21wYXRpYmlsaXR5IHJl YXNvbiwKYnV0IHJldHVybmluZyB6ZXJvIGFwcGVhcnMgbW9yZSByZWFzb25hYmxlIGluIHRoaXMg Y2FzZS4KCkFueXdheSwgdGhlIHBhdGNoIGlzIGluIHNvdW5kLXVuc3RhYmxlIEdJVCB0cmVlIHJp Z2h0IG5vdy4gIEknbGwgbW92ZQppdCB0byB0aGUgbWFpbiBzb3VuZCBHSVQgdHJlZSBsYXRlciBp ZiBubyBvbmUgb2JqZWN0cy4KCgp0aGFua3MsCgpUYWthc2hpCgo9PT0KCkZyb20gNGNkYzExNWZk MzhiNTQ2NDJlODUzNmE1YzIzODk0ODNiY2I5YjJlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgpEYXRlOiBUaHUsIDIwIEF1ZyAyMDA5 IDE2OjQwOjE2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gQUxTQTogcGNtIC0gRml4IGRyYWluIGJl aGF2aW9yIGluIG5vbi1ibG9ja2luZyBtb2RlCgpUaGUgY3VycmVudCBQQ00gY29yZSBoYXMgdGhl IGZvbGxvd2luZyBwcm9ibGVtcyByZWdhcmRpbmcgUENNIGRyYWluaW5nCmluIG5vbi1ibG9ja2lu ZyBtb2RlOgoKLSB0aGUgY3VycmVudCBmX2ZsYWdzIGlzbid0IGNoZWNrZWQgaW4gc25kX3BjbV9k cmFpbigpLCB0aHVzIGNoYW5naW5nCiAgdGhlIG1vZGUgZHluYW1pY2FsbHkgdmlhIHNuZF9wY21f bm9uYmxvY2soKSBhZnRlciBvcGVuIGRvZXNuJ3Qgd29yay4KLSBjYWxsaW5nIGRyYWluIGluIG5v bi1ibG9ja2luZyBtb2RlIGp1c3QgcmV0dXJuIC1FQUdBSU4gZXJyb3IsIGJ1dAogIGRvZXNuJ3Qg cHJvdmlkZSBhbnkgd2F5IHRvIHN5bmMgd2l0aCBkcmFpbmluZy4KClRoaXMgcGF0Y2ggZml4ZXMg dGhlc2UgaXNzdWVzLgotIGNoZWNrIGZpbGUtPmZfZmxhZ3MgaW4gc25kX3BjbV9kcmFpbigpIHBy b3Blcmx5Ci0gd2hlbiBPX05PTkJMT0NLIGlzIHNldCwgUENNIGNvcmUgc2V0cyB0aGUgc3RyZWFt KHMpIHRvIERSQUlOIHN0YXRlCiAgYnV0IHF1aXRzIGlvY3RsIGltbWVkaWF0ZWx5IHdpdGhvdXQg d2FpdGluZyB0aGUgd2hvbGUgZHJhaW47IHRoZQogIGNhbGxlciBjYW4gc3luYyB0aGUgZHJhaW4g bWFudWFsbHkgdmlhIHBvbGwoKQoKU2lnbmVkLW9mZi1ieTogVGFrYXNoaSBJd2FpIDx0aXdhaUBz dXNlLmRlPgotLS0KIHNvdW5kL2NvcmUvcGNtX2xpYi5jICAgIHwgICAxMiArKysrKysrLS0tCiBz b3VuZC9jb3JlL3BjbV9uYXRpdmUuYyB8ICAgNTIgKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCAy NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zb3VuZC9jb3JlL3BjbV9saWIuYyBiL3NvdW5k L2NvcmUvcGNtX2xpYi5jCmluZGV4IDcyY2ZkNDcuLmUzZTc4YzcgMTAwNjQ0Ci0tLSBhL3NvdW5k L2NvcmUvcGNtX2xpYi5jCisrKyBiL3NvdW5kL2NvcmUvcGNtX2xpYi5jCkBAIC0xOTcsMTIgKzE5 NywxNiBAQCBzdGF0aWMgaW50IHNuZF9wY21fdXBkYXRlX2h3X3B0cl9wb3N0KHN0cnVjdCBzbmRf cGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogCQlhdmFpbCA9IHNuZF9wY21fY2FwdHVyZV9hdmFp bChydW50aW1lKTsKIAlpZiAoYXZhaWwgPiBydW50aW1lLT5hdmFpbF9tYXgpCiAJCXJ1bnRpbWUt PmF2YWlsX21heCA9IGF2YWlsOwotCWlmIChhdmFpbCA+PSBydW50aW1lLT5zdG9wX3RocmVzaG9s ZCkgewotCQlpZiAoc3Vic3RyZWFtLT5ydW50aW1lLT5zdGF0dXMtPnN0YXRlID09IFNORFJWX1BD TV9TVEFURV9EUkFJTklORykKKwlpZiAocnVudGltZS0+c3RhdHVzLT5zdGF0ZSA9PSBTTkRSVl9Q Q01fU1RBVEVfRFJBSU5JTkcpIHsKKwkJaWYgKGF2YWlsID49IHJ1bnRpbWUtPmJ1ZmZlcl9zaXpl KSB7CiAJCQlzbmRfcGNtX2RyYWluX2RvbmUoc3Vic3RyZWFtKTsKLQkJZWxzZQorCQkJcmV0dXJu IC1FUElQRTsKKwkJfQorCX0gZWxzZSB7CisJCWlmIChhdmFpbCA+PSBydW50aW1lLT5zdG9wX3Ro cmVzaG9sZCkgewogCQkJeHJ1bihzdWJzdHJlYW0pOwotCQlyZXR1cm4gLUVQSVBFOworCQkJcmV0 dXJuIC1FUElQRTsKKwkJfQogCX0KIAlpZiAoYXZhaWwgPj0gcnVudGltZS0+Y29udHJvbC0+YXZh aWxfbWluKQogCQl3YWtlX3VwKCZydW50aW1lLT5zbGVlcCk7CmRpZmYgLS1naXQgYS9zb3VuZC9j b3JlL3BjbV9uYXRpdmUuYyBiL3NvdW5kL2NvcmUvcGNtX25hdGl2ZS5jCmluZGV4IGFjMjE1MGUu LmIwODg5OGMgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvcGNtX25hdGl2ZS5jCisrKyBiL3NvdW5k L2NvcmUvcGNtX25hdGl2ZS5jCkBAIC0xMzQzLDggKzEzNDMsNiBAQCBzdGF0aWMgaW50IHNuZF9w Y21fcHJlcGFyZShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAogc3RhdGlj IGludCBzbmRfcGNtX3ByZV9kcmFpbl9pbml0KHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vi c3RyZWFtLCBpbnQgc3RhdGUpCiB7Ci0JaWYgKHN1YnN0cmVhbS0+Zl9mbGFncyAmIE9fTk9OQkxP Q0spCi0JCXJldHVybiAtRUFHQUlOOwogCXN1YnN0cmVhbS0+cnVudGltZS0+dHJpZ2dlcl9tYXN0 ZXIgPSBzdWJzdHJlYW07CiAJcmV0dXJuIDA7CiB9CkBAIC0xMzkyLDcgKzEzOTAsNiBAQCBzdGF0 aWMgc3RydWN0IGFjdGlvbl9vcHMgc25kX3BjbV9hY3Rpb25fZHJhaW5faW5pdCA9IHsKIHN0cnVj dCBkcmFpbl9yZWMgewogCXN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtOwogCXdh aXRfcXVldWVfdCB3YWl0OwotCXNuZF9wY21fdWZyYW1lc190IHN0b3BfdGhyZXNob2xkOwogfTsK IAogc3RhdGljIGludCBzbmRfcGNtX2Ryb3Aoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJz dHJlYW0pOwpAQCAtMTQwNCwxMyArMTQwMSwxNSBAQCBzdGF0aWMgaW50IHNuZF9wY21fZHJvcChz dHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSk7CiAgKiBBZnRlciB0aGlzIGNhbGws IGFsbCBzdHJlYW1zIGFyZSBzdXBwb3NlZCB0byBiZSBlaXRoZXIgU0VUVVAgb3IgRFJBSU5JTkcK ICAqIChjYXB0dXJlIG9ubHkpIHN0YXRlLgogICovCi1zdGF0aWMgaW50IHNuZF9wY21fZHJhaW4o c3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCitzdGF0aWMgaW50IHNuZF9wY21f ZHJhaW4oc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCisJCQkgc3RydWN0IGZp bGUgKmZpbGUpCiB7CiAJc3RydWN0IHNuZF9jYXJkICpjYXJkOwogCXN0cnVjdCBzbmRfcGNtX3J1 bnRpbWUgKnJ1bnRpbWU7CiAJc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzOwogCWludCByZXN1 bHQgPSAwOwogCWludCBpLCBudW1fZHJlY3M7CisJaW50IG5vbmJsb2NrID0gMDsKIAlzdHJ1Y3Qg ZHJhaW5fcmVjICpkcmVjLCBkcmVjX3RtcCwgKmQ7CiAKIAljYXJkID0gc3Vic3RyZWFtLT5wY20t PmNhcmQ7CkBAIC0xNDI4LDYgKzE0MjcsMTUgQEAgc3RhdGljIGludCBzbmRfcGNtX2RyYWluKHN0 cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQogCQl9CiAJfQogCisJaWYgKGZpbGUp IHsKKwkJaWYgKGZpbGUtPmZfZmxhZ3MgJiBPX05PTkJMT0NLKQorCQkJbm9uYmxvY2sgPSAxOwor CX0gZWxzZSBpZiAoc3Vic3RyZWFtLT5mX2ZsYWdzICYgT19OT05CTE9DSykKKwkJbm9uYmxvY2sg PSAxOworCisJaWYgKG5vbmJsb2NrKQorCQlnb3RvIGxvY2s7IC8qIG5vIG5lZWQgdG8gYWxsb2Nh dGUgd2FpdHF1ZXVlcyAqLworCiAJLyogYWxsb2NhdGUgdGVtcG9yYXJ5IHJlY29yZCBmb3IgZHJh aW4gc3luYyAqLwogCWRvd25fcmVhZCgmc25kX3BjbV9saW5rX3J3c2VtKTsKIAlpZiAoc25kX3Bj bV9zdHJlYW1fbGlua2VkKHN1YnN0cmVhbSkpIHsKQEAgLTE0NDksMTYgKzE0NTcsMTEgQEAgc3Rh dGljIGludCBzbmRfcGNtX2RyYWluKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFt KQogCQkJZC0+c3Vic3RyZWFtID0gczsKIAkJCWluaXRfd2FpdHF1ZXVlX2VudHJ5KCZkLT53YWl0 LCBjdXJyZW50KTsKIAkJCWFkZF93YWl0X3F1ZXVlKCZydW50aW1lLT5zbGVlcCwgJmQtPndhaXQp OwotCQkJLyogc3RvcF90aHJlc2hvbGQgZml4dXAgdG8gYXZvaWQgZW5kbGVzcyBsb29wIHdoZW4K LQkJCSAqIHN0b3BfdGhyZXNob2xkID4gYnVmZmVyX3NpemUKLQkJCSAqLwotCQkJZC0+c3RvcF90 aHJlc2hvbGQgPSBydW50aW1lLT5zdG9wX3RocmVzaG9sZDsKLQkJCWlmIChydW50aW1lLT5zdG9w X3RocmVzaG9sZCA+IHJ1bnRpbWUtPmJ1ZmZlcl9zaXplKQotCQkJCXJ1bnRpbWUtPnN0b3BfdGhy ZXNob2xkID0gcnVudGltZS0+YnVmZmVyX3NpemU7CiAJCX0KIAl9CiAJdXBfcmVhZCgmc25kX3Bj bV9saW5rX3J3c2VtKTsKIAorIGxvY2s6CiAJc25kX3BjbV9zdHJlYW1fbG9ja19pcnEoc3Vic3Ry ZWFtKTsKIAkvKiByZXN1bWUgcGF1c2UgKi8KIAlpZiAoc3Vic3RyZWFtLT5ydW50aW1lLT5zdGF0 dXMtPnN0YXRlID09IFNORFJWX1BDTV9TVEFURV9QQVVTRUQpCkBAIC0xNDY2LDkgKzE0NjksMTIg QEAgc3RhdGljIGludCBzbmRfcGNtX2RyYWluKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vi c3RyZWFtKQogCiAJLyogcHJlLXN0YXJ0L3N0b3AgLSBhbGwgcnVubmluZyBzdHJlYW1zIGFyZSBj aGFuZ2VkIHRvIERSQUlOSU5HIHN0YXRlICovCiAJcmVzdWx0ID0gc25kX3BjbV9hY3Rpb24oJnNu ZF9wY21fYWN0aW9uX2RyYWluX2luaXQsIHN1YnN0cmVhbSwgMCk7Ci0JaWYgKHJlc3VsdCA8IDAp IHsKLQkJc25kX3BjbV9zdHJlYW1fdW5sb2NrX2lycShzdWJzdHJlYW0pOwotCQlnb3RvIF9lcnJv cjsKKwlpZiAocmVzdWx0IDwgMCkKKwkJZ290byB1bmxvY2s7CisJLyogaW4gbm9uLWJsb2NraW5n LCB3ZSBkb24ndCB3YWl0IGluIGlvY3RsIGJ1dCBsZXQgY2FsbGVyIHBvbGwgKi8KKwlpZiAobm9u YmxvY2spIHsKKwkJcmVzdWx0ID0gLUVBR0FJTjsKKwkJZ290byB1bmxvY2s7CiAJfQogCiAJZm9y ICg7OykgewpAQCAtMTUwNCwxOCArMTUxMCwxOCBAQCBzdGF0aWMgaW50IHNuZF9wY21fZHJhaW4o c3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCiAJCX0KIAl9CiAKKyB1bmxvY2s6 CiAJc25kX3BjbV9zdHJlYW1fdW5sb2NrX2lycShzdWJzdHJlYW0pOwogCi0gX2Vycm9yOgotCWZv ciAoaSA9IDA7IGkgPCBudW1fZHJlY3M7IGkrKykgewotCQlkID0gJmRyZWNbaV07Ci0JCXJ1bnRp bWUgPSBkLT5zdWJzdHJlYW0tPnJ1bnRpbWU7Ci0JCXJlbW92ZV93YWl0X3F1ZXVlKCZydW50aW1l LT5zbGVlcCwgJmQtPndhaXQpOwotCQlydW50aW1lLT5zdG9wX3RocmVzaG9sZCA9IGQtPnN0b3Bf dGhyZXNob2xkOworCWlmICghbm9uYmxvY2spIHsKKwkJZm9yIChpID0gMDsgaSA8IG51bV9kcmVj czsgaSsrKSB7CisJCQlkID0gJmRyZWNbaV07CisJCQlydW50aW1lID0gZC0+c3Vic3RyZWFtLT5y dW50aW1lOworCQkJcmVtb3ZlX3dhaXRfcXVldWUoJnJ1bnRpbWUtPnNsZWVwLCAmZC0+d2FpdCk7 CisJCX0KKwkJaWYgKGRyZWMgIT0gJmRyZWNfdG1wKQorCQkJa2ZyZWUoZHJlYyk7CiAJfQotCi0J aWYgKGRyZWMgIT0gJmRyZWNfdG1wKQotCQlrZnJlZShkcmVjKTsKIAlzbmRfcG93ZXJfdW5sb2Nr KGNhcmQpOwogCiAJcmV0dXJuIHJlc3VsdDsKQEAgLTI1NDQsNyArMjU1MCw3IEBAIHN0YXRpYyBp bnQgc25kX3BjbV9jb21tb25faW9jdGwxKHN0cnVjdCBmaWxlICpmaWxlLAogCQlyZXR1cm4gc25k X3BjbV9od19wYXJhbXNfb2xkX3VzZXIoc3Vic3RyZWFtLCBhcmcpOwogI2VuZGlmCiAJY2FzZSBT TkRSVl9QQ01fSU9DVExfRFJBSU46Ci0JCXJldHVybiBzbmRfcGNtX2RyYWluKHN1YnN0cmVhbSk7 CisJCXJldHVybiBzbmRfcGNtX2RyYWluKHN1YnN0cmVhbSwgZmlsZSk7CiAJY2FzZSBTTkRSVl9Q Q01fSU9DVExfRFJPUDoKIAkJcmV0dXJuIHNuZF9wY21fZHJvcChzdWJzdHJlYW0pOwogCWNhc2Ug U05EUlZfUENNX0lPQ1RMX1BBVVNFOgotLSAKMS42LjMuMwoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFsc2EtZGV2ZWwgbWFpbGluZyBsaXN0CkFsc2Et ZGV2ZWxAYWxzYS1wcm9qZWN0Lm9yZwpodHRwOi8vbWFpbG1hbi5hbHNhLXByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8vYWxzYS1kZXZlbAo=