From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2904 invoked by alias); 11 Nov 2009 23:37:15 -0000 Received: (qmail 2892 invoked by uid 22791); 11 Nov 2009 23:37:14 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.45.13) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 11 Nov 2009 23:37:06 +0000 Received: from wpaz24.hot.corp.google.com (wpaz24.hot.corp.google.com [172.24.198.88]) by smtp-out.google.com with ESMTP id nABNb3Bk010190 for ; Wed, 11 Nov 2009 15:37:04 -0800 Received: from fxm26 (fxm26.prod.google.com [10.184.13.26]) by wpaz24.hot.corp.google.com with ESMTP id nABNb0mE024250 for ; Wed, 11 Nov 2009 15:37:00 -0800 Received: by fxm26 with SMTP id 26so1729850fxm.19 for ; Wed, 11 Nov 2009 15:37:00 -0800 (PST) MIME-Version: 1.0 Received: by 10.216.90.70 with SMTP id d48mr653413wef.159.1257982619879; Wed, 11 Nov 2009 15:36:59 -0800 (PST) In-Reply-To: <4AF9DC39.7030207@vmware.com> References: <4AF9DC39.7030207@vmware.com> Date: Wed, 11 Nov 2009 23:37:00 -0000 Message-ID: Subject: Re: [RFA] dcache invalidate fix From: Doug Evans To: Michael Snyder Cc: "gdb-patches@sourceware.org" Content-Type: multipart/mixed; boundary=0016e6d56640311003047820e7b8 X-System-Of-Record: true X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-11/txt/msg00269.txt.bz2 --0016e6d56640311003047820e7b8 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 2443 On Tue, Nov 10, 2009 at 1:33 PM, Michael Snyder wrote: > Doug, I'm vague about this, but it seems right and it fixes the > bug that I'm running into. > > It seems like dcache_invalidate_line needs to remove the block > from the in use list at the same time as adding it to the freed > list. > > The problem that bit me was getting the two lists cross-linked, > which eventually led to an infinite loop behavior in dcache_invalidate. > > > 2009-11-10 =A0Michael Snyder =A0 > > =A0 =A0 =A0 =A0* dcache.c (dcache_invalidate_line): Remove block from use= d list > =A0 =A0 =A0 =A0when adding it to freed list. > > Index: dcache.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: /cvs/src/src/gdb/dcache.c,v > retrieving revision 1.37 > diff -u -p -r1.37 dcache.c > --- dcache.c =A0 =A010 Nov 2009 18:36:50 -0000 =A0 =A0 =A01.37 > +++ dcache.c =A0 =A010 Nov 2009 21:31:03 -0000 > @@ -167,10 +167,18 @@ dcache_invalidate_line (DCACHE *dcache, > > =A0 if (db) > =A0 =A0 { > + =A0 =A0 =A0struct dcache_block *db2; > =A0 =A0 =A0 splay_tree_remove (dcache->tree, (splay_tree_key) db->addr); > =A0 =A0 =A0 db->newer =3D dcache->freelist; > =A0 =A0 =A0 dcache->freelist =3D db; > =A0 =A0 =A0 --dcache->size; > + =A0 =A0 =A0/* Remove db from dcache in-use chain. =A0*/ > + =A0 =A0 =A0for (db2 =3D dcache->oldest; db2; db2 =3D db2->newer) > + =A0 =A0 =A0 if (db2->newer =3D=3D db) > + =A0 =A0 =A0 =A0 { > + =A0 =A0 =A0 =A0 =A0 dcache->newest =3D db2; > + =A0 =A0 =A0 =A0 =A0 db2->newer =3D NULL; > + =A0 =A0 =A0 =A0 } > =A0 =A0 } > =A0} Blech. Thanks for catching this. The list will contain 4096 elements at this point so I think we need to do something different. The following comes to mind. I'll check it in in a few days if there are no objections. 2009-11-11 Doug Evans * dcache.c (dcache_block): Replace member newer with next,prev. (dcache_struct): Delete member newest. (block_func): New typedef. (append_block, remove_block, for_each_block): New functions. (invalidate_block, free_block): New functions. (dcache_invalidate): Update (dcache_invalidate_line, dcache_alloc): Update to use new list accessors. (dcache_free): Ditto. Fix memory leak. --0016e6d56640311003047820e7b8 Content-Type: text/plain; charset=US-ASCII; name="gdb-091111-dcache-block-list-1.patch.txt" Content-Disposition: attachment; filename="gdb-091111-dcache-block-list-1.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g1wqc10x1 Content-length: 9268 MjAwOS0xMS0xMSAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCSog ZGNhY2hlLmMgKGRjYWNoZV9ibG9jayk6IFJlcGxhY2UgbWVtYmVyIG5ld2Vy IHdpdGggbmV4dCxwcmV2LgoJKGRjYWNoZV9zdHJ1Y3QpOiBEZWxldGUgbWVt YmVyIG5ld2VzdC4KCShibG9ja19mdW5jKTogTmV3IHR5cGVkZWYuCgkoYXBw ZW5kX2Jsb2NrLCByZW1vdmVfYmxvY2ssIGZvcl9lYWNoX2Jsb2NrKTogTmV3 IGZ1bmN0aW9ucy4KCShpbnZhbGlkYXRlX2Jsb2NrLCBmcmVlX2Jsb2NrKTog TmV3IGZ1bmN0aW9ucy4KCShkY2FjaGVfaW52YWxpZGF0ZSk6IFVwZGF0ZQoJ KGRjYWNoZV9pbnZhbGlkYXRlX2xpbmUsIGRjYWNoZV9hbGxvYyk6IFVwZGF0 ZSB0byB1c2UgbmV3IGxpc3QKCWFjY2Vzc29ycy4KCShkY2FjaGVfZnJlZSk6 IERpdHRvLiAgRml4IG1lbW9yeSBsZWFrLgoKSW5kZXg6IGRjYWNoZS5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n ZGIvZGNhY2hlLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzcKZGlmZiAt dSAtcCAtcjEuMzcgZGNhY2hlLmMKLS0tIGRjYWNoZS5jCTEwIE5vdiAyMDA5 IDE4OjM2OjUwIC0wMDAwCTEuMzcKKysrIGRjYWNoZS5jCTExIE5vdiAyMDA5 IDIzOjEwOjMxIC0wMDAwCkBAIC04OCw3ICs4OCwxMCBAQAogCiBzdHJ1Y3Qg ZGNhY2hlX2Jsb2NrCiB7Ci0gIHN0cnVjdCBkY2FjaGVfYmxvY2sgKm5ld2Vy OwkvKiBmb3IgTFJVIGFuZCBmcmVlIGxpc3QgKi8KKyAgLyogZm9yIGxlYXN0 LXJlY2VudGx5LWFsbG9jYXRlZCBhbmQgZnJlZSBsaXN0cyAqLworICBzdHJ1 Y3QgZGNhY2hlX2Jsb2NrICpwcmV2OworICBzdHJ1Y3QgZGNhY2hlX2Jsb2Nr ICpuZXh0OworCiAgIENPUkVfQUREUiBhZGRyOwkJLyogYWRkcmVzcyBvZiBk YXRhICovCiAgIGdkYl9ieXRlIGRhdGFbTElORV9TSVpFXTsJLyogYnl0ZXMg YXQgZ2l2ZW4gYWRkcmVzcyAqLwogICBpbnQgcmVmczsJCQkvKiAjIGhpdHMg Ki8KQEAgLTk3LDkgKzEwMCwxMCBAQCBzdHJ1Y3QgZGNhY2hlX2Jsb2NrCiBz dHJ1Y3QgZGNhY2hlX3N0cnVjdAogewogICBzcGxheV90cmVlIHRyZWU7Ci0g IHN0cnVjdCBkY2FjaGVfYmxvY2sgKm9sZGVzdDsKLSAgc3RydWN0IGRjYWNo ZV9ibG9jayAqbmV3ZXN0OworICBzdHJ1Y3QgZGNhY2hlX2Jsb2NrICpvbGRl c3Q7IC8qIGxlYXN0LXJlY2VudGx5LWFsbG9jYXRlZCBsaXN0ICovCiAKKyAg LyogVGhlIGZyZWUgbGlzdCBpcyBtYWludGFpbmVkIGlkZW50aWNhbGx5IHRv IE9MREVTVCB0byBzaW1wbGlmeQorICAgICB0aGUgY29kZTogd2Ugb25seSBu ZWVkIG9uZSBzZXQgb2YgYWNjZXNzb3JzLiAgKi8KICAgc3RydWN0IGRjYWNo ZV9ibG9jayAqZnJlZWxpc3Q7CiAKICAgLyogVGhlIG51bWJlciBvZiBpbi11 c2UgbGluZXMgaW4gdGhlIGNhY2hlLiAgKi8KQEAgLTEwOSw2ICsxMTMsOCBA QCBzdHJ1Y3QgZGNhY2hlX3N0cnVjdAogICBwdGlkX3QgcHRpZDsKIH07CiAK K3R5cGVkZWYgdm9pZCAoYmxvY2tfZnVuYykgKHN0cnVjdCBkY2FjaGVfYmxv Y2sgKmJsb2NrLCB2b2lkICpwYXJhbSk7CisKIHN0YXRpYyBzdHJ1Y3QgZGNh Y2hlX2Jsb2NrICpkY2FjaGVfaGl0IChEQ0FDSEUgKmRjYWNoZSwgQ09SRV9B RERSIGFkZHIpOwogCiBzdGF0aWMgaW50IGRjYWNoZV93cml0ZV9saW5lIChE Q0FDSEUgKmRjYWNoZSwgc3RydWN0IGRjYWNoZV9ibG9jayAqZGIpOwpAQCAt MTMyLDI4ICsxMzgsOTMgQEAgc2hvd19kY2FjaGVfZW5hYmxlZF9wIChzdHJ1 Y3QgdWlfZmlsZSAqZgogCiBzdGF0aWMgRENBQ0hFICpsYXN0X2NhY2hlOyAv KiBVc2VkIGJ5IGluZm8gZGNhY2hlICovCiAKLS8qIEZyZWUgYWxsIHRoZSBk YXRhIGNhY2hlIGJsb2NrcywgdGh1cyBkaXNjYXJkaW5nIGFsbCBjYWNoZWQg ZGF0YS4gICovCisvKiBBcHBlbmQgQkxPQ0sgdG8gY2lyY3VsYXIgYmxvY2sg bGlzdCBzdGFydGluZyBhdCBCTElTVC4KKyAgIFRoZSBibG9jayBpcyBhcHBl bmRlZCBmb3IgdGhlIGxlYXN0LXJlY2VudGx5LWFsbG9jYXRlZCBsaXN0J3Mg c2FrZToKKyAgIEJMSVNUIHBvaW50cyB0byB0aGUgb2xkZXN0IGJsb2NrLiAg Ki8KIAotdm9pZAotZGNhY2hlX2ludmFsaWRhdGUgKERDQUNIRSAqZGNhY2hl KQorc3RhdGljIHZvaWQKK2FwcGVuZF9ibG9jayAoc3RydWN0IGRjYWNoZV9i bG9jayAqKmJsaXN0LCBzdHJ1Y3QgZGNhY2hlX2Jsb2NrICpibG9jaykKIHsK LSAgc3RydWN0IGRjYWNoZV9ibG9jayAqYmxvY2ssICpuZXh0OworICBpZiAo KmJsaXN0KQorICAgIHsKKyAgICAgIGJsb2NrLT5uZXh0ID0gKmJsaXN0Owor ICAgICAgYmxvY2stPnByZXYgPSAoKmJsaXN0KS0+cHJldjsKKyAgICAgIGJs b2NrLT5wcmV2LT5uZXh0ID0gYmxvY2s7CisgICAgICAoKmJsaXN0KS0+cHJl diA9IGJsb2NrOworICAgICAgLyogV2UgZG9uJ3QgdXBkYXRlICpCTElTVCBo ZXJlIHRvIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCBmb3IgdGhlCisJ IGxlYXN0LXJlY2VudGx5LWFsbG9jYXRlZCBsaXN0ICpCTElTVCBwb2ludHMg dG8gdGhlIG9sZGVzdCBibG9jay4gICovCisgICAgfQorICBlbHNlCisgICAg eworICAgICAgYmxvY2stPm5leHQgPSBibG9jazsKKyAgICAgIGJsb2NrLT5w cmV2ID0gYmxvY2s7CisgICAgICAqYmxpc3QgPSBibG9jazsKKyAgICB9Cit9 CiAKLSAgYmxvY2sgPSBkY2FjaGUtPm9sZGVzdDsKKy8qIFJlbW92ZSBCTE9D SyBmcm9tIGNpcmN1bGFyIGJsb2NrIGxpc3QgQkxJU1QuICAqLwogCi0gIHdo aWxlIChibG9jaykKK3N0YXRpYyB2b2lkCityZW1vdmVfYmxvY2sgKHN0cnVj dCBkY2FjaGVfYmxvY2sgKipibGlzdCwgc3RydWN0IGRjYWNoZV9ibG9jayAq YmxvY2spCit7CisgIGlmIChibG9jay0+bmV4dCA9PSBibG9jaykKKyAgICB7 CisgICAgICAqYmxpc3QgPSBOVUxMOworICAgIH0KKyAgZWxzZQogICAgIHsK LSAgICAgIHNwbGF5X3RyZWVfcmVtb3ZlIChkY2FjaGUtPnRyZWUsIChzcGxh eV90cmVlX2tleSkgYmxvY2stPmFkZHIpOwotICAgICAgbmV4dCA9IGJsb2Nr LT5uZXdlcjsKKyAgICAgIGJsb2NrLT5uZXh0LT5wcmV2ID0gYmxvY2stPnBy ZXY7CisgICAgICBibG9jay0+cHJldi0+bmV4dCA9IGJsb2NrLT5uZXh0Owor ICAgICAgLyogSWYgd2UgcmVtb3ZlZCB0aGUgYmxvY2sgKkJMSVNUIHBvaW50 cyB0bywgc2hpZnQgaXQgdG8gdGhlIG5leHQgYmxvY2sKKwkgdG8gbWFpbnRh aW4gdGhlIGludmFyaWFudCB0aGF0IGZvciB0aGUgbGVhc3QtcmVjZW50bHkt YWxsb2NhdGVkIGxpc3QKKwkgKkJMSVNUIHBvaW50cyB0byB0aGUgb2xkZXN0 IGJsb2NrLiAgKi8KKyAgICAgIGlmICgqYmxpc3QgPT0gYmxvY2spCisJKmJs aXN0ID0gYmxvY2stPm5leHQ7CisgICAgfQorfQogCi0gICAgICBibG9jay0+ bmV3ZXIgPSBkY2FjaGUtPmZyZWVsaXN0OwotICAgICAgZGNhY2hlLT5mcmVl bGlzdCA9IGJsb2NrOworLyogSXRlcmF0ZSBvdmVyIGFsbCBlbGVtZW50cyBp biBCTElTVCwgY2FsbGluZyBGVU5DLgorICAgUEFSQU0gaXMgcGFzc2VkIHRv IEZVTkMuCisgICBGVU5DIG1heSByZW1vdmUgdGhlIGJsb2NrIGl0J3MgcGFz c2VkLCBidXQgb25seSB0aGF0IGJsb2NrLiAgKi8KIAotICAgICAgYmxvY2sg PSBuZXh0Oworc3RhdGljIHZvaWQKK2Zvcl9lYWNoX2Jsb2NrIChzdHJ1Y3Qg ZGNhY2hlX2Jsb2NrICoqYmxpc3QsIGJsb2NrX2Z1bmMgKmZ1bmMsIHZvaWQg KnBhcmFtKQoreworICBzdHJ1Y3QgZGNhY2hlX2Jsb2NrICpkYjsKKworICBp ZiAoKmJsaXN0ID09IE5VTEwpCisgICAgcmV0dXJuOworCisgIGRiID0gKmJs aXN0OworICBkbworICAgIHsKKyAgICAgIHN0cnVjdCBkY2FjaGVfYmxvY2sg Km5leHQgPSBkYi0+bmV4dDsKKworICAgICAgZnVuYyAoZGIsIHBhcmFtKTsK KyAgICAgIGRiID0gbmV4dDsKICAgICB9CisgIHdoaWxlICgqYmxpc3QgJiYg ZGIgIT0gKmJsaXN0KTsKK30KKworLyogQkxPQ0tfRlVOQyBmdW5jdGlvbiBm b3IgZGNhY2hlX2ludmFsaWRhdGUuICAqLworCitzdGF0aWMgdm9pZAoraW52 YWxpZGF0ZV9ibG9jayAoc3RydWN0IGRjYWNoZV9ibG9jayAqYmxvY2ssIHZv aWQgKnBhcmFtKQoreworICBEQ0FDSEUgKmRjYWNoZSA9IChEQ0FDSEUgKikg cGFyYW07CisKKyAgc3BsYXlfdHJlZV9yZW1vdmUgKGRjYWNoZS0+dHJlZSwg KHNwbGF5X3RyZWVfa2V5KSBibG9jay0+YWRkcik7CisgIGFwcGVuZF9ibG9j ayAoJmRjYWNoZS0+ZnJlZWxpc3QsIGJsb2NrKTsKK30KKworLyogRnJlZSBh bGwgdGhlIGRhdGEgY2FjaGUgYmxvY2tzLCB0aHVzIGRpc2NhcmRpbmcgYWxs IGNhY2hlZCBkYXRhLiAgKi8KKwordm9pZAorZGNhY2hlX2ludmFsaWRhdGUg KERDQUNIRSAqZGNhY2hlKQoreworICBmb3JfZWFjaF9ibG9jayAoJmRjYWNo ZS0+b2xkZXN0LCBpbnZhbGlkYXRlX2Jsb2NrLCBkY2FjaGUpOwogCiAgIGRj YWNoZS0+b2xkZXN0ID0gTlVMTDsKLSAgZGNhY2hlLT5uZXdlc3QgPSBOVUxM OwogICBkY2FjaGUtPnNpemUgPSAwOwogICBkY2FjaGUtPnB0aWQgPSBudWxs X3B0aWQ7CiB9CkBAIC0xNjgsOCArMjM5LDggQEAgZGNhY2hlX2ludmFsaWRh dGVfbGluZSAoRENBQ0hFICpkY2FjaGUsIAogICBpZiAoZGIpCiAgICAgewog ICAgICAgc3BsYXlfdHJlZV9yZW1vdmUgKGRjYWNoZS0+dHJlZSwgKHNwbGF5 X3RyZWVfa2V5KSBkYi0+YWRkcik7Ci0gICAgICBkYi0+bmV3ZXIgPSBkY2Fj aGUtPmZyZWVsaXN0OwotICAgICAgZGNhY2hlLT5mcmVlbGlzdCA9IGRiOwor ICAgICAgcmVtb3ZlX2Jsb2NrICgmZGNhY2hlLT5vbGRlc3QsIGRiKTsKKyAg ICAgIGFwcGVuZF9ibG9jayAoJmRjYWNoZS0+ZnJlZWxpc3QsIGRiKTsKICAg ICAgIC0tZGNhY2hlLT5zaXplOwogICAgIH0KIH0KQEAgLTI1MSw5ICszMjIs OSBAQCBkY2FjaGVfYWxsb2MgKERDQUNIRSAqZGNhY2hlLCBDT1JFX0FERFIg CiAKICAgaWYgKGRjYWNoZS0+c2l6ZSA+PSBEQ0FDSEVfU0laRSkKICAgICB7 Ci0gICAgICAvKiBFdmljdCB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZCBsaW5l LiAgKi8KKyAgICAgIC8qIEV2aWN0IHRoZSBsZWFzdCByZWNlbnRseSBhbGxv Y2F0ZWQgbGluZS4gICovCiAgICAgICBkYiA9IGRjYWNoZS0+b2xkZXN0Owot ICAgICAgZGNhY2hlLT5vbGRlc3QgPSBkYi0+bmV3ZXI7CisgICAgICByZW1v dmVfYmxvY2sgKCZkY2FjaGUtPm9sZGVzdCwgZGIpOwogCiAgICAgICBzcGxh eV90cmVlX3JlbW92ZSAoZGNhY2hlLT50cmVlLCAoc3BsYXlfdHJlZV9rZXkp IGRiLT5hZGRyKTsKICAgICB9CkBAIC0yNjEsNyArMzMyLDcgQEAgZGNhY2hl X2FsbG9jIChEQ0FDSEUgKmRjYWNoZSwgQ09SRV9BRERSIAogICAgIHsKICAg ICAgIGRiID0gZGNhY2hlLT5mcmVlbGlzdDsKICAgICAgIGlmIChkYikKLSAg ICAgICAgZGNhY2hlLT5mcmVlbGlzdCA9IGRiLT5uZXdlcjsKKwlyZW1vdmVf YmxvY2sgKCZkY2FjaGUtPmZyZWVsaXN0LCBkYik7CiAgICAgICBlbHNlCiAJ ZGIgPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBkY2FjaGVfYmxvY2spKTsK IApAQCAtMjY5LDE2ICszNDAsMTAgQEAgZGNhY2hlX2FsbG9jIChEQ0FDSEUg KmRjYWNoZSwgQ09SRV9BRERSIAogICAgIH0KIAogICBkYi0+YWRkciA9IE1B U0sgKGFkZHIpOwotICBkYi0+bmV3ZXIgPSBOVUxMOwogICBkYi0+cmVmcyA9 IDA7CiAKLSAgaWYgKGRjYWNoZS0+bmV3ZXN0KQotICAgIGRjYWNoZS0+bmV3 ZXN0LT5uZXdlciA9IGRiOwotCi0gIGRjYWNoZS0+bmV3ZXN0ID0gZGI7Ci0K LSAgaWYgKCFkY2FjaGUtPm9sZGVzdCkKLSAgICBkY2FjaGUtPm9sZGVzdCA9 IGRiOworICAvKiBQdXQgREIgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwgaXQn cyB0aGUgbmV3ZXN0LiAgKi8KKyAgYXBwZW5kX2Jsb2NrICgmZGNhY2hlLT5v bGRlc3QsIGRiKTsKIAogICBzcGxheV90cmVlX2luc2VydCAoZGNhY2hlLT50 cmVlLCAoc3BsYXlfdHJlZV9rZXkpIGRiLT5hZGRyLAogCQkgICAgIChzcGxh eV90cmVlX3ZhbHVlKSBkYik7CkBAIC0zNTYsNyArNDIxLDYgQEAgZGNhY2hl X2luaXQgKHZvaWQpCiAJCQkJIE5VTEwpOwogCiAgIGRjYWNoZS0+b2xkZXN0 ID0gTlVMTDsKLSAgZGNhY2hlLT5uZXdlc3QgPSBOVUxMOwogICBkY2FjaGUt PmZyZWVsaXN0ID0gTlVMTDsKICAgZGNhY2hlLT5zaXplID0gMDsKICAgZGNh Y2hlLT5wdGlkID0gbnVsbF9wdGlkOwpAQCAtMzY1LDIyICs0MjksMjUgQEAg ZGNhY2hlX2luaXQgKHZvaWQpCiAgIHJldHVybiBkY2FjaGU7CiB9CiAKKy8q IEJMT0NLX0ZVTkMgcm91dGluZSBmb3IgZGNhY2hlX2ZyZWUuICAqLworCitz dGF0aWMgdm9pZAorZnJlZV9ibG9jayAoc3RydWN0IGRjYWNoZV9ibG9jayAq YmxvY2ssIHZvaWQgKnBhcmFtKQoreworICBmcmVlIChibG9jayk7Cit9CisK IC8qIEZyZWUgYSBkYXRhIGNhY2hlLiAgKi8KIAogdm9pZAogZGNhY2hlX2Zy ZWUgKERDQUNIRSAqZGNhY2hlKQogewotICBzdHJ1Y3QgZGNhY2hlX2Jsb2Nr ICpkYiwgKm5leHQ7Ci0KICAgaWYgKGxhc3RfY2FjaGUgPT0gZGNhY2hlKQog ICAgIGxhc3RfY2FjaGUgPSBOVUxMOwogCiAgIHNwbGF5X3RyZWVfZGVsZXRl IChkY2FjaGUtPnRyZWUpOwotICBmb3IgKGRiID0gZGNhY2hlLT5mcmVlbGlz dDsgZGIgIT0gTlVMTDsgZGIgPSBuZXh0KQotICAgIHsKLSAgICAgIG5leHQg PSBkYi0+bmV3ZXI7Ci0gICAgICB4ZnJlZSAoZGIpOwotICAgIH0KKyAgZm9y X2VhY2hfYmxvY2sgKCZkY2FjaGUtPm9sZGVzdCwgZnJlZV9ibG9jaywgTlVM TCk7CisgIGZvcl9lYWNoX2Jsb2NrICgmZGNhY2hlLT5mcmVlbGlzdCwgZnJl ZV9ibG9jaywgTlVMTCk7CiAgIHhmcmVlIChkY2FjaGUpOwogfQogCg== --0016e6d56640311003047820e7b8--