From owner-freebsd-current@FreeBSD.ORG Fri Jan 23 19:13:59 2009 Return-Path: Delivered-To: current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BB57010656C2; Fri, 23 Jan 2009 19:13:59 +0000 (UTC) (envelope-from maksim.yevmenkin@gmail.com) Received: from rv-out-0506.google.com (rv-out-0506.google.com [209.85.198.227]) by mx1.freebsd.org (Postfix) with ESMTP id 84E448FC0C; Fri, 23 Jan 2009 19:13:59 +0000 (UTC) (envelope-from maksim.yevmenkin@gmail.com) Received: by rv-out-0506.google.com with SMTP id b25so4956632rvf.43 for ; Fri, 23 Jan 2009 11:13:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=6xJk+otF5IuZN5bObbzCKlxD0ZWKY8PP8zcRJgMcFNQ=; b=O0xlmL+fGIGEl6s4RkFTWVfZB2JKX9kileqNGhOzdwaHQTX2qaGHcRPUFDEsSJgqLj rad0n8YITTcrttESXlz3hRT/s1qi4247w8ktwqjgs24nbhObse1nv6WbzMDKpX+Q1KVO x4QufinbnnxJHvy11JmekB9Hj52QHSwhUv3fU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=A4IFSs1SBe0ZucKzxLfyB+08CORKe5FTr+0GicslPD6d09zoFaD9bNd46dQPgo9gzd U7nNl8URmhLcFwFk6WQuBAzw11DjlSXp49Y5N3tqlirCEjju4E82qnqzmOKOqi2xHMfb da4vbIEPim2vgfFtU/io4NG8iq5/4B0XFpAE4= MIME-Version: 1.0 Received: by 10.141.69.1 with SMTP id w1mr3607584rvk.119.1232738039261; Fri, 23 Jan 2009 11:13:59 -0800 (PST) In-Reply-To: References: Date: Fri, 23 Jan 2009 11:13:59 -0800 Message-ID: From: Maksim Yevmenkin To: Lars Engels Content-Type: multipart/mixed; boundary=000e0cd14d34ee6a0204612b3091 Cc: current@freebsd.org, Hans Petter Selasky Subject: Re: [PATCH] for ng_ubt2 stalled transfers X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2009 19:14:00 -0000 --000e0cd14d34ee6a0204612b3091 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On Fri, Jan 23, 2009 at 11:12 AM, Maksim Yevmenkin wrote: > Lars, > >> Maksim has made a lot of changes to the Bluetooth driver. Maybe he can look >> into it? >> >> This looks like a NULL-pointer access to me. >> >> Maksim: >> >> In the ubt_detach routine, make sure that: >> >> 0) No further commands are accepted from the Netgraph stack. >> 1) You drain the task queue! >> 2) You drain all USB transfers: "usb2_transfer_drain()" called unlocked. >> 3) Set the "sc_node" to NULL. > > please try attached patch for ng_ubt2 that hopefully addresses some of > the issues with stalled transfers. stalled transfers do not happen on > my machine, so i can not test it. i briefly kicked the tires and made > sure other things seems to work fine for me. sorry, forgot to attach the patch :) thanks, max --000e0cd14d34ee6a0204612b3091 Content-Type: text/plain; charset=US-ASCII; name="ng_ubt2.stall.diff.txt" Content-Disposition: attachment; filename="ng_ubt2.stall.diff.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fqb8e30z0 SW5kZXg6IG5nX3VidDIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBuZ191YnQyLmMJKHJldmlzaW9uIDE4NzUw NSkKKysrIG5nX3VidDIuYwkod29ya2luZyBjb3B5KQpAQCAtMjQzLDEzICsyNDMsMTEgQEAKIC8q IFVTQiBtZXRob2RzICovCiBzdGF0aWMgdXNiMl9jYWxsYmFja190CXVidF9jdHJsX3dyaXRlX2Nh bGxiYWNrOwogc3RhdGljIHVzYjJfY2FsbGJhY2tfdAl1YnRfaW50cl9yZWFkX2NhbGxiYWNrOwot c3RhdGljIHVzYjJfY2FsbGJhY2tfdAl1YnRfaW50cl9yZWFkX2NsZWFyX3N0YWxsX2NhbGxiYWNr Owogc3RhdGljIHVzYjJfY2FsbGJhY2tfdAl1YnRfYnVsa19yZWFkX2NhbGxiYWNrOwotc3RhdGlj IHVzYjJfY2FsbGJhY2tfdAl1YnRfYnVsa19yZWFkX2NsZWFyX3N0YWxsX2NhbGxiYWNrOwogc3Rh dGljIHVzYjJfY2FsbGJhY2tfdAl1YnRfYnVsa193cml0ZV9jYWxsYmFjazsKLXN0YXRpYyB1c2Iy X2NhbGxiYWNrX3QJdWJ0X2J1bGtfd3JpdGVfY2xlYXJfc3RhbGxfY2FsbGJhY2s7CiBzdGF0aWMg dXNiMl9jYWxsYmFja190CXVidF9pc29jX3JlYWRfY2FsbGJhY2s7CiBzdGF0aWMgdXNiMl9jYWxs YmFja190CXVidF9pc29jX3dyaXRlX2NhbGxiYWNrOworc3RhdGljIHVzYjJfY2FsbGJhY2tfdAl1 YnRfY2xlYXJfc3RhbGxfY2FsbGJhY2s7CiAKIHN0YXRpYyBpbnQJdWJ0X2lzb2NfcmVhZF9vbmVf ZnJhbWUoc3RydWN0IHVzYjJfeGZlciAqLCBpbnQpOwogCkBAIC0zMTYsNyArMzE0LDcgQEAKIAkJ LmVuZHBvaW50ID0JMHgwMCwJLyogY29udHJvbCBwaXBlICovCiAJCS5kaXJlY3Rpb24gPQlVRV9E SVJfQU5ZLAogCQkubWguYnVmc2l6ZSA9CXNpemVvZihzdHJ1Y3QgdXNiMl9kZXZpY2VfcmVxdWVz dCksCi0JCS5taC5jYWxsYmFjayA9CSZ1YnRfYnVsa193cml0ZV9jbGVhcl9zdGFsbF9jYWxsYmFj aywKKwkJLm1oLmNhbGxiYWNrID0JJnVidF9jbGVhcl9zdGFsbF9jYWxsYmFjaywKIAkJLm1oLnRp bWVvdXQgPQkxMDAwLAkvKiAxIHNlY29uZCAqLwogCQkubWguaW50ZXJ2YWwgPQk1MCwJLyogNTBt cyAqLwogCX0sCkBAIC0zMjYsNyArMzI0LDcgQEAKIAkJLmVuZHBvaW50ID0JMHgwMCwJLyogY29u dHJvbCBwaXBlICovCiAJCS5kaXJlY3Rpb24gPQlVRV9ESVJfQU5ZLAogCQkubWguYnVmc2l6ZSA9 CXNpemVvZihzdHJ1Y3QgdXNiMl9kZXZpY2VfcmVxdWVzdCksCi0JCS5taC5jYWxsYmFjayA9CSZ1 YnRfYnVsa19yZWFkX2NsZWFyX3N0YWxsX2NhbGxiYWNrLAorCQkubWguY2FsbGJhY2sgPQkmdWJ0 X2NsZWFyX3N0YWxsX2NhbGxiYWNrLAogCQkubWgudGltZW91dCA9CTEwMDAsCS8qIDEgc2Vjb25k ICovCiAJCS5taC5pbnRlcnZhbCA9CTUwLAkvKiA1MG1zICovCiAJfSwKQEAgLTMzOSw3ICszMzcs NyBAQAogCQkuZW5kcG9pbnQgPQkweDAwLAkvKiBjb250cm9sIHBpcGUgKi8KIAkJLmRpcmVjdGlv biA9CVVFX0RJUl9BTlksCiAJCS5taC5idWZzaXplID0Jc2l6ZW9mKHN0cnVjdCB1c2IyX2Rldmlj ZV9yZXF1ZXN0KSwKLQkJLm1oLmNhbGxiYWNrID0JJnVidF9pbnRyX3JlYWRfY2xlYXJfc3RhbGxf Y2FsbGJhY2ssCisJCS5taC5jYWxsYmFjayA9CSZ1YnRfY2xlYXJfc3RhbGxfY2FsbGJhY2ssCiAJ CS5taC50aW1lb3V0ID0JMTAwMCwJLyogMSBzZWNvbmQgKi8KIAkJLm1oLmludGVydmFsID0JNTAs CS8qIDUwbXMgKi8KIAl9LApAQCAtNjIzLDYgKzYyMSw5IEBACiAJCW5nX3Jtbm9kZV9zZWxmKG5v ZGUpOwogCX0KIAorCS8qIE1ha2Ugc3VyZSB1YnRfdGFzayBpbiBnb25lICovCisJdGFza3F1ZXVl X2RyYWluKHRhc2txdWV1ZV9zd2ksICZzYy0+c2NfdGFzayk7CisKIAkvKiBGcmVlIFVTQiB0cmFu c2ZlcnMsIGlmIGFueSAqLwogCXVzYjJfdHJhbnNmZXJfdW5zZXR1cChzYy0+c2NfeGZlciwgVUJU X05fVFJBTlNGRVIpOwogCkBAIC04NDMsMzUgKzg0NCw2IEBACiB9IC8qIHVidF9pbnRyX3JlYWRf Y2FsbGJhY2sgKi8KIAogLyoKLSAqIENhbGxlZCB3aGVuIG91dGdvaW5nIGNvbnRyb2wgdHJhbnNm ZXIgaW5pdGlhdGVkIHRvIGNsZWFyIHN0YWxsIG9uCi0gKiBpbnRlcnJ1cHQgcGlwZSBoYXMgY29t cGxldGVkLgotICogVVNCIGNvbnRleHQuCi0gKi8KLQotc3RhdGljIHZvaWQKLXVidF9pbnRyX3Jl YWRfY2xlYXJfc3RhbGxfY2FsbGJhY2soc3RydWN0IHVzYjJfeGZlciAqeGZlcikKLXsKLQlub2Rl X3AJCQlub2RlID0geGZlci0+cHJpdl9zYzsKLQlzdHJ1Y3QgdWJ0X3NvZnRjCSpzYzsKLQlzdHJ1 Y3QgdXNiMl94ZmVyCSp4ZmVyX290aGVyOwotCi0JaWYgKE5HX05PREVfTk9UX1ZBTElEKG5vZGUp KSB7Ci0JCU5HX05PREVfVU5SRUYobm9kZSk7Ci0JCXJldHVybjsgLyogbmV0Z3JhcGggbm9kZSBp cyBnb25lICovCi0JfQotCi0Jc2MgPSBOR19OT0RFX1BSSVZBVEUobm9kZSk7Ci0JeGZlcl9vdGhl ciA9IHNjLT5zY194ZmVyW1VCVF9JRl8wX0lOVFJfRFRfUkRdOwotCi0JaWYgKHVzYjJfY2xlYXJf c3RhbGxfY2FsbGJhY2soeGZlciwgeGZlcl9vdGhlcikpIHsKLQkJRFBSSU5URigic3RhbGwgY2xl YXJlZFxuIik7Ci0JCXNjLT5zY19mbGFncyAmPSB+VUJUX0ZMQUdfSU5UUl9TVEFMTDsKLQkJdXNi Ml90cmFuc2Zlcl9zdGFydCh4ZmVyX290aGVyKTsKLQl9IGVsc2UKLQkJTkdfTk9ERV9VTlJFRihu b2RlKTsgLyogY2FudCBjbGVhciBzdGFsbCAqLwotfSAvKiB1YnRfaW50cl9yZWFkX2NsZWFyX3N0 YWxsX2NhbGxiYWNrICovCi0KLS8qCiAgKiBDYWxsZWQgd2hlbiBpbmNvbWluZyBidWxrIHRyYW5z ZmVyIChBQ0wgcGFja2V0KSBoYXMgY29tcGxldGVkLCBpLmUuCiAgKiBBQ0wgcGFja2V0IHdhcyBy ZWNlaXZlZCBmcm9tIHRoZSBkZXZpY2UuCiAgKiBVU0IgY29udGV4dC4KQEAgLTk5MCwzNSArOTYy LDYgQEAKIH0gLyogdWJ0X2J1bGtfcmVhZF9jYWxsYmFjayAqLwogCiAvKgotICogQ2FsbGVkIHdo ZW4gb3V0Z29pbmcgY29udHJvbCB0cmFuc2ZlciBpbml0aWF0ZWQgdG8gY2xlYXIgc3RhbGwgb24K LSAqIGluY29taW5nIGJ1bGsgcGlwZSBoYXMgY29tcGxldGVkLgotICogVVNCIGNvbnRleHQuCi0g Ki8KLQotc3RhdGljIHZvaWQKLXVidF9idWxrX3JlYWRfY2xlYXJfc3RhbGxfY2FsbGJhY2soc3Ry dWN0IHVzYjJfeGZlciAqeGZlcikKLXsKLQlub2RlX3AJCQlub2RlID0geGZlci0+cHJpdl9zYzsK LQlzdHJ1Y3QgdWJ0X3NvZnRjCSpzYzsKLQlzdHJ1Y3QgdXNiMl94ZmVyCSp4ZmVyX290aGVyOwot Ci0JaWYgKE5HX05PREVfTk9UX1ZBTElEKG5vZGUpKSB7Ci0JCU5HX05PREVfVU5SRUYobm9kZSk7 Ci0JCXJldHVybjsgLyogbmV0Z3JhcGggbm9kZSBpcyBnb25lICovCi0JfQotCi0Jc2MgPSBOR19O T0RFX1BSSVZBVEUobm9kZSk7Ci0JeGZlcl9vdGhlciA9IHNjLT5zY194ZmVyW1VCVF9JRl8wX0JV TEtfRFRfUkRdOwotCi0JaWYgKHVzYjJfY2xlYXJfc3RhbGxfY2FsbGJhY2soeGZlciwgeGZlcl9v dGhlcikpIHsKLQkJRFBSSU5URigic3RhbGwgY2xlYXJlZFxuIik7Ci0JCXNjLT5zY19mbGFncyAm PSB+VUJUX0ZMQUdfUkVBRF9TVEFMTDsKLQkJdXNiMl90cmFuc2Zlcl9zdGFydCh4ZmVyX290aGVy KTsKLQl9IGVsc2UKLQkJTkdfTk9ERV9VTlJFRihub2RlKTsgLyogY2FudCBjbGVhciBzdGFsbCAq LwotfSAvKiB1YnRfYnVsa19yZWFkX2NsZWFyX3N0YWxsX2NhbGxiYWNrICovCi0KLS8qCiAgKiBD YWxsZWQgd2hlbiBvdXRnb2luZyBidWxrIHRyYW5zZmVyIChBQ0wgcGFja2V0KSBoYXMgY29tcGxl dGVkLCBpLmUuCiAgKiBBQ0wgcGFja2V0IHdhcyBzZW50IHRvIHRoZSBkZXZpY2UuCiAgKiBVU0Ig Y29udGV4dC4KQEAgLTEwOTYsMzUgKzEwMzksNiBAQAogfSAvKiB1YnRfYnVsa193cml0ZV9jYWxs YmFjayAqLwogCiAvKgotICogQ2FsbGVkIHdoZW4gb3V0Z29pbmcgY29udHJvbCB0cmFuc2ZlciBp bml0aWF0ZWQgdG8gY2xlYXIgc3RhbGwgb24KLSAqIG91dGdvaW5nIGJ1bGsgcGlwZSBoYXMgY29t cGxldGVkLgotICogVVNCIGNvbnRleHQuCi0gKi8KLQotc3RhdGljIHZvaWQKLXVidF9idWxrX3dy aXRlX2NsZWFyX3N0YWxsX2NhbGxiYWNrKHN0cnVjdCB1c2IyX3hmZXIgKnhmZXIpCi17Ci0Jbm9k ZV9wCQkJbm9kZSA9IHhmZXItPnByaXZfc2M7Ci0Jc3RydWN0IHVidF9zb2Z0Ywkqc2M7Ci0Jc3Ry dWN0IHVzYjJfeGZlcgkqeGZlcl9vdGhlcjsKLQotCWlmIChOR19OT0RFX05PVF9WQUxJRChub2Rl KSkgewotCQlOR19OT0RFX1VOUkVGKG5vZGUpOwotCQlyZXR1cm47IC8qIG5ldGdyYXBoIG5vZGUg aXMgZ29uZSAqLwotCX0KLQotCXNjID0gTkdfTk9ERV9QUklWQVRFKG5vZGUpOwotCXhmZXJfb3Ro ZXIgPSBzYy0+c2NfeGZlcltVQlRfSUZfMF9CVUxLX0RUX1dSXTsKLQotCWlmICh1c2IyX2NsZWFy X3N0YWxsX2NhbGxiYWNrKHhmZXIsIHhmZXJfb3RoZXIpKSB7Ci0JCURQUklOVEYoInN0YWxsIGNs ZWFyZWRcbiIpOwotCQlzYy0+c2NfZmxhZ3MgJj0gflVCVF9GTEFHX1dSSVRFX1NUQUxMOwotCQl1 c2IyX3RyYW5zZmVyX3N0YXJ0KHhmZXJfb3RoZXIpOwotCX0gZWxzZQotCQlOR19OT0RFX1VOUkVG KG5vZGUpOyAvKiBjYW50IGNsZWFyIHN0YWxsICovCi19IC8qIHVidF9idWxrX3dyaXRlX2NsZWFy X3N0YWxsX2NhbGxiYWNrICovCi0KLS8qCiAgKiBDYWxsZWQgd2hlbiBpbmNvbWluZyBpc29jIHRy YW5zZmVyIChTQ08gcGFja2V0KSBoYXMgY29tcGxldGVkLCBpLmUuCiAgKiBTQ08gcGFja2V0IHdh cyByZWNlaXZlZCBmcm9tIHRoZSBkZXZpY2UuCiAgKiBVU0IgY29udGV4dC4KQEAgLTEzNjEsNiAr MTI3NSw4MCBAQAogCX0KIH0KIAorLyoKKyAqIENhbGxlZCB3aGVuIGFuIG91dGdvaW5nIGNvbnRy b2wgdHJhbnNmZXIgdG8gY2xlYXIgc3RhbGwgb24gYW5vdGhlcgorICogcGlwZSBoYXMgYmVlbiBj b21wbGV0ZWQuIEdlbmVyaWMgZm9yIGFsbCBjbGVhciBzdGFsbCB0cmFuc2ZlcnMuCisgKiBVU0Ig Y29udGV4dC4KKyAqLworCitzdGF0aWMgdm9pZAordWJ0X2NsZWFyX3N0YWxsX2NhbGxiYWNrKHN0 cnVjdCB1c2IyX3hmZXIgKnhmZXIpCit7CisJbm9kZV9wCQkJbm9kZSA9IHhmZXItPnByaXZfc2M7 CisJc3RydWN0IHVidF9zb2Z0Ywkqc2M7CisJc3RydWN0IHVzYjJfeGZlcgkqeGZlcl9vdGhlcjsK KwlpbnQJCQlmbGFnOworCisJaWYgKE5HX05PREVfTk9UX1ZBTElEKG5vZGUpKSB7CisJCU5HX05P REVfVU5SRUYobm9kZSk7CisJCXJldHVybjsgLyogbmV0Z3JhcGggbm9kZSBpcyBnb25lICovCisJ fQorCisJc2MgPSBOR19OT0RFX1BSSVZBVEUobm9kZSk7CisKKwkvKgorCSAqIEZpZ3VyZSBvdXQg d2hpY2ggY2xlYXIgc3RhbGwgdHJhbnNmZXIgaGFzIGNvbXBsZXRlZAorCSAqIGFuZCBzZXQgeGZl cl9vdGhlciBhbmQgZmxhZyBhY2NvcmRpbmdseQorCSAqLworCisJaWYgKHhmZXIgPT0gc2MtPnNj X3hmZXJbVUJUX0lGXzBfQlVMS19DU19XUl0pIHsKKwkJeGZlcl9vdGhlciA9IHNjLT5zY194ZmVy W1VCVF9JRl8wX0JVTEtfRFRfV1JdOworCQlmbGFnID0gVUJUX0ZMQUdfV1JJVEVfU1RBTEw7CisJ fSBlbHNlIGlmICh4ZmVyID09IHNjLT5zY194ZmVyW1VCVF9JRl8wX0JVTEtfQ1NfUkRdKSB7CisJ CXhmZXJfb3RoZXIgPSBzYy0+c2NfeGZlcltVQlRfSUZfMF9CVUxLX0RUX1JEXTsKKwkJZmxhZyA9 IFVCVF9GTEFHX1JFQURfU1RBTEw7CisJfSBlbHNlIGlmICh4ZmVyID09IHNjLT5zY194ZmVyW1VC VF9JRl8wX0lOVFJfQ1NfUkRdKSB7CisJCXhmZXJfb3RoZXIgPSBzYy0+c2NfeGZlcltVQlRfSUZf MF9JTlRSX0RUX1JEXTsKKwkJZmxhZyA9IFVCVF9GTEFHX0lOVFJfU1RBTEw7CisJfSBlbHNlCisJ CXBhbmljKCJjb3VsZCBub3Qgc2V0IHhmZXJfb3RoZXIhIHhmZXI9JXBcbiIsIHhmZXIpOworCisJ aWYgKHhmZXJfb3RoZXIgPT0gTlVMTCkgeworCQlVQlRfV0FSTihzYywgIm90aGVyIHRyYW5zZmVy IGlzIGdvbmUuIGFyZSB3ZSBkeWluZz8hXG4iKTsKKwkJTkdfTk9ERV9VTlJFRihub2RlKTsKKwkJ cmV0dXJuOyAvKiBvdGhlciB0cmFuc2ZlciBpcyBnb25lLiBhcmUgd2UgZHlpbmc/ISAqLworCX0K KworCXN3aXRjaCAoVVNCX0dFVF9TVEFURSh4ZmVyKSkgeworCWNhc2UgVVNCX1NUX1NFVFVQOgor CQkvKgorCQkgKiBJZ25vcmUgcmV0dXJuIHZhbHVlIGZyb20gdXNiMl9jbGVhcl9zdGFsbF9jYWxs YmFjaygpCisJCSAqIGFzIGl0IGFwcGVhcnMgaXQgY2FuIG5vdCByZXR1cm4gYW55dGhpbmcgb3Ro ZXIgdGhhbgorCQkgKiB6ZXJvIGluIFVTQl9TVF9TRVRVUCBjYXNlCisJCSAqLworCQkodm9pZCkg dXNiMl9jbGVhcl9zdGFsbF9jYWxsYmFjayh4ZmVyLCB4ZmVyX290aGVyKTsKKwkJYnJlYWs7CisK KwljYXNlIFVTQl9TVF9UUkFOU0ZFUlJFRDoKKwkJVUJUX0lORk8oc2MsICJzdGFsbCBjbGVhcmVk LCBmbGFnPSUjeFxuIiwgZmxhZyk7CitzdWJtaXRfb3RoZXI6CisJCXNjLT5zY19mbGFncyAmPSB+ ZmxhZzsKKwkJdXNiMl90cmFuc2Zlcl9zdGFydCh4ZmVyX290aGVyKTsKKwkJYnJlYWs7CisKKwlk ZWZhdWx0OgorCQlpZiAoeGZlci0+ZXJyb3IgIT0gVVNCX0VSUl9DQU5DRUxMRUQpIHsKKwkJCVVC VF9XQVJOKHNjLCAiY2xlYXIgc3RhbGwgdHJhbnNmZXIgZmFpbGVkOiAlcywgIiBcCisJCQkJImZs YWc9JSN4XG4iLCB1c2IyX2VycnN0cih4ZmVyLT5lcnJvciksIGZsYWcpOworCQkJZ290byBzdWJt aXRfb3RoZXI7CisJCQkvKiBOT1QgUkVBQ0hFRCAqLworCQl9CisKKwkJTkdfTk9ERV9VTlJFRihu b2RlKTsgLyogY2FuY2VsbGVkICovCisJCWJyZWFrOworCX0KK30gLyogdWJ0X2NsZWFyX3N0YWxs X2NhbGxiYWNrICovCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgogICoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2x1ZSAK --000e0cd14d34ee6a0204612b3091--