Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Dec 2013 16:46:11 +0100 (CET)
From:      krichy@tvnetwork.hu
To:        freebsd-fs@freebsd.org
Cc:        pawel@dawidek.net
Subject:   Re: kern/184677 / ZFS snapshot handling deadlocks
Message-ID:  <alpine.DEB.2.10.1312191629370.4344@krichy.tvnetwork.hu>
In-Reply-To: <alpine.DEB.2.10.1312171326520.7714@krichy.tvnetwork.hu>
References:  <alpine.DEB.2.10.1312161647410.11599@krichy.tvnetwork.hu> <alpine.DEB.2.10.1312171326520.7714@krichy.tvnetwork.hu>

next in thread | previous in thread | raw e-mail | index | archive | help
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--1030603365-686922855-1387467971=:4344
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Dear devs,

I am attaching a more clear patch/fix for my snapshot handling issues 
(0002), but I would be happy if some ZFS expert would comment it. I am 
trying to solve it at least for two weeks now, and an ACK or a NACK would 
be nice from someone. Also a commit is reverted since it also caused 
deadlocks. I've read its comments, which also eliminates deadlocks, but I 
did not find any reference how to produce that deadlock. In my view 
reverting that makes my issues disappear, but I dont know what new cases 
will it rise.

I've rewritten traverse() to make more like upstream, added two extra 
VN_HOLD()s to snapdir_lookup() when traverse returned the same vnode what 
was passed to it (I dont know even that upon creating a snapshot vnode why 
is that extra two holds needed for the vnode.) And unfortunately, due to 
FreeBSD calls vop_inactive callbacks with vnodes locked, that could also 
cause deadlocks, so zfsctl_snapshot_inactive() and 
zfsctl_snapshot_vptocnp() has been rewritten to work that around.

After this, one may also get a deadlock, when a simple access would call 
into zfsctl_snapshot_lookup(). The documentation says, that those vnodes 
should always be covered, but after some stress test, sometimes we hit 
that call, and that can cause again deadlocks. In our environment I've 
just uncommented that callback, which returns ENODIR on some calls, but at 
least not a deadlock.

The attached script can be used to reproduce my cases (would one confirm 
that?), and after the patches applied, they disappear (confirm?).

Thanks,


Kojedzinszky Richard
Euronet Magyarorszag Informatikai Zrt.

On Tue, 17 Dec 2013, krichy@tvnetwork.hu wrote:

> Date: Tue, 17 Dec 2013 14:50:16 +0100 (CET)
> From: krichy@tvnetwork.hu
> To: pjd@freebsd.org
> Cc: freebsd-fs@freebsd.org
> Subject: Re: kern/184677 (fwd)
> 
> Dear devs,
>
> I will sum up my experience regarding the issue:
>
> The sympton is that a concurrent 'zfs send -R' and some activity on the 
> snapshot dir (or in the snapshot) may cause a deadlock.
>
> After investigating the problem, I found that zfs send umounts the snapshots, 
> and that causes the deadlock, so later I tested only with concurrent umount 
> and the "activity". More later I found that listing the snapshots in 
> .zfs/snapshot/ and unounting them can cause the found deadlock, so I used 
> them for the tests. But for my surprise, instead of a deadlock, a recursive 
> lock panic has arised.
>
> The vnode for the ".zfs/snapshot/" directory contains zfs's zfsctl_snapdir_t 
> structure (sdp). This contains a tree of mounted snapshots, and each entry 
> (sep) contains the vnode of entry on which the snapshot is mounted on top 
> (se_root). The strange is that the se_root member does not hold a reference 
> for the vnode, just a simple pointer to it.
>
> Upon entry lookup (zfsctl_snapdir_lookup()) the "snapshot" vnode is locked, 
> the zfsctl_snapdir_t's tree is locked, and searched for the mount if it 
> exists already. If it founds no entry, does the mount. In the case of an 
> entry was found, the se_root member contains the vnode which the snapshot is 
> mounted on. Thus, a reference is taken for it, and the traverse() call will 
> resolve to the real root vnode of the mounted snapshot, returning it as 
> locked. (Examining the traverse() code I've found that it did not follow 
> FreeBSD's lock order recommendation described in sys/kern/vfs_subr.c.)
>
> On the other way, when an umount is issued, the se_root vnode looses its last 
> reference (as only the mountpoint holds one for it), it goes through the 
> vinactive() path, to zfsctl_snapshot_inactive(). In FreeBSD this is called 
> with a locked vnode, so this is a deadlock race condition. While 
> zfsctl_snapdir_lookup() holds the mutex for the sdp tree, and traverse() 
> tries to acquire the se_root, zfsctl_snapshot_inactive() holds the lock on 
> se_root while tries to access the sdp lock.
>
> The zfsctl_snapshot_inactive() has an if statement checking the v_usecount, 
> which is incremented in zfsctl_snapdir_lookup(), but in that context it is 
> not covered by VI_LOCK. And it seems to me that FreeBSD's vinactive() path 
> assumes that the vnode remains inactive (as opposed to illumos, at least how 
> i read the code). So zfsctl_snapshot_inactive() must free resources while in 
> a locked state. I was a bit confused, and probably that is why the previously 
> posted patch is as is.
>
> Maybe if I had some clues on the directions of this problem, I could have 
> worked more for a nicer, shorter solution.
>
> Please someone comment on my post.
>
> Regards,
>
>
>
> Kojedzinszky Richard
> Euronet Magyarorszag Informatikai Zrt.
>
> On Mon, 16 Dec 2013, krichy@tvnetwork.hu wrote:
>
>> Date: Mon, 16 Dec 2013 16:52:16 +0100 (CET)
>> From: krichy@tvnetwork.hu
>> To: pjd@freebsd.org
>> Cc: freebsd-fs@freebsd.org
>> Subject: Re: kern/184677 (fwd)
>> 
>> Dear PJD,
>> 
>> I am a happy FreeBSD user, I am sure you've read my previous posts 
>> regarding some issues in ZFS. Please give some advice for me, where to look 
>> for solutions, or how could I help to resolve those issues.
>> 
>> Regards,
>> Kojedzinszky Richard
>> Euronet Magyarorszag Informatikai Zrt.
>> 
>> ---------- Forwarded message ----------
>> Date: Mon, 16 Dec 2013 15:23:06 +0100 (CET)
>> From: krichy@tvnetwork.hu
>> To: freebsd-fs@freebsd.org
>> Subject: Re: kern/184677
>> 
>> 
>> Seems that pjd did a change which eliminated the zfsdev_state_lock on Fri 
>> Aug 12 07:04:16 2011 +0000, which might introduced a new deadlock 
>> situation. Any comments on this?
>> 
>> 
>> Kojedzinszky Richard
>> Euronet Magyarorszag Informatikai Zrt.
>> 
>> On Mon, 16 Dec 2013, krichy@tvnetwork.hu wrote:
>> 
>>> Date: Mon, 16 Dec 2013 11:08:11 +0100 (CET)
>>> From: krichy@tvnetwork.hu
>>> To: freebsd-fs@freebsd.org
>>> Subject: kern/184677
>>> 
>>> Dear devs,
>>> 
>>> I've attached a patch, which makes the recursive lockmgr disappear, and 
>>> makes the reported bug to disappear. I dont know if I followed any 
>>> guidelines well, or not, but at least it works for me. Please some 
>>> ZFS/FreeBSD fs expert review it, and fix it where it needed.
>>> 
>>> But unfortunately, my original problem is still not solved, maybe the same 
>>> as Ryan's: 
>>> http://lists.freebsd.org/pipermail/freebsd-fs/2013-December/018707.html
>>> 
>>> Tracing the problem down is that zfsctl_snapdir_lookup() tries to acquire 
>>> spa_namespace_lock while when finishing a zfs send -R does a 
>>> zfsdev_close(), and that also holds the same mutex. And this causes a 
>>> deadlock scenario. I looked at illumos's code, and for some reason they 
>>> use another mutex on zfsdev_close(), which therefore may not deadlock with 
>>> zfsctl_snapdir_lookup(). But I am still investigating the problem.
>>> 
>>> I would like to help making ZFS more stable on freebsd also with its whole 
>>> functionality. I would be very thankful if some expert would give some 
>>> advice, how to solve these bugs. PJD, Steven, Xin?
>>> 
>>> Thanks in advance,
>>> 
>>> 
>>> Kojedzinszky Richard
>>> Euronet Magyarorszag Informatikai Zrt.
>> _______________________________________________
>> freebsd-fs@freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-fs
>> To unsubscribe, send any mail to "freebsd-fs-unsubscribe@freebsd.org"
>> 
>
--1030603365-686922855-1387467971=:4344
Content-Type: TEXT/x-diff; name=0001-Revert-Eliminate-the-zfsdev_state_lock-entirely-and-.patch
Content-Transfer-Encoding: BASE64
Content-ID: <alpine.DEB.2.10.1312191646111.4344@krichy.tvnetwork.hu>
Content-Description: 
Content-Disposition: attachment; filename=0001-Revert-Eliminate-the-zfsdev_state_lock-entirely-and-.patch

RnJvbSAzOTI5OGRhODM4ZDAwNmFkMjI1ZTQxNTI5ZDdiN2YyNDBmY2NmZTcz
IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogUmljaGFyZCBLb2pl
ZHppbnN6a3kgPGtyaWNoeUBjZmxpbnV4Lmh1Pg0KRGF0ZTogTW9uLCAxNiBE
ZWMgMjAxMyAxNTozOToxMSArMDEwMA0KU3ViamVjdDogW1BBVENIIDEvMl0g
UmV2ZXJ0ICJFbGltaW5hdGUgdGhlIHpmc2Rldl9zdGF0ZV9sb2NrIGVudGly
ZWx5IGFuZA0KIHJlcGxhY2UgaXQgd2l0aCB0aGUiDQoNClRoaXMgcmV2ZXJ0
cyBjb21taXQgMWQ4OTcyYjNmMzUzZjk4NmViNWI4NWJjMTA4YjFjMGQ5NDZk
MzIxOC4NCg0KQ29uZmxpY3RzOg0KCXN5cy9jZGRsL2NvbnRyaWIvb3BlbnNv
bGFyaXMvdXRzL2NvbW1vbi9mcy96ZnMvenZvbC5jDQotLS0NCiAuLi4vb3Bl
bnNvbGFyaXMvdXRzL2NvbW1vbi9mcy96ZnMvc3lzL3pmc19pb2N0bC5oICB8
ICAgMSArDQogLi4uL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvemZzL3Zk
ZXZfZ2VvbS5jICAgICAgfCAgMTQgKystDQogLi4uL29wZW5zb2xhcmlzL3V0
cy9jb21tb24vZnMvemZzL3pmc19pb2N0bC5jICAgICAgfCAgMTYgKy0tDQog
Li4uL2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1vbi9mcy96ZnMvenZv
bC5jICAgfCAxMTkgKysrKysrKysrLS0tLS0tLS0tLS0tDQogNCBmaWxlcyBj
aGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCA4MCBkZWxldGlvbnMoLSkNCg0K
ZGlmZiAtLWdpdCBhL3N5cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRz
L2NvbW1vbi9mcy96ZnMvc3lzL3pmc19pb2N0bC5oIGIvc3lzL2NkZGwvY29u
dHJpYi9vcGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL3pmcy9zeXMvemZzX2lv
Y3RsLmgNCmluZGV4IGFmMmRlZjIuLjgyNzJjNGQgMTAwNjQ0DQotLS0gYS9z
eXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvemZz
L3N5cy96ZnNfaW9jdGwuaA0KKysrIGIvc3lzL2NkZGwvY29udHJpYi9vcGVu
c29sYXJpcy91dHMvY29tbW9uL2ZzL3pmcy9zeXMvemZzX2lvY3RsLmgNCkBA
IC0zODMsNiArMzgzLDcgQEAgZXh0ZXJuIHZvaWQgKnpmc2Rldl9nZXRfc29m
dF9zdGF0ZShtaW5vcl90IG1pbm9yLA0KIGV4dGVybiBtaW5vcl90IHpmc2Rl
dl9taW5vcl9hbGxvYyh2b2lkKTsNCiANCiBleHRlcm4gdm9pZCAqemZzZGV2
X3N0YXRlOw0KK2V4dGVybiBrbXV0ZXhfdCB6ZnNkZXZfc3RhdGVfbG9jazsN
CiANCiAjZW5kaWYJLyogX0tFUk5FTCAqLw0KIA0KZGlmZiAtLWdpdCBhL3N5
cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1vbi9mcy96ZnMv
dmRldl9nZW9tLmMgYi9zeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0
cy9jb21tb24vZnMvemZzL3ZkZXZfZ2VvbS5jDQppbmRleCAxNTY4NWE1Li41
YzNlOWYzIDEwMDY0NA0KLS0tIGEvc3lzL2NkZGwvY29udHJpYi9vcGVuc29s
YXJpcy91dHMvY29tbW9uL2ZzL3pmcy92ZGV2X2dlb20uYw0KKysrIGIvc3lz
L2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL3pmcy92
ZGV2X2dlb20uYw0KQEAgLTU4MSw3ICs1ODEsNyBAQCB2ZGV2X2dlb21fb3Bl
bih2ZGV2X3QgKnZkLCB1aW50NjRfdCAqcHNpemUsIHVpbnQ2NF90ICptYXhf
cHNpemUsDQogCXN0cnVjdCBnX3Byb3ZpZGVyICpwcDsNCiAJc3RydWN0IGdf
Y29uc3VtZXIgKmNwOw0KIAlzaXplX3QgYnVmc2l6ZTsNCi0JaW50IGVycm9y
Ow0KKwlpbnQgZXJyb3IsIGxvY2s7DQogDQogCS8qDQogCSAqIFdlIG11c3Qg
aGF2ZSBhIHBhdGhuYW1lLCBhbmQgaXQgbXVzdCBiZSBhYnNvbHV0ZS4NCkBA
IC01OTMsNiArNTkzLDEyIEBAIHZkZXZfZ2VvbV9vcGVuKHZkZXZfdCAqdmQs
IHVpbnQ2NF90ICpwc2l6ZSwgdWludDY0X3QgKm1heF9wc2l6ZSwNCiANCiAJ
dmQtPnZkZXZfdHNkID0gTlVMTDsNCiANCisJaWYgKG11dGV4X293bmVkKCZz
cGFfbmFtZXNwYWNlX2xvY2spKSB7DQorCQltdXRleF9leGl0KCZzcGFfbmFt
ZXNwYWNlX2xvY2spOw0KKwkJbG9jayA9IDE7DQorCX0gZWxzZSB7DQorCQls
b2NrID0gMDsNCisJfQ0KIAlEUk9QX0dJQU5UKCk7DQogCWdfdG9wb2xvZ3lf
bG9jaygpOw0KIAllcnJvciA9IDA7DQpAQCAtNjI0LDcgKzYzMCwxMSBAQCB2
ZGV2X2dlb21fb3Blbih2ZGV2X3QgKnZkLCB1aW50NjRfdCAqcHNpemUsIHVp
bnQ2NF90ICptYXhfcHNpemUsDQogCSAgICAhSVNQMihjcC0+cHJvdmlkZXIt
PnNlY3RvcnNpemUpKSB7DQogCQlaRlNfTE9HKDEsICJQcm92aWRlciAlcyBo
YXMgdW5zdXBwb3J0ZWQgc2VjdG9yc2l6ZS4iLA0KIAkJICAgIHZkLT52ZGV2
X3BhdGgpOw0KKw0KKwkJZ190b3BvbG9neV9sb2NrKCk7DQogCQl2ZGV2X2dl
b21fZGV0YWNoKGNwLCAwKTsNCisJCWdfdG9wb2xvZ3lfdW5sb2NrKCk7DQor
DQogCQllcnJvciA9IEVJTlZBTDsNCiAJCWNwID0gTlVMTDsNCiAJfSBlbHNl
IGlmIChjcC0+YWN3ID09IDAgJiYgKHNwYV9tb2RlKHZkLT52ZGV2X3NwYSkg
JiBGV1JJVEUpICE9IDApIHsNCkBAIC02NDcsNiArNjU3LDggQEAgdmRldl9n
ZW9tX29wZW4odmRldl90ICp2ZCwgdWludDY0X3QgKnBzaXplLCB1aW50NjRf
dCAqbWF4X3BzaXplLA0KIAl9DQogCWdfdG9wb2xvZ3lfdW5sb2NrKCk7DQog
CVBJQ0tVUF9HSUFOVCgpOw0KKwlpZiAobG9jaykNCisJCW11dGV4X2VudGVy
KCZzcGFfbmFtZXNwYWNlX2xvY2spOw0KIAlpZiAoY3AgPT0gTlVMTCkgew0K
IAkJdmQtPnZkZXZfc3RhdC52c19hdXggPSBWREVWX0FVWF9PUEVOX0ZBSUxF
RDsNCiAJCXJldHVybiAoZXJyb3IpOw0KZGlmZiAtLWdpdCBhL3N5cy9jZGRs
L2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1vbi9mcy96ZnMvemZzX2lv
Y3RsLmMgYi9zeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21t
b24vZnMvemZzL3pmc19pb2N0bC5jDQppbmRleCBlOWZiYTI2Li45MWJlY2Rl
IDEwMDY0NA0KLS0tIGEvc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91
dHMvY29tbW9uL2ZzL3pmcy96ZnNfaW9jdGwuYw0KKysrIGIvc3lzL2NkZGwv
Y29udHJpYi9vcGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL3pmcy96ZnNfaW9j
dGwuYw0KQEAgLTU2MzUsNyArNTYzNSw3IEBAIHpmc2Rldl9taW5vcl9hbGxv
Yyh2b2lkKQ0KIAlzdGF0aWMgbWlub3JfdCBsYXN0X21pbm9yOw0KIAltaW5v
cl90IG07DQogDQotCUFTU0VSVChNVVRFWF9IRUxEKCZzcGFfbmFtZXNwYWNl
X2xvY2spKTsNCisJQVNTRVJUKE1VVEVYX0hFTEQoJnpmc2Rldl9zdGF0ZV9s
b2NrKSk7DQogDQogCWZvciAobSA9IGxhc3RfbWlub3IgKyAxOyBtICE9IGxh
c3RfbWlub3I7IG0rKykgew0KIAkJaWYgKG0gPiBaRlNERVZfTUFYX01JTk9S
KQ0KQEAgLTU2NTUsNyArNTY1NSw3IEBAIHpmc19jdGxkZXZfaW5pdChzdHJ1
Y3QgY2RldiAqZGV2cCkNCiAJbWlub3JfdCBtaW5vcjsNCiAJemZzX3NvZnRf
c3RhdGVfdCAqenM7DQogDQotCUFTU0VSVChNVVRFWF9IRUxEKCZzcGFfbmFt
ZXNwYWNlX2xvY2spKTsNCisJQVNTRVJUKE1VVEVYX0hFTEQoJnpmc2Rldl9z
dGF0ZV9sb2NrKSk7DQogDQogCW1pbm9yID0gemZzZGV2X21pbm9yX2FsbG9j
KCk7DQogCWlmIChtaW5vciA9PSAwKQ0KQEAgLTU2NzYsNyArNTY3Niw3IEBA
IHpmc19jdGxkZXZfaW5pdChzdHJ1Y3QgY2RldiAqZGV2cCkNCiBzdGF0aWMg
dm9pZA0KIHpmc19jdGxkZXZfZGVzdHJveSh6ZnNfb25leGl0X3QgKnpvLCBt
aW5vcl90IG1pbm9yKQ0KIHsNCi0JQVNTRVJUKE1VVEVYX0hFTEQoJnNwYV9u
YW1lc3BhY2VfbG9jaykpOw0KKwlBU1NFUlQoTVVURVhfSEVMRCgmemZzZGV2
X3N0YXRlX2xvY2spKTsNCiANCiAJemZzX29uZXhpdF9kZXN0cm95KHpvKTsN
CiAJZGRpX3NvZnRfc3RhdGVfZnJlZSh6ZnNkZXZfc3RhdGUsIG1pbm9yKTsN
CkBAIC01NzA2LDkgKzU3MDYsOSBAQCB6ZnNkZXZfb3BlbihzdHJ1Y3QgY2Rl
diAqZGV2cCwgaW50IGZsYWcsIGludCBtb2RlLCBzdHJ1Y3QgdGhyZWFkICp0
ZCkNCiANCiAJLyogVGhpcyBpcyB0aGUgY29udHJvbCBkZXZpY2UuIEFsbG9j
YXRlIGEgbmV3IG1pbm9yIGlmIHJlcXVlc3RlZC4gKi8NCiAJaWYgKGZsYWcg
JiBGRVhDTCkgew0KLQkJbXV0ZXhfZW50ZXIoJnNwYV9uYW1lc3BhY2VfbG9j
ayk7DQorCQltdXRleF9lbnRlcigmemZzZGV2X3N0YXRlX2xvY2spOw0KIAkJ
ZXJyb3IgPSB6ZnNfY3RsZGV2X2luaXQoZGV2cCk7DQotCQltdXRleF9leGl0
KCZzcGFfbmFtZXNwYWNlX2xvY2spOw0KKwkJbXV0ZXhfZXhpdCgmemZzZGV2
X3N0YXRlX2xvY2spOw0KIAl9DQogDQogCXJldHVybiAoZXJyb3IpOw0KQEAg
LTU3MjMsMTQgKzU3MjMsMTQgQEAgemZzZGV2X2Nsb3NlKHZvaWQgKmRhdGEp
DQogCWlmIChtaW5vciA9PSAwKQ0KIAkJcmV0dXJuOw0KIA0KLQltdXRleF9l
bnRlcigmc3BhX25hbWVzcGFjZV9sb2NrKTsNCisJbXV0ZXhfZW50ZXIoJnpm
c2Rldl9zdGF0ZV9sb2NrKTsNCiAJem8gPSB6ZnNkZXZfZ2V0X3NvZnRfc3Rh
dGUobWlub3IsIFpTU1RfQ1RMREVWKTsNCiAJaWYgKHpvID09IE5VTEwpIHsN
Ci0JCW11dGV4X2V4aXQoJnNwYV9uYW1lc3BhY2VfbG9jayk7DQorCQltdXRl
eF9leGl0KCZ6ZnNkZXZfc3RhdGVfbG9jayk7DQogCQlyZXR1cm47DQogCX0N
CiAJemZzX2N0bGRldl9kZXN0cm95KHpvLCBtaW5vcik7DQotCW11dGV4X2V4
aXQoJnNwYV9uYW1lc3BhY2VfbG9jayk7DQorCW11dGV4X2V4aXQoJnpmc2Rl
dl9zdGF0ZV9sb2NrKTsNCiB9DQogDQogc3RhdGljIGludA0KZGlmZiAtLWdp
dCBhL3N5cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1vbi9m
cy96ZnMvenZvbC5jIGIvc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91
dHMvY29tbW9uL2ZzL3pmcy96dm9sLmMNCmluZGV4IDcyZDQ1MDIuLmFlYzUy
MTkgMTAwNjQ0DQotLS0gYS9zeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlz
L3V0cy9jb21tb24vZnMvemZzL3p2b2wuYw0KKysrIGIvc3lzL2NkZGwvY29u
dHJpYi9vcGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL3pmcy96dm9sLmMNCkBA
IC0xMDQsMTEgKzEwNCwxMiBAQCBzdGF0aWMgY2hhciAqenZvbF90YWcgPSAi
enZvbF90YWciOw0KICNkZWZpbmUJWlZPTF9EVU1QU0laRQkJImR1bXBzaXpl
Ig0KIA0KIC8qDQotICogVGhlIHNwYV9uYW1lc3BhY2VfbG9jayBwcm90ZWN0
cyB0aGUgemZzZGV2X3N0YXRlIHN0cnVjdHVyZSBmcm9tIGJlaW5nDQotICog
bW9kaWZpZWQgd2hpbGUgaXQncyBiZWluZyB1c2VkLCBlLmcuIGFuIG9wZW4g
dGhhdCBjb21lcyBpbiBiZWZvcmUgYQ0KLSAqIGNyZWF0ZSBmaW5pc2hlcy4g
IEl0IGFsc28gcHJvdGVjdHMgdGVtcG9yYXJ5IG9wZW5zIG9mIHRoZSBkYXRh
c2V0IHNvIHRoYXQsDQorICogVGhpcyBsb2NrIHByb3RlY3RzIHRoZSB6ZnNk
ZXZfc3RhdGUgc3RydWN0dXJlIGZyb20gYmVpbmcgbW9kaWZpZWQNCisgKiB3
aGlsZSBpdCdzIGJlaW5nIHVzZWQsIGUuZy4gYW4gb3BlbiB0aGF0IGNvbWVz
IGluIGJlZm9yZSBhIGNyZWF0ZQ0KKyAqIGZpbmlzaGVzLiAgSXQgYWxzbyBw
cm90ZWN0cyB0ZW1wb3Jhcnkgb3BlbnMgb2YgdGhlIGRhdGFzZXQgc28gdGhh
dCwNCiAgKiBlLmcuLCBhbiBvcGVuIGRvZXNuJ3QgZ2V0IGEgc3B1cmlvdXMg
RUJVU1kuDQogICovDQora211dGV4X3QgemZzZGV2X3N0YXRlX2xvY2s7DQog
c3RhdGljIHVpbnQzMl90IHp2b2xfbWlub3JzOw0KIA0KIHR5cGVkZWYgc3Ry
dWN0IHp2b2xfZXh0ZW50IHsNCkBAIC0yNDksNyArMjUwLDcgQEAgenZvbF9t
aW5vcl9sb29rdXAoY29uc3QgY2hhciAqbmFtZSkNCiAJc3RydWN0IGdfZ2Vv
bSAqZ3A7DQogCXp2b2xfc3RhdGVfdCAqenYgPSBOVUxMOw0KIA0KLQlBU1NF
UlQoTVVURVhfSEVMRCgmc3BhX25hbWVzcGFjZV9sb2NrKSk7DQorCUFTU0VS
VChNVVRFWF9IRUxEKCZ6ZnNkZXZfc3RhdGVfbG9jaykpOw0KIA0KIAlnX3Rv
cG9sb2d5X2xvY2soKTsNCiAJTElTVF9GT1JFQUNIKGdwLCAmemZzX3p2b2xf
Y2xhc3MuZ2VvbSwgZ2VvbSkgew0KQEAgLTQ2NSwxMSArNDY2LDExIEBAIHp2
b2xfbmFtZTJtaW5vcihjb25zdCBjaGFyICpuYW1lLCBtaW5vcl90ICptaW5v
cikNCiB7DQogCXp2b2xfc3RhdGVfdCAqenY7DQogDQotCW11dGV4X2VudGVy
KCZzcGFfbmFtZXNwYWNlX2xvY2spOw0KKwltdXRleF9lbnRlcigmemZzZGV2
X3N0YXRlX2xvY2spOw0KIAl6diA9IHp2b2xfbWlub3JfbG9va3VwKG5hbWUp
Ow0KIAlpZiAobWlub3IgJiYgenYpDQogCQkqbWlub3IgPSB6di0+enZfbWlu
b3I7DQotCW11dGV4X2V4aXQoJnNwYV9uYW1lc3BhY2VfbG9jayk7DQorCW11
dGV4X2V4aXQoJnpmc2Rldl9zdGF0ZV9sb2NrKTsNCiAJcmV0dXJuICh6diA/
IDAgOiAtMSk7DQogfQ0KICNlbmRpZgkvKiBzdW4gKi8NCkBAIC00ODksMTAg
KzQ5MCwxMCBAQCB6dm9sX2NyZWF0ZV9taW5vcihjb25zdCBjaGFyICpuYW1l
KQ0KIA0KIAlaRlNfTE9HKDEsICJDcmVhdGluZyBaVk9MICVzLi4uIiwgbmFt
ZSk7DQogDQotCW11dGV4X2VudGVyKCZzcGFfbmFtZXNwYWNlX2xvY2spOw0K
KwltdXRleF9lbnRlcigmemZzZGV2X3N0YXRlX2xvY2spOw0KIA0KIAlpZiAo
enZvbF9taW5vcl9sb29rdXAobmFtZSkgIT0gTlVMTCkgew0KLQkJbXV0ZXhf
ZXhpdCgmc3BhX25hbWVzcGFjZV9sb2NrKTsNCisJCW11dGV4X2V4aXQoJnpm
c2Rldl9zdGF0ZV9sb2NrKTsNCiAJCXJldHVybiAoU0VUX0VSUk9SKEVFWElT
VCkpOw0KIAl9DQogDQpAQCAtNTAwLDIwICs1MDEsMjAgQEAgenZvbF9jcmVh
dGVfbWlub3IoY29uc3QgY2hhciAqbmFtZSkNCiAJZXJyb3IgPSBkbXVfb2Jq
c2V0X293bihuYW1lLCBETVVfT1NUX1pWT0wsIEJfVFJVRSwgRlRBRywgJm9z
KTsNCiANCiAJaWYgKGVycm9yKSB7DQotCQltdXRleF9leGl0KCZzcGFfbmFt
ZXNwYWNlX2xvY2spOw0KKwkJbXV0ZXhfZXhpdCgmemZzZGV2X3N0YXRlX2xv
Y2spOw0KIAkJcmV0dXJuIChlcnJvcik7DQogCX0NCiANCiAjaWZkZWYgc3Vu
DQogCWlmICgobWlub3IgPSB6ZnNkZXZfbWlub3JfYWxsb2MoKSkgPT0gMCkg
ew0KIAkJZG11X29ianNldF9kaXNvd24ob3MsIEZUQUcpOw0KLQkJbXV0ZXhf
ZXhpdCgmc3BhX25hbWVzcGFjZV9sb2NrKTsNCisJCW11dGV4X2V4aXQoJnpm
c2Rldl9zdGF0ZV9sb2NrKTsNCiAJCXJldHVybiAoU0VUX0VSUk9SKEVOWElP
KSk7DQogCX0NCiANCiAJaWYgKGRkaV9zb2Z0X3N0YXRlX3phbGxvYyh6ZnNk
ZXZfc3RhdGUsIG1pbm9yKSAhPSBERElfU1VDQ0VTUykgew0KIAkJZG11X29i
anNldF9kaXNvd24ob3MsIEZUQUcpOw0KLQkJbXV0ZXhfZXhpdCgmc3BhX25h
bWVzcGFjZV9sb2NrKTsNCisJCW11dGV4X2V4aXQoJnpmc2Rldl9zdGF0ZV9s
b2NrKTsNCiAJCXJldHVybiAoU0VUX0VSUk9SKEVBR0FJTikpOw0KIAl9DQog
CSh2b2lkKSBkZGlfcHJvcF91cGRhdGVfc3RyaW5nKG1pbm9yLCB6ZnNfZGlw
LCBaVk9MX1BST1BfTkFNRSwNCkBAIC01MjUsNyArNTI2LDcgQEAgenZvbF9j
cmVhdGVfbWlub3IoY29uc3QgY2hhciAqbmFtZSkNCiAJICAgIG1pbm9yLCBE
RElfUFNFVURPLCAwKSA9PSBERElfRkFJTFVSRSkgew0KIAkJZGRpX3NvZnRf
c3RhdGVfZnJlZSh6ZnNkZXZfc3RhdGUsIG1pbm9yKTsNCiAJCWRtdV9vYmpz
ZXRfZGlzb3duKG9zLCBGVEFHKTsNCi0JCW11dGV4X2V4aXQoJnNwYV9uYW1l
c3BhY2VfbG9jayk7DQorCQltdXRleF9leGl0KCZ6ZnNkZXZfc3RhdGVfbG9j
ayk7DQogCQlyZXR1cm4gKFNFVF9FUlJPUihFQUdBSU4pKTsNCiAJfQ0KIA0K
QEAgLTUzNiw3ICs1MzcsNyBAQCB6dm9sX2NyZWF0ZV9taW5vcihjb25zdCBj
aGFyICpuYW1lKQ0KIAkJZGRpX3JlbW92ZV9taW5vcl9ub2RlKHpmc19kaXAs
IGNocmJ1Zik7DQogCQlkZGlfc29mdF9zdGF0ZV9mcmVlKHpmc2Rldl9zdGF0
ZSwgbWlub3IpOw0KIAkJZG11X29ianNldF9kaXNvd24ob3MsIEZUQUcpOw0K
LQkJbXV0ZXhfZXhpdCgmc3BhX25hbWVzcGFjZV9sb2NrKTsNCisJCW11dGV4
X2V4aXQoJnpmc2Rldl9zdGF0ZV9sb2NrKTsNCiAJCXJldHVybiAoU0VUX0VS
Uk9SKEVBR0FJTikpOw0KIAl9DQogDQpAQCAtNTg3LDcgKzU4OCw3IEBAIHp2
b2xfY3JlYXRlX21pbm9yKGNvbnN0IGNoYXIgKm5hbWUpDQogDQogCXp2b2xf
bWlub3JzKys7DQogDQotCW11dGV4X2V4aXQoJnNwYV9uYW1lc3BhY2VfbG9j
ayk7DQorCW11dGV4X2V4aXQoJnpmc2Rldl9zdGF0ZV9sb2NrKTsNCiANCiAJ
enZvbF9nZW9tX3J1bih6dik7DQogDQpAQCAtNjA5LDcgKzYxMCw3IEBAIHp2
b2xfcmVtb3ZlX3p2KHp2b2xfc3RhdGVfdCAqenYpDQogCW1pbm9yX3QgbWlu
b3IgPSB6di0+enZfbWlub3I7DQogI2VuZGlmDQogDQotCUFTU0VSVChNVVRF
WF9IRUxEKCZzcGFfbmFtZXNwYWNlX2xvY2spKTsNCisJQVNTRVJUKE1VVEVY
X0hFTEQoJnpmc2Rldl9zdGF0ZV9sb2NrKSk7DQogCWlmICh6di0+enZfdG90
YWxfb3BlbnMgIT0gMCkNCiAJCXJldHVybiAoU0VUX0VSUk9SKEVCVVNZKSk7
DQogDQpAQCAtNjM1LDE1ICs2MzYsMTUgQEAgenZvbF9yZW1vdmVfbWlub3Io
Y29uc3QgY2hhciAqbmFtZSkNCiAJenZvbF9zdGF0ZV90ICp6djsNCiAJaW50
IHJjOw0KIA0KLQltdXRleF9lbnRlcigmc3BhX25hbWVzcGFjZV9sb2NrKTsN
CisJbXV0ZXhfZW50ZXIoJnpmc2Rldl9zdGF0ZV9sb2NrKTsNCiAJaWYgKCh6
diA9IHp2b2xfbWlub3JfbG9va3VwKG5hbWUpKSA9PSBOVUxMKSB7DQotCQlt
dXRleF9leGl0KCZzcGFfbmFtZXNwYWNlX2xvY2spOw0KKwkJbXV0ZXhfZXhp
dCgmemZzZGV2X3N0YXRlX2xvY2spOw0KIAkJcmV0dXJuIChTRVRfRVJST1Io
RU5YSU8pKTsNCiAJfQ0KIAlnX3RvcG9sb2d5X2xvY2soKTsNCiAJcmMgPSB6
dm9sX3JlbW92ZV96dih6dik7DQogCWdfdG9wb2xvZ3lfdW5sb2NrKCk7DQot
CW11dGV4X2V4aXQoJnNwYV9uYW1lc3BhY2VfbG9jayk7DQorCW11dGV4X2V4
aXQoJnpmc2Rldl9zdGF0ZV9sb2NrKTsNCiAJcmV0dXJuIChyYyk7DQogfQ0K
IA0KQEAgLTc1NSw3ICs3NTYsNyBAQCB6dm9sX3VwZGF0ZV92b2xzaXplKG9i
anNldF90ICpvcywgdWludDY0X3Qgdm9sc2l6ZSkNCiAJZG11X3R4X3QgKnR4
Ow0KIAlpbnQgZXJyb3I7DQogDQotCUFTU0VSVChNVVRFWF9IRUxEKCZzcGFf
bmFtZXNwYWNlX2xvY2spKTsNCisJQVNTRVJUKE1VVEVYX0hFTEQoJnpmc2Rl
dl9zdGF0ZV9sb2NrKSk7DQogDQogCXR4ID0gZG11X3R4X2NyZWF0ZShvcyk7
DQogCWRtdV90eF9ob2xkX3phcCh0eCwgWlZPTF9aQVBfT0JKLCBUUlVFLCBO
VUxMKTsNCkBAIC03ODYsNyArNzg3LDcgQEAgenZvbF9yZW1vdmVfbWlub3Jz
KGNvbnN0IGNoYXIgKm5hbWUpDQogCW5hbWVsZW4gPSBzdHJsZW4obmFtZSk7
DQogDQogCURST1BfR0lBTlQoKTsNCi0JbXV0ZXhfZW50ZXIoJnNwYV9uYW1l
c3BhY2VfbG9jayk7DQorCW11dGV4X2VudGVyKCZ6ZnNkZXZfc3RhdGVfbG9j
ayk7DQogCWdfdG9wb2xvZ3lfbG9jaygpOw0KIA0KIAlMSVNUX0ZPUkVBQ0hf
U0FGRShncCwgJnpmc196dm9sX2NsYXNzLmdlb20sIGdlb20sIGdwdG1wKSB7
DQpAQCAtODA0LDcgKzgwNSw3IEBAIHp2b2xfcmVtb3ZlX21pbm9ycyhjb25z
dCBjaGFyICpuYW1lKQ0KIAl9DQogDQogCWdfdG9wb2xvZ3lfdW5sb2NrKCk7
DQotCW11dGV4X2V4aXQoJnNwYV9uYW1lc3BhY2VfbG9jayk7DQorCW11dGV4
X2V4aXQoJnpmc2Rldl9zdGF0ZV9sb2NrKTsNCiAJUElDS1VQX0dJQU5UKCk7
DQogfQ0KIA0KQEAgLTgxOCwxMCArODE5LDEwIEBAIHp2b2xfc2V0X3ZvbHNp
emUoY29uc3QgY2hhciAqbmFtZSwgbWFqb3JfdCBtYWosIHVpbnQ2NF90IHZv
bHNpemUpDQogCXVpbnQ2NF90IG9sZF92b2xzaXplID0gMFVMTDsNCiAJdWlu
dDY0X3QgcmVhZG9ubHk7DQogDQotCW11dGV4X2VudGVyKCZzcGFfbmFtZXNw
YWNlX2xvY2spOw0KKwltdXRleF9lbnRlcigmemZzZGV2X3N0YXRlX2xvY2sp
Ow0KIAl6diA9IHp2b2xfbWlub3JfbG9va3VwKG5hbWUpOw0KIAlpZiAoKGVy
cm9yID0gZG11X29ianNldF9ob2xkKG5hbWUsIEZUQUcsICZvcykpICE9IDAp
IHsNCi0JCW11dGV4X2V4aXQoJnNwYV9uYW1lc3BhY2VfbG9jayk7DQorCQlt
dXRleF9leGl0KCZ6ZnNkZXZfc3RhdGVfbG9jayk7DQogCQlyZXR1cm4gKGVy
cm9yKTsNCiAJfQ0KIA0KQEAgLTg4OCw3ICs4ODksNyBAQCB6dm9sX3NldF92
b2xzaXplKGNvbnN0IGNoYXIgKm5hbWUsIG1ham9yX3QgbWFqLCB1aW50NjRf
dCB2b2xzaXplKQ0KIG91dDoNCiAJZG11X29ianNldF9yZWxlKG9zLCBGVEFH
KTsNCiANCi0JbXV0ZXhfZXhpdCgmc3BhX25hbWVzcGFjZV9sb2NrKTsNCisJ
bXV0ZXhfZXhpdCgmemZzZGV2X3N0YXRlX2xvY2spOw0KIA0KIAlyZXR1cm4g
KGVycm9yKTsNCiB9DQpAQCAtODk5LDM2ICs5MDAsMTkgQEAgenZvbF9vcGVu
KHN0cnVjdCBnX3Byb3ZpZGVyICpwcCwgaW50IGZsYWcsIGludCBjb3VudCkN
CiB7DQogCXp2b2xfc3RhdGVfdCAqenY7DQogCWludCBlcnIgPSAwOw0KLQli
b29sZWFuX3QgbG9ja2VkID0gQl9GQUxTRTsNCiANCi0JLyoNCi0JICogUHJv
dGVjdCBhZ2FpbnN0IHJlY3Vyc2l2ZWx5IGVudGVyaW5nIHNwYV9uYW1lc3Bh
Y2VfbG9jaw0KLQkgKiB3aGVuIHNwYV9vcGVuKCkgaXMgdXNlZCBmb3IgYSBw
b29sIG9uIGEgKGxvY2FsKSBaVk9MKHMpLg0KLQkgKiBUaGlzIGlzIG5lZWRl
ZCBzaW5jZSB3ZSByZXBsYWNlZCB1cHN0cmVhbSB6ZnNkZXZfc3RhdGVfbG9j
aw0KLQkgKiB3aXRoIHNwYV9uYW1lc3BhY2VfbG9jayBpbiB0aGUgWlZPTCBj
b2RlLg0KLQkgKiBXZSBhcmUgdXNpbmcgdGhlIHNhbWUgdHJpY2sgYXMgc3Bh
X29wZW4oKS4NCi0JICogTm90ZSB0aGF0IGNhbGxzIGluIHp2b2xfZmlyc3Rf
b3BlbiB3aGljaCBuZWVkIHRvIHJlc29sdmUNCi0JICogcG9vbCBuYW1lIHRv
IGEgc3BhIG9iamVjdCB3aWxsIGVudGVyIHNwYV9vcGVuKCkNCi0JICogcmVj
dXJzaXZlbHksIGJ1dCB0aGF0IGZ1bmN0aW9uIGFscmVhZHkgaGFzIGFsbCB0
aGUNCi0JICogbmVjZXNzYXJ5IHByb3RlY3Rpb24uDQotCSAqLw0KLQlpZiAo
IU1VVEVYX0hFTEQoJnNwYV9uYW1lc3BhY2VfbG9jaykpIHsNCi0JCW11dGV4
X2VudGVyKCZzcGFfbmFtZXNwYWNlX2xvY2spOw0KLQkJbG9ja2VkID0gQl9U
UlVFOw0KLQl9DQorCW11dGV4X2VudGVyKCZ6ZnNkZXZfc3RhdGVfbG9jayk7
DQogDQogCXp2ID0gcHAtPnByaXZhdGU7DQogCWlmICh6diA9PSBOVUxMKSB7
DQotCQlpZiAobG9ja2VkKQ0KLQkJCW11dGV4X2V4aXQoJnNwYV9uYW1lc3Bh
Y2VfbG9jayk7DQorCQltdXRleF9leGl0KCZ6ZnNkZXZfc3RhdGVfbG9jayk7
DQogCQlyZXR1cm4gKFNFVF9FUlJPUihFTlhJTykpOw0KIAl9DQogDQogCWlm
ICh6di0+enZfdG90YWxfb3BlbnMgPT0gMCkNCiAJCWVyciA9IHp2b2xfZmly
c3Rfb3Blbih6dik7DQogCWlmIChlcnIpIHsNCi0JCWlmIChsb2NrZWQpDQot
CQkJbXV0ZXhfZXhpdCgmc3BhX25hbWVzcGFjZV9sb2NrKTsNCisJCW11dGV4
X2V4aXQoJnpmc2Rldl9zdGF0ZV9sb2NrKTsNCiAJCXJldHVybiAoZXJyKTsN
CiAJfQ0KIAlpZiAoKGZsYWcgJiBGV1JJVEUpICYmICh6di0+enZfZmxhZ3Mg
JiBaVk9MX1JET05MWSkpIHsNCkBAIC05NTAsMTUgKzkzNCwxMyBAQCB6dm9s
X29wZW4oc3RydWN0IGdfcHJvdmlkZXIgKnBwLCBpbnQgZmxhZywgaW50IGNv
dW50KQ0KICNlbmRpZg0KIA0KIAl6di0+enZfdG90YWxfb3BlbnMgKz0gY291
bnQ7DQotCWlmIChsb2NrZWQpDQotCQltdXRleF9leGl0KCZzcGFfbmFtZXNw
YWNlX2xvY2spOw0KKwltdXRleF9leGl0KCZ6ZnNkZXZfc3RhdGVfbG9jayk7
DQogDQogCXJldHVybiAoZXJyKTsNCiBvdXQ6DQogCWlmICh6di0+enZfdG90
YWxfb3BlbnMgPT0gMCkNCiAJCXp2b2xfbGFzdF9jbG9zZSh6dik7DQotCWlm
IChsb2NrZWQpDQotCQltdXRleF9leGl0KCZzcGFfbmFtZXNwYWNlX2xvY2sp
Ow0KKwltdXRleF9leGl0KCZ6ZnNkZXZfc3RhdGVfbG9jayk7DQogCXJldHVy
biAoZXJyKTsNCiB9DQogDQpAQCAtOTY4LDE4ICs5NTAsMTIgQEAgenZvbF9j
bG9zZShzdHJ1Y3QgZ19wcm92aWRlciAqcHAsIGludCBmbGFnLCBpbnQgY291
bnQpDQogew0KIAl6dm9sX3N0YXRlX3QgKnp2Ow0KIAlpbnQgZXJyb3IgPSAw
Ow0KLQlib29sZWFuX3QgbG9ja2VkID0gQl9GQUxTRTsNCiANCi0JLyogU2Vl
IGNvbW1lbnQgaW4genZvbF9vcGVuKCkuICovDQotCWlmICghTVVURVhfSEVM
RCgmc3BhX25hbWVzcGFjZV9sb2NrKSkgew0KLQkJbXV0ZXhfZW50ZXIoJnNw
YV9uYW1lc3BhY2VfbG9jayk7DQotCQlsb2NrZWQgPSBCX1RSVUU7DQotCX0N
CisJbXV0ZXhfZW50ZXIoJnpmc2Rldl9zdGF0ZV9sb2NrKTsNCiANCiAJenYg
PSBwcC0+cHJpdmF0ZTsNCiAJaWYgKHp2ID09IE5VTEwpIHsNCi0JCWlmIChs
b2NrZWQpDQotCQkJbXV0ZXhfZXhpdCgmc3BhX25hbWVzcGFjZV9sb2NrKTsN
CisJCW11dGV4X2V4aXQoJnpmc2Rldl9zdGF0ZV9sb2NrKTsNCiAJCXJldHVy
biAoU0VUX0VSUk9SKEVOWElPKSk7DQogCX0NCiANCkBAIC0xMDAyLDggKzk3
OCw3IEBAIHp2b2xfY2xvc2Uoc3RydWN0IGdfcHJvdmlkZXIgKnBwLCBpbnQg
ZmxhZywgaW50IGNvdW50KQ0KIAlpZiAoenYtPnp2X3RvdGFsX29wZW5zID09
IDApDQogCQl6dm9sX2xhc3RfY2xvc2UoenYpOw0KIA0KLQlpZiAobG9ja2Vk
KQ0KLQkJbXV0ZXhfZXhpdCgmc3BhX25hbWVzcGFjZV9sb2NrKTsNCisJbXV0
ZXhfZXhpdCgmemZzZGV2X3N0YXRlX2xvY2spOw0KIAlyZXR1cm4gKGVycm9y
KTsNCiB9DQogDQpAQCAtMTY1OCwxMiArMTYzMywxMiBAQCB6dm9sX2lvY3Rs
KGRldl90IGRldiwgaW50IGNtZCwgaW50cHRyX3QgYXJnLCBpbnQgZmxhZywg
Y3JlZF90ICpjciwgaW50ICpydmFscCkNCiAJaW50IGVycm9yID0gMDsNCiAJ
cmxfdCAqcmw7DQogDQotCW11dGV4X2VudGVyKCZzcGFfbmFtZXNwYWNlX2xv
Y2spOw0KKwltdXRleF9lbnRlcigmemZzZGV2X3N0YXRlX2xvY2spOw0KIA0K
IAl6diA9IHpmc2Rldl9nZXRfc29mdF9zdGF0ZShnZXRtaW5vcihkZXYpLCBa
U1NUX1pWT0wpOw0KIA0KIAlpZiAoenYgPT0gTlVMTCkgew0KLQkJbXV0ZXhf
ZXhpdCgmc3BhX25hbWVzcGFjZV9sb2NrKTsNCisJCW11dGV4X2V4aXQoJnpm
c2Rldl9zdGF0ZV9sb2NrKTsNCiAJCXJldHVybiAoU0VUX0VSUk9SKEVOWElP
KSk7DQogCX0NCiAJQVNTRVJUKHp2LT56dl90b3RhbF9vcGVucyA+IDApOw0K
QEAgLTE2NzcsNyArMTY1Miw3IEBAIHp2b2xfaW9jdGwoZGV2X3QgZGV2LCBp
bnQgY21kLCBpbnRwdHJfdCBhcmcsIGludCBmbGFnLCBjcmVkX3QgKmNyLCBp
bnQgKnJ2YWxwKQ0KIAkJZGtpLmRraV9jdHlwZSA9IERLQ19VTktOT1dOOw0K
IAkJZGtpLmRraV91bml0ID0gZ2V0bWlub3IoZGV2KTsNCiAJCWRraS5ka2lf
bWF4dHJhbnNmZXIgPSAxIDw8IChTUEFfTUFYQkxPQ0tTSElGVCAtIHp2LT56
dl9taW5fYnMpOw0KLQkJbXV0ZXhfZXhpdCgmc3BhX25hbWVzcGFjZV9sb2Nr
KTsNCisJCW11dGV4X2V4aXQoJnpmc2Rldl9zdGF0ZV9sb2NrKTsNCiAJCWlm
IChkZGlfY29weW91dCgmZGtpLCAodm9pZCAqKWFyZywgc2l6ZW9mIChka2kp
LCBmbGFnKSkNCiAJCQllcnJvciA9IFNFVF9FUlJPUihFRkFVTFQpOw0KIAkJ
cmV0dXJuIChlcnJvcik7DQpAQCAtMTY4Nyw3ICsxNjYyLDcgQEAgenZvbF9p
b2N0bChkZXZfdCBkZXYsIGludCBjbWQsIGludHB0cl90IGFyZywgaW50IGZs
YWcsIGNyZWRfdCAqY3IsIGludCAqcnZhbHApDQogCQlka20uZGtpX2xic2l6
ZSA9IDFVIDw8IHp2LT56dl9taW5fYnM7DQogCQlka20uZGtpX2NhcGFjaXR5
ID0genYtPnp2X3ZvbHNpemUgPj4genYtPnp2X21pbl9iczsNCiAJCWRrbS5k
a2lfbWVkaWFfdHlwZSA9IERLX1VOS05PV047DQotCQltdXRleF9leGl0KCZz
cGFfbmFtZXNwYWNlX2xvY2spOw0KKwkJbXV0ZXhfZXhpdCgmemZzZGV2X3N0
YXRlX2xvY2spOw0KIAkJaWYgKGRkaV9jb3B5b3V0KCZka20sICh2b2lkICop
YXJnLCBzaXplb2YgKGRrbSksIGZsYWcpKQ0KIAkJCWVycm9yID0gU0VUX0VS
Uk9SKEVGQVVMVCk7DQogCQlyZXR1cm4gKGVycm9yKTsNCkBAIC0xNjk3LDE0
ICsxNjcyLDE0IEBAIHp2b2xfaW9jdGwoZGV2X3QgZGV2LCBpbnQgY21kLCBp
bnRwdHJfdCBhcmcsIGludCBmbGFnLCBjcmVkX3QgKmNyLCBpbnQgKnJ2YWxw
KQ0KIAkJCXVpbnQ2NF90IHZzID0genYtPnp2X3ZvbHNpemU7DQogCQkJdWlu
dDhfdCBicyA9IHp2LT56dl9taW5fYnM7DQogDQotCQkJbXV0ZXhfZXhpdCgm
c3BhX25hbWVzcGFjZV9sb2NrKTsNCisJCQltdXRleF9leGl0KCZ6ZnNkZXZf
c3RhdGVfbG9jayk7DQogCQkJZXJyb3IgPSB6dm9sX2dldGVmaSgodm9pZCAq
KWFyZywgZmxhZywgdnMsIGJzKTsNCiAJCQlyZXR1cm4gKGVycm9yKTsNCiAJ
CX0NCiANCiAJY2FzZSBES0lPQ0ZMVVNIV1JJVEVDQUNIRToNCiAJCWRrYyA9
IChzdHJ1Y3QgZGtfY2FsbGJhY2sgKilhcmc7DQotCQltdXRleF9leGl0KCZz
cGFfbmFtZXNwYWNlX2xvY2spOw0KKwkJbXV0ZXhfZXhpdCgmemZzZGV2X3N0
YXRlX2xvY2spOw0KIAkJemlsX2NvbW1pdCh6di0+enZfemlsb2csIFpWT0xf
T0JKKTsNCiAJCWlmICgoZmxhZyAmIEZLSU9DVEwpICYmIGRrYyAhPSBOVUxM
ICYmIGRrYy0+ZGtjX2NhbGxiYWNrKSB7DQogCQkJKCpka2MtPmRrY19jYWxs
YmFjaykoZGtjLT5ka2NfY29va2llLCBlcnJvcik7DQpAQCAtMTczMCwxMCAr
MTcwNSwxMCBAQCB6dm9sX2lvY3RsKGRldl90IGRldiwgaW50IGNtZCwgaW50
cHRyX3QgYXJnLCBpbnQgZmxhZywgY3JlZF90ICpjciwgaW50ICpydmFscCkN
CiAJCQl9DQogCQkJaWYgKHdjZSkgew0KIAkJCQl6di0+enZfZmxhZ3MgfD0g
WlZPTF9XQ0U7DQotCQkJCW11dGV4X2V4aXQoJnNwYV9uYW1lc3BhY2VfbG9j
ayk7DQorCQkJCW11dGV4X2V4aXQoJnpmc2Rldl9zdGF0ZV9sb2NrKTsNCiAJ
CQl9IGVsc2Ugew0KIAkJCQl6di0+enZfZmxhZ3MgJj0gflpWT0xfV0NFOw0K
LQkJCQltdXRleF9leGl0KCZzcGFfbmFtZXNwYWNlX2xvY2spOw0KKwkJCQlt
dXRleF9leGl0KCZ6ZnNkZXZfc3RhdGVfbG9jayk7DQogCQkJCXppbF9jb21t
aXQoenYtPnp2X3ppbG9nLCBaVk9MX09CSik7DQogCQkJfQ0KIAkJCXJldHVy
biAoMCk7DQpAQCAtMTgyOCw3ICsxODAzLDcgQEAgenZvbF9pb2N0bChkZXZf
dCBkZXYsIGludCBjbWQsIGludHB0cl90IGFyZywgaW50IGZsYWcsIGNyZWRf
dCAqY3IsIGludCAqcnZhbHApDQogCQlicmVhazsNCiANCiAJfQ0KLQltdXRl
eF9leGl0KCZzcGFfbmFtZXNwYWNlX2xvY2spOw0KKwltdXRleF9leGl0KCZ6
ZnNkZXZfc3RhdGVfbG9jayk7DQogCXJldHVybiAoZXJyb3IpOw0KIH0NCiAj
ZW5kaWYJLyogc3VuICovDQpAQCAtMTg0NCwxMiArMTgxOSwxNCBAQCB6dm9s
X2luaXQodm9pZCkNCiB7DQogCVZFUklGWShkZGlfc29mdF9zdGF0ZV9pbml0
KCZ6ZnNkZXZfc3RhdGUsIHNpemVvZiAoemZzX3NvZnRfc3RhdGVfdCksDQog
CSAgICAxKSA9PSAwKTsNCisJbXV0ZXhfaW5pdCgmemZzZGV2X3N0YXRlX2xv
Y2ssIE5VTEwsIE1VVEVYX0RFRkFVTFQsIE5VTEwpOw0KIAlaRlNfTE9HKDEs
ICJaVk9MIEluaXRpYWxpemVkLiIpOw0KIH0NCiANCiB2b2lkDQogenZvbF9m
aW5pKHZvaWQpDQogew0KKwltdXRleF9kZXN0cm95KCZ6ZnNkZXZfc3RhdGVf
bG9jayk7DQogCWRkaV9zb2Z0X3N0YXRlX2ZpbmkoJnpmc2Rldl9zdGF0ZSk7
DQogCVpGU19MT0coMSwgIlpWT0wgRGVpbml0aWFsaXplZC4iKTsNCiB9DQpA
QCAtMTg4OSw3ICsxODY2LDcgQEAgenZvbF9kdW1wX2luaXQoenZvbF9zdGF0
ZV90ICp6diwgYm9vbGVhbl90IHJlc2l6ZSkNCiAJdWludDY0X3QgdmVyc2lv
biA9IHNwYV92ZXJzaW9uKHNwYSk7DQogCWVudW0gemlvX2NoZWNrc3VtIGNo
ZWNrc3VtOw0KIA0KLQlBU1NFUlQoTVVURVhfSEVMRCgmc3BhX25hbWVzcGFj
ZV9sb2NrKSk7DQorCUFTU0VSVChNVVRFWF9IRUxEKCZ6ZnNkZXZfc3RhdGVf
bG9jaykpOw0KIAlBU1NFUlQodmQtPnZkZXZfb3BzID09ICZ2ZGV2X3Jvb3Rf
b3BzKTsNCiANCiAJZXJyb3IgPSBkbXVfZnJlZV9sb25nX3JhbmdlKHp2LT56
dl9vYmpzZXQsIFpWT0xfT0JKLCAwLA0KQEAgLTI0MzcsNyArMjQxNCw3IEBA
IHp2b2xfcmVuYW1lX21pbm9yKHN0cnVjdCBnX2dlb20gKmdwLCBjb25zdCBj
aGFyICpuZXduYW1lKQ0KIAlzdHJ1Y3QgZ19wcm92aWRlciAqcHA7DQogCXp2
b2xfc3RhdGVfdCAqenY7DQogDQotCUFTU0VSVChNVVRFWF9IRUxEKCZzcGFf
bmFtZXNwYWNlX2xvY2spKTsNCisJQVNTRVJUKE1VVEVYX0hFTEQoJnpmc2Rl
dl9zdGF0ZV9sb2NrKSk7DQogCWdfdG9wb2xvZ3lfYXNzZXJ0KCk7DQogDQog
CXBwID0gTElTVF9GSVJTVCgmZ3AtPnByb3ZpZGVyKTsNCkBAIC0yNDcxLDcg
KzI0NDgsNyBAQCB6dm9sX3JlbmFtZV9taW5vcnMoY29uc3QgY2hhciAqb2xk
bmFtZSwgY29uc3QgY2hhciAqbmV3bmFtZSkNCiAJbmV3bmFtZWxlbiA9IHN0
cmxlbihuZXduYW1lKTsNCiANCiAJRFJPUF9HSUFOVCgpOw0KLQltdXRleF9l
bnRlcigmc3BhX25hbWVzcGFjZV9sb2NrKTsNCisJbXV0ZXhfZW50ZXIoJnpm
c2Rldl9zdGF0ZV9sb2NrKTsNCiAJZ190b3BvbG9neV9sb2NrKCk7DQogDQog
CUxJU1RfRk9SRUFDSChncCwgJnpmc196dm9sX2NsYXNzLmdlb20sIGdlb20p
IHsNCkBAIC0yNDk0LDYgKzI0NzEsNiBAQCB6dm9sX3JlbmFtZV9taW5vcnMo
Y29uc3QgY2hhciAqb2xkbmFtZSwgY29uc3QgY2hhciAqbmV3bmFtZSkNCiAJ
fQ0KIA0KIAlnX3RvcG9sb2d5X3VubG9jaygpOw0KLQltdXRleF9leGl0KCZz
cGFfbmFtZXNwYWNlX2xvY2spOw0KKwltdXRleF9leGl0KCZ6ZnNkZXZfc3Rh
dGVfbG9jayk7DQogCVBJQ0tVUF9HSUFOVCgpOw0KIH0NCi0tIA0KMS44LjQu
Mg0KDQo=

--1030603365-686922855-1387467971=:4344
Content-Type: TEXT/x-diff; name=0002-ZFS-snapshot-handling-fix.patch
Content-Transfer-Encoding: BASE64
Content-ID: <alpine.DEB.2.10.1312191646112.4344@krichy.tvnetwork.hu>
Content-Description: 
Content-Disposition: attachment; filename=0002-ZFS-snapshot-handling-fix.patch

RnJvbSA1N2Q1YTM4M2I1ODVjMzJjNzdhZjU0ZThjZGFjYWRkZjhjZTc1ODRm
IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogUmljaGFyZCBLb2pl
ZHppbnN6a3kgPGtyaWNoeUBjZmxpbnV4Lmh1Pg0KRGF0ZTogV2VkLCAxOCBE
ZWMgMjAxMyAyMjoxMToyMSArMDEwMA0KU3ViamVjdDogW1BBVENIIDIvMl0g
WkZTIHNuYXBzaG90IGhhbmRsaW5nIGZpeA0KDQotLS0NCiAuLi4vY29tcGF0
L29wZW5zb2xhcmlzL2tlcm4vb3BlbnNvbGFyaXNfbG9va3VwLmMgICB8IDEz
ICsrKy0tLQ0KIC4uLi9vcGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL3pmcy96
ZnNfY3RsZGlyLmMgICAgIHwgNTMgKysrKysrKysrKysrKysrLS0tLS0tLQ0K
IDIgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRp
b25zKC0pDQoNCmRpZmYgLS1naXQgYS9zeXMvY2RkbC9jb21wYXQvb3BlbnNv
bGFyaXMva2Vybi9vcGVuc29sYXJpc19sb29rdXAuYyBiL3N5cy9jZGRsL2Nv
bXBhdC9vcGVuc29sYXJpcy9rZXJuL29wZW5zb2xhcmlzX2xvb2t1cC5jDQpp
bmRleCA5NDM4M2Q2Li40Y2FjMDUzIDEwMDY0NA0KLS0tIGEvc3lzL2NkZGwv
Y29tcGF0L29wZW5zb2xhcmlzL2tlcm4vb3BlbnNvbGFyaXNfbG9va3VwLmMN
CisrKyBiL3N5cy9jZGRsL2NvbXBhdC9vcGVuc29sYXJpcy9rZXJuL29wZW5z
b2xhcmlzX2xvb2t1cC5jDQpAQCAtODEsNiArODEsOCBAQCB0cmF2ZXJzZSh2
bm9kZV90ICoqY3ZwcCwgaW50IGxrdHlwZSkNCiAJICogcHJvZ3Jlc3Mgb24g
dGhpcyB2bm9kZS4NCiAJICovDQogDQorCXZuX2xvY2soY3ZwLCBsa3R5cGUp
Ow0KKw0KIAlmb3IgKDs7KSB7DQogCQkvKg0KIAkJICogUmVhY2hlZCB0aGUg
ZW5kIG9mIHRoZSBtb3VudCBjaGFpbj8NCkBAIC04OSwxMyArOTEsNyBAQCB0
cmF2ZXJzZSh2bm9kZV90ICoqY3ZwcCwgaW50IGxrdHlwZSkNCiAJCWlmICh2
ZnNwID09IE5VTEwpDQogCQkJYnJlYWs7DQogCQllcnJvciA9IHZmc19idXN5
KHZmc3AsIDApOw0KLQkJLyoNCi0JCSAqIHR2cCBpcyBOVUxMIGZvciAqY3Zw
cCB2bm9kZSwgd2hpY2ggd2UgY2FuJ3QgdW5sb2NrLg0KLQkJICovDQotCQlp
ZiAodHZwICE9IE5VTEwpDQotCQkJdnB1dChjdnApOw0KLQkJZWxzZQ0KLQkJ
CXZyZWxlKGN2cCk7DQorCQlWT1BfVU5MT0NLKGN2cCwgMCk7DQogCQlpZiAo
ZXJyb3IpDQogCQkJcmV0dXJuIChlcnJvcik7DQogDQpAQCAtMTA3LDYgKzEw
Myw5IEBAIHRyYXZlcnNlKHZub2RlX3QgKipjdnBwLCBpbnQgbGt0eXBlKQ0K
IAkJdmZzX3VuYnVzeSh2ZnNwKTsNCiAJCWlmIChlcnJvciAhPSAwKQ0KIAkJ
CXJldHVybiAoZXJyb3IpOw0KKw0KKwkJVk5fUkVMRShjdnApOw0KKw0KIAkJ
Y3ZwID0gdHZwOw0KIAl9DQogDQpkaWZmIC0tZ2l0IGEvc3lzL2NkZGwvY29u
dHJpYi9vcGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL3pmcy96ZnNfY3RsZGly
LmMgYi9zeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24v
ZnMvemZzL3pmc19jdGxkaXIuYw0KaW5kZXggMjhhYjFmYS4uZDM0NjRiNCAx
MDA2NDQNCi0tLSBhL3N5cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRz
L2NvbW1vbi9mcy96ZnMvemZzX2N0bGRpci5jDQorKysgYi9zeXMvY2RkbC9j
b250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvemZzL3pmc19jdGxk
aXIuYw0KQEAgLTExMiw2ICsxMTIsMjUgQEAgc25hcGVudHJ5X2NvbXBhcmUo
Y29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikNCiAJCXJldHVybiAoMCk7
DQogfQ0KIA0KKy8qIFJldHVybiB0aGUgemZzY3RsX3NuYXBkaXJfdCBvYmpl
Y3QgZnJvbSBjdXJyZW50IHZub2RlLCBmb2xsb3dpbmcNCisgKiB0aGUgbG9j
ayBvcmRlcnMgaW4gemZzY3RsX3NuYXBkaXJfbG9va3VwKCkgdG8gYXZvaWQg
ZGVhZGxvY2tzLg0KKyAqIE9uIHJldHVybiB0aGUgcGFzc2VkIGluIHZwIGlz
IHVubG9ja2VkICovDQorc3RhdGljIHpmc2N0bF9zbmFwZGlyX3QgKg0KK3pm
c2N0bF9zbmFwc2hvdF9nZXRfc25hcGRpcih2bm9kZV90ICp2cCwgdm5vZGVf
dCAqKmR2cHApDQorew0KKwlnZnNfZGlyX3QgKmRwID0gdnAtPnZfZGF0YTsN
CisJKmR2cHAgPSBkcC0+Z2ZzZF9maWxlLmdmc19wYXJlbnQ7DQorCXpmc2N0
bF9zbmFwZGlyX3QgKnNkcDsNCisNCisJVk5fSE9MRCgqZHZwcCk7DQorCVZP
UF9VTkxPQ0sodnAsIDApOw0KKwl2bl9sb2NrKCpkdnBwLCBMS19TSEFSRUQg
fCBMS19SRVRSWSB8IExLX0NBTlJFQ1VSU0UpOw0KKwlzZHAgPSAoKmR2cHAp
LT52X2RhdGE7DQorCVZPUF9VTkxPQ0soKmR2cHAsIDApOw0KKw0KKwlyZXR1
cm4gKHNkcCk7DQorfQ0KKw0KICNpZmRlZiBzdW4NCiB2bm9kZW9wc190ICp6
ZnNjdGxfb3BzX3Jvb3Q7DQogdm5vZGVvcHNfdCAqemZzY3RsX29wc19zbmFw
ZGlyOw0KQEAgLTEwMTMsNiArMTAzMiw4IEBAIHpmc2N0bF9zbmFwZGlyX2xv
b2t1cChhcCkNCiAJCQkgKiBUaGUgc25hcHNob3Qgd2FzIHVubW91bnRlZCBi
ZWhpbmQgb3VyIGJhY2tzLA0KIAkJCSAqIHRyeSB0byByZW1vdW50IGl0Lg0K
IAkJCSAqLw0KKwkJCVZPUF9VTkxPQ0soKnZwcCwgMCk7DQorCQkJVk5fSE9M
RCgqdnBwKTsNCiAJCQlWRVJJRlkoemZzY3RsX3NuYXBzaG90X3puYW1lKGR2
cCwgbm0sIE1BWE5BTUVMRU4sIHNuYXBuYW1lKSA9PSAwKTsNCiAJCQlnb3Rv
IGRvbW91bnQ7DQogCQl9IGVsc2Ugew0KQEAgLTEwNjQsNyArMTA4NSw2IEBA
IHpmc2N0bF9zbmFwZGlyX2xvb2t1cChhcCkNCiAJc2VwLT5zZV9uYW1lID0g
a21lbV9hbGxvYyhzdHJsZW4obm0pICsgMSwgS01fU0xFRVApOw0KIAkodm9p
ZCkgc3RyY3B5KHNlcC0+c2VfbmFtZSwgbm0pOw0KIAkqdnBwID0gc2VwLT5z
ZV9yb290ID0gemZzY3RsX3NuYXBzaG90X21rbm9kZShkdnAsIGRtdV9vYmpz
ZXRfaWQoc25hcCkpOw0KLQlWTl9IT0xEKCp2cHApOw0KIAlhdmxfaW5zZXJ0
KCZzZHAtPnNkX3NuYXBzLCBzZXAsIHdoZXJlKTsNCiANCiAJZG11X29ianNl
dF9yZWxlKHNuYXAsIEZUQUcpOw0KQEAgLTEwNzUsNiArMTA5NSw3IEBAIGRv
bW91bnQ6DQogCSh2b2lkKSBzbnByaW50Zihtb3VudHBvaW50LCBtb3VudHBv
aW50X2xlbiwNCiAJICAgICIlcy8iIFpGU19DVExESVJfTkFNRSAiL3NuYXBz
aG90LyVzIiwNCiAJICAgIGR2cC0+dl92ZnNwLT5tbnRfc3RhdC5mX21udG9u
bmFtZSwgbm0pOw0KKwlWTl9IT0xEKCp2cHApOw0KIAllcnIgPSBtb3VudF9z
bmFwc2hvdChjdXJ0aHJlYWQsIHZwcCwgInpmcyIsIG1vdW50cG9pbnQsIHNu
YXBuYW1lLCAwKTsNCiAJa21lbV9mcmVlKG1vdW50cG9pbnQsIG1vdW50cG9p
bnRfbGVuKTsNCiAJaWYgKGVyciA9PSAwKSB7DQpAQCAtMTQ2NCwxNiArMTQ4
NSwxOCBAQCB6ZnNjdGxfc25hcHNob3RfaW5hY3RpdmUoYXApDQogCWludCBs
b2NrZWQ7DQogCXZub2RlX3QgKmR2cDsNCiANCi0JaWYgKHZwLT52X2NvdW50
ID4gMCkNCi0JCWdvdG8gZW5kOw0KLQ0KLQlWRVJJRlkoZ2ZzX2Rpcl9sb29r
dXAodnAsICIuLiIsICZkdnAsIGNyLCAwLCBOVUxMLCBOVUxMKSA9PSAwKTsN
Ci0Jc2RwID0gZHZwLT52X2RhdGE7DQotCVZPUF9VTkxPQ0soZHZwLCAwKTsN
CisJc2RwID0gemZzY3RsX3NuYXBzaG90X2dldF9zbmFwZGlyKHZwLCAmZHZw
KTsNCiANCiAJaWYgKCEobG9ja2VkID0gTVVURVhfSEVMRCgmc2RwLT5zZF9s
b2NrKSkpDQogCQltdXRleF9lbnRlcigmc2RwLT5zZF9sb2NrKTsNCiANCisJ
dm5fbG9jayh2cCwgTEtfRVhDTFVTSVZFIHwgTEtfUkVUUlkpOw0KKw0KKwlp
ZiAodnAtPnZfY291bnQgPiAwKSB7DQorCQltdXRleF9leGl0KCZzZHAtPnNk
X2xvY2spOw0KKwkJcmV0dXJuICgwKTsNCisJfQ0KKw0KIAlBU1NFUlQoIXZu
X2lzbW50cHQodnApKTsNCiANCiAJc2VwID0gYXZsX2ZpcnN0KCZzZHAtPnNk
X3NuYXBzKTsNCkBAIC0xNDk0LDcgKzE1MTcsNiBAQCB6ZnNjdGxfc25hcHNo
b3RfaW5hY3RpdmUoYXApDQogCQltdXRleF9leGl0KCZzZHAtPnNkX2xvY2sp
Ow0KIAlWTl9SRUxFKGR2cCk7DQogDQotZW5kOg0KIAkvKg0KIAkgKiBEaXNw
b3NlIG9mIHRoZSB2bm9kZSBmb3IgdGhlIHNuYXBzaG90IG1vdW50IHBvaW50
Lg0KIAkgKiBUaGlzIGlzIHNhZmUgdG8gZG8gYmVjYXVzZSBvbmNlIHRoaXMg
ZW50cnkgaGFzIGJlZW4gcmVtb3ZlZA0KQEAgLTE1OTUsMjAgKzE2MTcsMTcg
QEAgemZzY3RsX3NuYXBzaG90X2xvb2t1cChhcCkNCiBzdGF0aWMgaW50DQog
emZzY3RsX3NuYXBzaG90X3ZwdG9jbnAoc3RydWN0IHZvcF92cHRvY25wX2Fy
Z3MgKmFwKQ0KIHsNCi0JemZzdmZzX3QgKnpmc3ZmcyA9IGFwLT5hX3ZwLT52
X3Zmc3AtPnZmc19kYXRhOw0KLQl2bm9kZV90ICpkdnAsICp2cDsNCisJdm5v
ZGVfdCAqZHZwLCAqdnAgPSBhcC0+YV92cDsNCiAJemZzY3RsX3NuYXBkaXJf
dCAqc2RwOw0KIAl6ZnNfc25hcGVudHJ5X3QgKnNlcDsNCi0JaW50IGVycm9y
Ow0KKwlpbnQgZXJyb3IgPSAwOw0KIA0KLQlBU1NFUlQoemZzdmZzLT56X2N0
bGRpciAhPSBOVUxMKTsNCi0JZXJyb3IgPSB6ZnNjdGxfcm9vdF9sb29rdXAo
emZzdmZzLT56X2N0bGRpciwgInNuYXBzaG90IiwgJmR2cCwNCi0JICAgIE5V
TEwsIDAsIE5VTEwsIGtjcmVkLCBOVUxMLCBOVUxMLCBOVUxMKTsNCi0JaWYg
KGVycm9yICE9IDApDQotCQlyZXR1cm4gKGVycm9yKTsNCi0Jc2RwID0gZHZw
LT52X2RhdGE7DQorCXNkcCA9IHpmc2N0bF9zbmFwc2hvdF9nZXRfc25hcGRp
cih2cCwgJmR2cCk7DQogDQogCW11dGV4X2VudGVyKCZzZHAtPnNkX2xvY2sp
Ow0KKw0KKwl2bl9sb2NrKHZwLCBMS19TSEFSRUQgfCBMS19SRVRSWSk7DQor
DQogCXNlcCA9IGF2bF9maXJzdCgmc2RwLT5zZF9zbmFwcyk7DQogCXdoaWxl
IChzZXAgIT0gTlVMTCkgew0KIAkJdnAgPSBzZXAtPnNlX3Jvb3Q7DQotLSAN
CjEuOC40LjINCg0K

--1030603365-686922855-1387467971=:4344--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.DEB.2.10.1312191629370.4344>