From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751467AbdADFFm (ORCPT ); Wed, 4 Jan 2017 00:05:42 -0500 Received: from omzsmtpe02.verizonbusiness.com ([199.249.25.209]:5121 "EHLO omzsmtpe02.verizonbusiness.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750853AbdADFFg (ORCPT ); Wed, 4 Jan 2017 00:05:36 -0500 X-Greylist: delayed 724 seconds by postgrey-1.27 at vger.kernel.org; Wed, 04 Jan 2017 00:05:35 EST X-IronPort-Anti-Spam-Filtered: false X-IronPort-AV: E=Sophos;i="5.33,458,1477958400"; d="scan'208";a="260619145" From: alexander.levin@verizon.com X-Host: ranger.odc.vzwcorp.com To: Dmitry Vyukov CC: "tglx@linutronix.de" , "scientist@fb.com" , "glider@google.com" , "andreyknvl@google.com" , "rostedt@goodmis.org" , "arnd@arndb.de" , "mathieu.desnoyers@efficios.com" , "daniel.vetter@ffwll.ch" , "linux-kernel@vger.kernel.org" Subject: Re: [RFC 1/3] abi_spec: basic definitions of constraints, args and syscalls Thread-Topic: [RFC 1/3] abi_spec: basic definitions of constraints, args and syscalls Thread-Index: AQHSZkZp9G8M9GFv4U6Yjir8BXr3iQ== Date: Wed, 4 Jan 2017 04:52:54 +0000 Message-ID: <20170104044830.l4tlvp6732nuef2a@sasha-lappy> References: <1479317803-17220-1-git-send-email-alexander.levin@verizon.com> <1479317803-17220-2-git-send-email-alexander.levin@verizon.com> <20161123150001.GD3218@sasha-lappy> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: user-agent: Mutt/1.6.2-neo (2016-08-21) x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.144.60.250] Content-Type: multipart/mixed; boundary="_002_20170104044830l4tlvp6732nuef2asashalappy_" MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --_002_20170104044830l4tlvp6732nuef2asashalappy_ Content-Type: text/plain; charset="us-ascii" Content-ID: Content-Transfer-Encoding: quoted-printable On Wed, Dec 14, 2016 at 08:46:25PM +0100, Dmitry Vyukov wrote: > Here is my current prototype: > https://github.com/dvyukov/linux/commit/6200a9333e78bef393f8ead41205813b9= 4d340f3 >=20 > For now it can trace arguments of 4 system calls: >=20 > [ 4.055483] [pid 1258] open(&00007ffdefc023a0=3D[], 0x0, 0x1b6) > [ 4.055991] [pid 1258] open(&00007ffdefc023a0=3D[], 0x0, 0x1b6) =3D 3 > [ 4.056486] [pid 1258] read(0x3, &00007ffdefc01320=3D[], 0x1000) > [ 4.056977] [pid 1258] read(0x3, &00007ffdefc01320=3D[], 0x1000) =3D 1= 780 > [ 4.057485] [pid 1258] read(0x3, &00007f316a732000=3D[], 0x1000) > [ 4.057991] [pid 1258] read(0x3, &00007f316a732000=3D[], 0x1000) =3D 0 > [ 4.058488] [pid 1258] close(0x0) =3D 0 > [ 4.058848] [pid 1258] write(0x1, &00007f316a732000=3D[], 0x5) > [ 4.059304] [pid 1258] write(0x1, &00007f316a732000=3D[], 0x5) =3D 5 > [ 4.059905] [pid 1234] close(0x0) =3D 0 > [ 4.060239] [pid 1234] close(0x0) =3D 0 >=20 >=20 > Main outstanding problems: > - understanding length of arrays and buffers > - understanding discriminators of unions and syscall variations Happy new year! I've been away for a bit myself, but now back working on th= is. Attached a patch on top of your commit. There are two things (very messy, I just want to go through the concept): - Reading the values into a generic fields struct, based on your suggestio= n. There's no actual struct there, just the values - we can figure out how it'= ll look like exactly, but something along this path makes sense? tglx also raised a point that we want to read from userspace only once for performance; it's a bit early to address performance at this stage, but it'= s another advantage to pursuing this approach. - Array/string length. Since we read all values, we can point to the array= 's length by using an offset from the currect arg. So for example, in read(), = the length of the buffer is at +1 offset from the buffer. This seems to be the = case for most syscalls. The exception here is strings which we can just define as offset =3D=3D 0. With the patch, the trace is now able to work with strings: [ 1.234156] [pid 891] open(&00007fa7b35d4035=3D[ /etc/ld.so.cache ], 0x8= 0000, 0x1) [ 1.235244] [pid 891] open(&00007fa7b35d4035=3D[ /etc/ld.so.cache ], 0x8= 0000, 0x1) =3D -2 [ 1.236101] [pid 891] open(&00007ffe57ca2a70=3D[ /lib/x86_64-linux-gnu/t= ls/x86_64/libc.so.6 ], 0x80000, 0xb37db168) [ 1.237361] [pid 891] open(&00007ffe57ca2a70=3D[ /lib/x86_64-linux-gnu/t= ls/x86_64/libc.so.6 ], 0x80000, 0xb37db168) =3D -2 [ 1.238545] [pid 891] open(&00007ffe57ca2a70=3D[ /lib/x86_64-linux-gnu/t= ls/libc.so.6 ], 0x80000, 0xb37db168) [ 1.239600] [pid 891] open(&00007ffe57ca2a70=3D[ /lib/x86_64-linux-gnu/t= ls/libc.so.6 ], 0x80000, 0xb37db168) =3D -2 [ 1.241033] [pid 891] open(&00007ffe57ca2a70=3D[ /lib/x86_64-linux-gnu/x= 86_64/libc.so.6 ], 0x80000, 0xb37db168) [ 1.242163] [pid 891] open(&00007ffe57ca2a70=3D[ /lib/x86_64-linux-gnu/x= 86_64/libc.so.6 ], 0x80000, 0xb37db168) =3D -2 [ 1.243329] [pid 891] open(&00007ffe57ca2a70=3D[ /lib/x86_64-linux-gnu/l= ibc.so.6 ], 0x80000, 0xb37db168) [ 1.244712] [pid 891] open(&00007ffe57ca2a70=3D[ /lib/x86_64-linux-gnu/l= ibc.so.6 ], 0x80000, 0xb37db168) =3D 3 [ 1.245633] [pid 891] read(0x3, &00007ffe57ca2c98=3D[ (null) ], 0x340) [ 1.246334] [pid 891] read(0x3, &00007ffe57ca2c98=3D[ (null) ], 0x340) = =3D 832 Does the idea makes sense? --=20 Thanks, Sasha --_002_20170104044830l4tlvp6732nuef2asashalappy_ Content-Type: text/x-diff; name="diff.patch" Content-Description: diff.patch Content-Disposition: attachment; filename="diff.patch"; size=6635; creation-date="Wed, 04 Jan 2017 04:52:54 GMT"; modification-date="Wed, 04 Jan 2017 04:52:54 GMT" Content-ID: <866025EDA2E603408C442690875254D3@vzwcorp.com> Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9hYmlfc3BlYy5oIGIvaW5jbHVkZS91YXBp L2xpbnV4L2FiaV9zcGVjLmgNCmluZGV4IGRkOGRkYzMuLjIxYjMxZjkgMTAwNjQ0DQotLS0gYS9p bmNsdWRlL3VhcGkvbGludXgvYWJpX3NwZWMuaA0KKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2Fi aV9zcGVjLmgNCkBAIC04MCw2ICs4MCw3IEBAIHN0cnVjdCB0eXBlIHsNCiAJCS8vIEtJTkRfQVJS QVkNCiAJCXN0cnVjdCB7DQogCQkJc3RydWN0IHR5cGUJKnR5cGU7DQorCQkJdTgJCWxlbmd0aF9v ZmY7DQogCQl9IGFycmF5Ow0KIA0KIAkJLy8gS0lORF9TVFJVQ1QNCkBAIC0xMTAsNCArMTExLDE1 IEBAIHN0cnVjdCBzeXNjYWxsX3NwZWMgew0KIAlzdHJ1Y3QgYXJndW1lbnQJYXJnc1tBQklfTUFY X0FSR1NdOw0KIH07DQogDQorc3RydWN0IHN5c2NhbGxfdmFsdWVzIHsNCisJdW5pb24gew0KKwkJ dTggdTg7DQorCQl1MTYgdTE2Ow0KKwkJdTMyIHUzMjsNCisJCXU2NCB1NjQ7DQorCQl2b2lkICpw dHI7DQorCQljaGFyICpzdHI7DQorCX07DQorfTsNCisNCiAjZW5kaWYNCmRpZmYgLS1naXQgYS9r ZXJuZWwvYWJpX3NwZWMuYyBiL2tlcm5lbC9hYmlfc3BlYy5jDQppbmRleCBmYTI0OWJkLi5kYmFm Yjk4IDEwMDY0NA0KLS0tIGEva2VybmVsL2FiaV9zcGVjLmMNCisrKyBiL2tlcm5lbC9hYmlfc3Bl Yy5jDQpAQCAtNywxMCArNywxMSBAQA0KICNpbmNsdWRlIDxsaW51eC9lcnJuby5oPg0KICNpbmNs dWRlIDxsaW51eC9mY250bC5oPg0KICNpbmNsdWRlIDxsaW51eC9zdGF0Lmg+DQorI2luY2x1ZGUg PGxpbnV4L3ZtYWxsb2MuaD4NCiANCi10eXBlZGVmIHZvaWQgKCpjYl90KSh2b2lkICpjdHgsIHN0 cnVjdCB0eXBlICp0LCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgX191c2VyICpwLCBpbnQgcG9zdCk7 DQordHlwZWRlZiB2b2lkICgqY2JfdCkodm9pZCAqY3R4LCBzdHJ1Y3QgdHlwZSAqdCwgaW50IGZs YWdzLCBjb25zdCB2b2lkIF9fdXNlciAqcCwgc3RydWN0IHN5c2NhbGxfdmFsdWVzICp2YWwsIGlu dCBwb3N0KTsNCiANCi1zdGF0aWMgc2l6ZV90IGhhbmRsZV90eXBlKGNiX3QgY2IsIHZvaWQgKmN0 eCwgc3RydWN0IHR5cGUgKnQsIGludCBmbGFncywgY29uc3Qgdm9pZCBfX3VzZXIgKnApOw0KK3N0 YXRpYyBzaXplX3QgaGFuZGxlX3R5cGUoY2JfdCBjYiwgdm9pZCAqY3R4LCBzdHJ1Y3QgdHlwZSAq dCwgaW50IGZsYWdzLCBjb25zdCB2b2lkIF9fdXNlciAqcCwgc3RydWN0IHN5c2NhbGxfdmFsdWVz ICp2YWwpOw0KIA0KIHN0YXRpYyB1NjQgcmVhZF92YWwoc3RydWN0IHR5cGUgKnQsIGludCBmbGFn cywgY29uc3Qgdm9pZCBfX3VzZXIgKnApDQogew0KQEAgLTYwLDI3ICs2MSwzNCBAQCBzdGF0aWMg dTY0IHJlYWRfdmFsKHN0cnVjdCB0eXBlICp0LCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgX191c2Vy ICpwKQ0KIAl9DQogfQ0KIA0KLXN0YXRpYyBzaXplX3QgaGFuZGxlX3R5cGUoY2JfdCBjYiwgdm9p ZCAqY3R4LCBzdHJ1Y3QgdHlwZSAqdCwgaW50IGZsYWdzLCBjb25zdCB2b2lkIF9fdXNlciAqcCkN CitzdGF0aWMgc2l6ZV90IGhhbmRsZV90eXBlKGNiX3QgY2IsIHZvaWQgKmN0eCwgc3RydWN0IHR5 cGUgKnQsIGludCBmbGFncywgY29uc3Qgdm9pZCBfX3VzZXIgKnAsIHN0cnVjdCBzeXNjYWxsX3Zh bHVlcyAqdmFsKQ0KIHsNCiAJc2l6ZV90IG9mZjsNCiANCi0JY2IoY3R4LCB0LCBmbGFncywgcCwg MCk7DQorCWNiKGN0eCwgdCwgZmxhZ3MsIHAsIHZhbCwgMCk7DQogCXN3aXRjaCAodC0+a2luZCkg ew0KIAljYXNlIEtJTkRfU0NBTEFSOiB7DQogCQlvZmYgPSB0LT5zY2FsYXIuc2l6ZTsNCisJCXZh bC0+dTY0ID0gcmVhZF92YWwodCwgZmxhZ3MsIHApOw0KIAkJYnJlYWs7DQogCX0NCiAJY2FzZSBL SU5EX1BUUjogew0KIAkJY29uc3Qgdm9pZCBfX3VzZXIqIHAxOw0KIA0KIAkJcDEgPSAoY29uc3Qg dm9pZCBfX3VzZXIqKXJlYWRfdmFsKHQsIGZsYWdzLCBwKTsNCi0JCWhhbmRsZV90eXBlKGNiLCBj dHgsIHQtPnB0ci50eXBlLCAwLCBwMSk7DQorCQloYW5kbGVfdHlwZShjYiwgY3R4LCB0LT5wdHIu dHlwZSwgMCwgcDEsIHZhbCk7DQogCQlvZmYgPSBzaXplb2Yodm9pZCAqKTsNCiAJCWJyZWFrOw0K IAl9DQogCWNhc2UgS0lORF9BUlJBWTogew0KLQkJLy8gVE9ETzogZG9uJ3Qga25vdyB0aGUgc2l6 ZS4uLg0KLQkJLy8gb2ZmID0gaGFuZGxlX2FycmF5KGNiLCBjdHgsIHQsIHApOw0KKwkJLy8gbGVu Z3RoX29mZiA9PSAwID0+IHN0cmluZw0KKwkJaWYgKHQtPmFycmF5Lmxlbmd0aF9vZmYgPT0gMCkg ew0KKwkJCXU4IGxlbiA9IHN0cm5sZW5fdXNlcihwLCAweDEwMDAwKTsNCisJCQl2YWwtPnB0ciA9 IHZtYWxsb2MobGVuKTsNCisJCQlpZiAoV0FSTl9PTighdmFsLT5wdHIpKQ0KKwkJCQlicmVhazsN CisJCQlzdHJuY3B5X2Zyb21fdXNlcih2YWwtPnB0ciwgcCwgbGVuKTsNCisJCX0gZWxzZSB7fSAv LyB0b2RvDQogCQlicmVhazsNCiAJfQ0KIAljYXNlIEtJTkRfU1RSVUNUOiB7DQpAQCAtOTUsOCAr MTAzLDggQEAgc3RhdGljIHNpemVfdCBoYW5kbGVfdHlwZShjYl90IGNiLCB2b2lkICpjdHgsIHN0 cnVjdCB0eXBlICp0LCBpbnQgZmxhZ3MsIGNvbnN0IHYNCiAJCQlpZiAoIWYpDQogCQkJCWJyZWFr Ow0KIAkJCWlmIChpKQ0KLQkJCQljYihjdHgsIE5VTEwsIDAsIE5VTEwsIDApOw0KLQkJCW9mZiAr PSBoYW5kbGVfdHlwZShjYiwgY3R4LCBmLCBhcmctPmZsYWdzLCBwICsgb2ZmKTsNCisJCQkJY2Io Y3R4LCBOVUxMLCAwLCBOVUxMLCB2YWwsIDApOw0KKwkJCW9mZiArPSBoYW5kbGVfdHlwZShjYiwg Y3R4LCBmLCBhcmctPmZsYWdzLCBwICsgb2ZmLCB2YWwpOw0KIAkJfQ0KIAkJYnJlYWs7DQogCX0N CkBAIC0xMDksMTMgKzExNywxMyBAQCBzdGF0aWMgc2l6ZV90IGhhbmRsZV90eXBlKGNiX3QgY2Is IHZvaWQgKmN0eCwgc3RydWN0IHR5cGUgKnQsIGludCBmbGFncywgY29uc3Qgdg0KIAkJc3RydWN0 IHR5cGUgKnQxOw0KIA0KIAkJZm9yICh0MSA9IHQ7IHQxLT5raW5kID09IEtJTkRfUkVTT1VSQ0U7 IHQxID0gdDEtPnJlcy50eXBlKSB7fQ0KLQkJb2ZmID0gaGFuZGxlX3R5cGUoY2IsIGN0eCwgdDEs IGZsYWdzLCBwKTsNCisJCW9mZiA9IGhhbmRsZV90eXBlKGNiLCBjdHgsIHQxLCBmbGFncywgcCwg dmFsKTsNCiAJCWJyZWFrOw0KIAl9DQogCWRlZmF1bHQ6DQogCQlCVUcoKTsNCiAJfQ0KLQljYihj dHgsIHQsIGZsYWdzLCBwLCAxKTsNCisJY2IoY3R4LCB0LCBmbGFncywgcCwgdmFsLCAxKTsNCiAJ cmV0dXJuIG9mZjsNCiB9DQogDQpAQCAtMTI1LDYgKzEzMyw3IEBAIHN0YXRpYyB2b2lkIGhhbmRs ZV9zeXNjYWxsKGNiX3QgY2IsIHZvaWQgKmN0eCwgc3RydWN0IHN5c2NhbGxfc3BlYyAqcywgdmFf bGlzdCAqDQogCXN0cnVjdCBhcmd1bWVudCAqYXJnOw0KIAlzdHJ1Y3QgdHlwZSAqZjsNCiAJbG9u ZyB2Ow0KKwlzdHJ1Y3Qgc3lzY2FsbF92YWx1ZXMgdmFsc1tBQklfTUFYX0FSR1NdID0geyAwIH07 DQogDQogCWZvciAoaSA9IDA7IGkgPCBBQklfTUFYX0FSR1M7IGkrKykgew0KIAkJYXJnID0gJnMt PmFyZ3NbaV07DQpAQCAtMTMyLDkgKzE0MSw5IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9zeXNjYWxs KGNiX3QgY2IsIHZvaWQgKmN0eCwgc3RydWN0IHN5c2NhbGxfc3BlYyAqcywgdmFfbGlzdCAqDQog CQlpZiAoIWYpDQogCQkJYnJlYWs7DQogCQlpZiAoaSkNCi0JCQljYihjdHgsIE5VTEwsIDAsIE5V TEwsIDApOw0KKwkJCWNiKGN0eCwgTlVMTCwgMCwgTlVMTCwgJnZhbHNbaV0sIDApOw0KIAkJdiA9 IHZhX2FyZygqYXAsIGxvbmcpOw0KLQkJaGFuZGxlX3R5cGUoY2IsIGN0eCwgZiwgYXJnLT5mbGFn cywgJnYpOw0KKwkJaGFuZGxlX3R5cGUoY2IsIGN0eCwgZiwgYXJnLT5mbGFncywgJnYsICZ2YWxz W2ldKTsNCiAJfQ0KIH0NCiANCkBAIC0xNDgsNyArMTU3LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tf cmV0dmFsKHN0cnVjdCBzeXNjYWxsX3NwZWMgKnMsIGxvbmcgcmV0dmFsKQ0KIAkJaWYgKHMtPmVy cm5vW2ldID09IC1yZXR2YWwpDQogCQkJcmV0dXJuOw0KIAl9DQotCV9fV0FSTl9wcmludGYoInN5 c2NhbGwgJXMgcmV0dXJuZWQgdW5leHBlY3RlZCBlcnJvciAlbGQiLA0KKwlXQVJOKCJzeXNjYWxs ICVzIHJldHVybmVkIHVuZXhwZWN0ZWQgZXJyb3IgJWxkIiwNCiAJCXMtPm5hbWUsIHJldHZhbCk7 DQogfQ0KIA0KQEAgLTE2OSw3ICsxNzgsNyBAQCB2b2lkIGNoZWNrX3ByZV9wcmludGYoc3RydWN0 IGNoZWNrX3ByZV9jdHggKmN0eCwgY29uc3QgY2hhciAqZm10LCAuLi4pDQogCXZhX2VuZChhcmdz KTsNCiB9DQogDQotdm9pZCBjaGVja19wcmVfY2Iodm9pZCAqY3R4LCBzdHJ1Y3QgdHlwZSAqdCwg aW50IGZsYWdzLCBjb25zdCB2b2lkIF9fdXNlciAqcCwgaW50IHBvc3QpDQordm9pZCBjaGVja19w cmVfY2Iodm9pZCAqY3R4LCBzdHJ1Y3QgdHlwZSAqdCwgaW50IGZsYWdzLCBjb25zdCB2b2lkIF9f dXNlciAqcCwgc3RydWN0IHN5c2NhbGxfdmFsdWVzICp2YWwsIGludCBwb3N0KQ0KIHsNCiAJaWYg KCF0KSB7DQogCQljaGVja19wcmVfcHJpbnRmKGN0eCwgIiwgIik7DQpAQCAtMTg4LDcgKzE5Nyw3 IEBAIHZvaWQgY2hlY2tfcHJlX2NiKHZvaWQgKmN0eCwgc3RydWN0IHR5cGUgKnQsIGludCBmbGFn cywgY29uc3Qgdm9pZCBfX3VzZXIgKnAsIGluDQogCQljaGVja19wcmVfcHJpbnRmKGN0eCwgIiYl cD0iLCAodm9pZCopcmVhZF92YWwodCwgZmxhZ3MsIHApKTsNCiAJCWJyZWFrOw0KIAljYXNlIEtJ TkRfQVJSQVk6DQotCQljaGVja19wcmVfcHJpbnRmKGN0eCwgcG9zdCA/ICJdIiA6ICJbIik7DQor CQljaGVja19wcmVfcHJpbnRmKGN0eCwgcG9zdCA/ICIgJXMgXSIgOiAiWyIsIHZhbC0+cHRyKTsN CiAJCWJyZWFrOw0KIAljYXNlIEtJTkRfU1RSVUNUOg0KIAkJY2hlY2tfcHJlX3ByaW50ZihjdHgs IHBvc3QgPyAifSIgOiAieyIpOw0KQEAgLTI4Nyw5ICsyOTYsMTYgQEAgc3RhdGljIHN0cnVjdCB0 eXBlIHR5cGVfaXB0ciA9IHsNCiAJLnNjYWxhci5zaXplID0gc2l6ZW9mKHZvaWQgKiksDQogfTsN CiANCitzdGF0aWMgc3RydWN0IHR5cGUgdHlwZV9zdHJpbmdfaTggPSB7DQorICAgICAgICAua2lu ZCA9IEtJTkRfQVJSQVksDQorICAgICAgICAuYXJyYXkudHlwZSA9ICZ0eXBlX2k4LA0KKyAgICAg ICAgLmFycmF5Lmxlbmd0aF9vZmYgPSAwLA0KK307DQorDQogc3RhdGljIHN0cnVjdCB0eXBlIHR5 cGVfYXJyYXlfaTggPSB7DQogCS5raW5kID0gS0lORF9BUlJBWSwNCiAJLmFycmF5LnR5cGUgPSAm dHlwZV9pOCwNCisJLmFycmF5Lmxlbmd0aF9vZmYgPSAxLA0KIH07DQogDQogc3RhdGljIHN0cnVj dCB0eXBlIHR5cGVfcHRyX2FycmF5X2k4ID0gew0KQEAgLTMwMCw3ICszMTYsNyBAQCBzdGF0aWMg c3RydWN0IHR5cGUgdHlwZV9wdHJfYXJyYXlfaTggPSB7DQogc3RhdGljIHN0cnVjdCB0eXBlIHR5 cGVfcGF0aG5hbWUgPSB7DQogCS5raW5kID0gS0lORF9SRVNPVVJDRSwNCiAJLnJlcy5yZXMgPSBS RVNfUEFUSE5BTUUsDQotCS5yZXMudHlwZSA9ICZ0eXBlX2FycmF5X2k4LA0KKwkucmVzLnR5cGUg PSAmdHlwZV9zdHJpbmdfaTgsDQogfTsNCiANCiBzdGF0aWMgc3RydWN0IHR5cGUgdHlwZV9wdHJf cGF0aG5hbWUgPSB7DQpAQCAtNzUyLDUgKzc2OCwxNSBAQCBzdHJ1Y3Qgc3lzY2FsbF9zcGVjIHN5 c2NhbGxfc3BlY19zeW5jX2ZpbGVfcmFuZ2UyID0geyAubmFtZSA9ICJzeW5jX2ZpbGVfcmFuZ2Uy Ig0KIHN0cnVjdCBzeXNjYWxsX3NwZWMgc3lzY2FsbF9zcGVjX3N0YXRmczY0ID0geyAubmFtZSA9 ICJzdGF0ZnM2NCIgfTsNCiBzdHJ1Y3Qgc3lzY2FsbF9zcGVjIHN5c2NhbGxfc3BlY19mc3RhdGZz NjQgPSB7IC5uYW1lID0gImZzdGF0ZnM2NCIgfTsNCiBzdHJ1Y3Qgc3lzY2FsbF9zcGVjIHN5c2Nh bGxfc3BlY19iZGZsdXNoID0geyAubmFtZSA9ICJiZGZsdXNoIiB9Ow0KK3N0cnVjdCBzeXNjYWxs X3NwZWMgc3lzY2FsbF9zcGVjX3NpZ2FjdGlvbiA9IHsgLm5hbWUgPSAic2lnYWN0aW9uIiB9Ow0K K3N0cnVjdCBzeXNjYWxsX3NwZWMgc3lzY2FsbF9zcGVjX29sZF9tbWFwID0geyAubmFtZSA9ICJv bGRfbW1hcCIgfTsNCitzdHJ1Y3Qgc3lzY2FsbF9zcGVjIHN5c2NhbGxfc3BlY190cnVuY2F0ZTY0 ID0geyAubmFtZSA9ICJ0cnVuY2F0ZTY0IiB9Ow0KK3N0cnVjdCBzeXNjYWxsX3NwZWMgc3lzY2Fs bF9zcGVjX2Z0cnVuY2F0ZTY0ID0geyAubmFtZSA9ICJmdHJ1bmNhdGU2NCIgfTsNCitzdHJ1Y3Qg c3lzY2FsbF9zcGVjIHN5c2NhbGxfc3BlY19zdGF0NjQgPSB7IC5uYW1lID0gInN0YXQ2NCIgfTsN CitzdHJ1Y3Qgc3lzY2FsbF9zcGVjIHN5c2NhbGxfc3BlY19sc3RhdDY0ID0geyAubmFtZSA9ICJs c3RhdDY0IiB9Ow0KK3N0cnVjdCBzeXNjYWxsX3NwZWMgc3lzY2FsbF9zcGVjX2ZzdGF0NjQgPSB7 IC5uYW1lID0gImZzdGF0NjQiIH07DQorc3RydWN0IHN5c2NhbGxfc3BlYyBzeXNjYWxsX3NwZWNf ZnN0YXRhdDY0ID0geyAubmFtZSA9ICJmc3RhdGF0NjQiIH07DQorc3RydWN0IHN5c2NhbGxfc3Bl YyBzeXNjYWxsX3NwZWNfZmNudGw2NCA9IHsgLm5hbWUgPSAiZmNudGw2NCIgfTsNCitzdHJ1Y3Qg c3lzY2FsbF9zcGVjIHN5c2NhbGxfc3BlY19vbGRfc2VsZWN0ID0geyAubmFtZSA9ICJvbGRfc2Vs ZWN0IiB9Ow0KIA0KICN1bmRlZiAkDQo= --_002_20170104044830l4tlvp6732nuef2asashalappy_--