From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.5 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FROM_EXCESS_BASE64,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 717C9C169C4 for ; Fri, 8 Feb 2019 20:26:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1E20020844 for ; Fri, 8 Feb 2019 20:26:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="Q/w4eBLW" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727346AbfBHU0a (ORCPT ); Fri, 8 Feb 2019 15:26:30 -0500 Received: from mail-yw1-f65.google.com ([209.85.161.65]:46261 "EHLO mail-yw1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727014AbfBHU03 (ORCPT ); Fri, 8 Feb 2019 15:26:29 -0500 Received: by mail-yw1-f65.google.com with SMTP id n12so1859276ywn.13 for ; Fri, 08 Feb 2019 12:26:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Xv/kt9+/ugPBYYqTqq8Y0HPwCGF8XqlLSozmipBBgNA=; b=Q/w4eBLWwEUJ6Eo/OfpjurFZzHosng5RIuhW6U83K7K1n4JtTzGlR5fMcyHG0CB9Xt qkakirpKlg/NznQwL1cGeYXAm6HQ3U2+l9zOho6Tpzjkqv8M87nEjzb4SBzIzivM67ho 2Ma4vIJe4H7TD+5sQD0UcXgFZoY5saR9DmcGLYtOn5LTQ08sdHU41ZTbwRUBkSTuCySL cBycCyyjDAaKFAFgOtH6SJTpGNpcpMAIGk4X3coc/dHSSmEcGRQR/PHz4EysZ4Igx46g D3Pb5eoChP0AsRfcV45daNCDSRPWyNft4U6fNEAI9JbF2gtpuIYHGSNUYXxi3/gMpeJj 82Yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Xv/kt9+/ugPBYYqTqq8Y0HPwCGF8XqlLSozmipBBgNA=; b=FSqBwPQo+wpVuad1VOGRIyIAUVOm0vBU8us/QpzXRfA2URbtRdyu7eehxBS28j2Pp6 AoIehZTbgLyKue8cZuuPQf6Y0FTT4t56zE6gZeniL3BXAxxP4j6ET3Qx0YR34KP/mMxs UU3L6uSpC6OAWjGWXL4vLhjTq+HlUBq3nWxsE2z6iGNclf2goQ1CqQ2nYurnyged4Uyz Ut2uTcXQbcOf5aVrJhVytUWZ4QrwhZkVyePGAZjQCcAWhohlq8eK5hjuEeeXzPNig8r1 2cth9rB8QpZGhWUMko7qPvohsSsoWrZ21LdTsRoXV4xeAPdGb3W5vyu9GklZ5XKAqkyy w2Vg== X-Gm-Message-State: AHQUAuaXxEyYv40B+EmLRYvYWH5FnV1N6srjqZKAqS5l3fVURbkx/gc3 yRuNnjgLcpJsYcIeL5PKYv2FF8lcaAvvzAGpRmn0Z4L1Y2k= X-Google-Smtp-Source: AHgI3IZpeXHfXeIPN9DtBlqto2uX10w+nWPBr7ZQjXl+dJiJiSZBeM57qSbk5FCMrPR/SQi0+8DnhfkOICMHQNI78aw= X-Received: by 2002:a81:3c03:: with SMTP id j3mr19590811ywa.107.1549657587352; Fri, 08 Feb 2019 12:26:27 -0800 (PST) MIME-Version: 1.0 References: <874la1r0io.fsf@linkitivity.dja.id.au> In-Reply-To: From: =?UTF-8?B?TWFoZXNoIEJhbmRld2FyICjgpK7gpLngpYfgpLYg4KSs4KSC4KSh4KWH4KS14KS+4KSwKQ==?= Date: Fri, 8 Feb 2019 12:26:15 -0800 Message-ID: Subject: Re: Stack sends oversize UDP packet to the driver To: Michael Chan Cc: Daniel Axtens , Netdev , David Miller , Eric Dumazet , Willem de Bruijn Content-Type: multipart/mixed; boundary="00000000000005412c058167c6fc" Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org --00000000000005412c058167c6fc Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Feb 6, 2019 at 8:51 PM Mahesh Bandewar (=E0=A4=AE=E0=A4=B9=E0=A5=87= =E0=A4=B6 =E0=A4=AC=E0=A4=82=E0=A4=A1=E0=A5=87=E0=A4=B5=E0=A4=BE=E0=A4=B0) wrote: > > On Tue, Feb 5, 2019 at 11:36 AM Michael Chan = wrote: > > > > On Wed, Jan 30, 2019 at 5:00 PM Mahesh Bandewar (=E0=A4=AE=E0=A4=B9=E0= =A5=87=E0=A4=B6 =E0=A4=AC=E0=A4=82=E0=A4=A1=E0=A5=87=E0=A4=B5=E0=A4=BE=E0= =A4=B0) > > wrote: > > > > > > On Wed, Jan 30, 2019 at 1:07 AM Michael Chan wrote: > > > > > > > > On Tue, Jan 22, 2019 at 10:29 AM Mahesh Bandewar (=E0=A4=AE=E0=A4= =B9=E0=A5=87=E0=A4=B6 =E0=A4=AC=E0=A4=82=E0=A4=A1=E0=A5=87=E0=A4=B5=E0=A4= =BE=E0=A4=B0) > > > > wrote: > > > > > > > > > > > > > > The idea behind the fix is very simple and it is to create a dst-= only > > > > > (unregistered) device with a very low MTU and use it instead of '= lo' > > > > > while invalidating the dst. This would make it *not* forward pack= ets > > > > > to driver which might need fragmentation. > > > > > > > > > > > > > We tested the 2 patches many times and including an overnight test.= I > > > > can confirm that the oversize UDP packets are no longer seen with t= he > > > > patches applied. However, I don't see the blackhole xmit function > > > > getting called to free the SKBs though. > > > > > > > Thanks for the confirmation Michael. The blackhole device mtu is > > > really small, so I would assume the fragmentation code dropped those > > > packets before calling the xmit function (in ip_fragment), you could > > > verify that with icmp counters. > > > > > > > I've looked at this a little more. The blackhole_dev is not IFF_UP | > > IFF_RUNNING, right? May be that's why the packets are never getting > > to the xmit function? > Yes, so I added those two flags and ended up writing a test-module for > the device (which I will include while posting the patch-series). > However, adding those flags is also not sufficient since the qdisc is > initialized to noop_qdisc so qdisc enqueue will drop packets before > hitting the ndo_start_xmit(). I have another version of the fix (with help from Eric) and this should hit the .ndo_start_xmit() of the blackhole_dev. I'm adding these flags during the setup and then calling dev_activate() to change noop qdisc to null qdisc. Please give this patch set a try and let me know if the blackhole_dev xmit path gets exercised in your test scenario. --00000000000005412c058167c6fc Content-Type: application/octet-stream; name="0001-loopback-create-blackhole-net-device-similar-to-loop.patch" Content-Disposition: attachment; filename="0001-loopback-create-blackhole-net-device-similar-to-loop.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jrwi29120 RnJvbSA4YWExNTJlMGZlYjkyOTQ3OWVmM2YyZjkzZmRkMmVkY2Y2ZjQ2M2I4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYWhlc2ggQmFuZGV3YXIgPG1haGVzaGJAZ29vZ2xlLmNvbT4K RGF0ZTogVGh1LCA0IE9jdCAyMDE4IDEzOjMzOjM4IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAxLzNd IGxvb3BiYWNrOiBjcmVhdGUgYmxhY2tob2xlIG5ldCBkZXZpY2Ugc2ltaWxhciB0byBsb29wYWNr LgoKQ3JlYXRlIGEgYmxhY2tob2xlIG5ldCBkZXZpY2UgdGhhdCBjYW4gYmUgdXNlZCBmb3IgImRl YWQiCmRzdCBlbnRyaWVzIGluc3RlYWQgb2YgbG9vcGJhY2sgZGV2aWNlLiBUaGlzIGJsYWNraG9s ZSBkZXZpY2UgZGlmZmVycwpmcm9tIGxvb3BiYWNrIGluIGZldyBhc3BlY3RzOiAoYSkgSXQncyBu b3QgcGVyLW5zLiAoYikgIE1UVSBvbiB0aGlzCmRldmljZSBpcyBFVEhfTUlOX01UVSAoYykgVGhl IHhtaXQgZnVuY3Rpb24gaXMgZXNzZW50aWFsbHkga2ZyZWVfc2tiKCkuCmFuZCAoZCkgc2luY2Ug aXQncyBub3QgcmVnaXN0ZWQgaXQgd29udCBoYXZlIGlmaW5kZXguCgpMb3dlciBNVFUgZWZmZWN0 aXZlbHkgbWFrZSB0aGUgZGV2aWNlIG5vdCBwYXNzIHRoZSBNVFUgY2hlY2sgZHVyaW5nCnRoZSBy b3V0ZSBjaGVjayB3aGVuIGEgZHN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgc2tiIGlzIGRlYWQuCgpD aGFuZ2UtSWQ6IEkxOWZiM2RmZDdhOTFjOGNiYTZjMjkyNzRlODAyNjkzNzFmYzZkNTRhClNpZ25l ZC1vZmYtYnk6IE1haGVzaCBCYW5kZXdhciA8bWFoZXNoYkBnb29nbGUuY29tPgotLS0KIGRyaXZl cnMvbmV0L2xvb3BiYWNrLmMgICAgfCA3NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0KIGluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmggfCAgMiArKwogMiBmaWxlcyBjaGFu Z2VkLCA2OSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbmV0L2xvb3BiYWNrLmMgYi9kcml2ZXJzL25ldC9sb29wYmFjay5jCmluZGV4IDJkZjdmNjBm ZTA1Mi4uNDhkNzg0MmQ1ZjljIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9sb29wYmFjay5jCisr KyBiL2RyaXZlcnMvbmV0L2xvb3BiYWNrLmMKQEAgLTU5LDYgKzU5LDEzIEBACiAjaW5jbHVkZSA8 bmV0L25ldF9uYW1lc3BhY2UuaD4KICNpbmNsdWRlIDxsaW51eC91NjRfc3RhdHNfc3luYy5oPgog CisvKiBibGFja2hvbGVfbmV0ZGV2IC0gYSBkZXZpY2UgdXNlZCBmb3IgZHN0cyB0aGF0IGFyZSBt YXJrZWQgZXhwaXJlZCEKKyAqIFRoaXMgaXMgZ2xvYmFsIGRldmljZSAoaW5zdGVhZCBvZiBwZXIt bmV0LW5zKSBzaW5jZSBpdCdzIG5vdCBuZWVkZWQKKyAqIHRvIGJlIHBlci1ucyBhbmQgZ2V0cyBp bml0aWFsaXplZCBhdCBib290IHRpbWUuCisgKi8KK3N0cnVjdCBuZXRfZGV2aWNlICpibGFja2hv bGVfbmV0ZGV2OworRVhQT1JUX1NZTUJPTChibGFja2hvbGVfbmV0ZGV2KTsKKwogLyogVGhlIGhp Z2hlciBsZXZlbHMgdGFrZSBjYXJlIG9mIG1ha2luZyB0aGlzIG5vbi1yZWVudHJhbnQgKGl0J3MK ICAqIGNhbGxlZCB3aXRoIGJoJ3MgZGlzYWJsZWQpLgogICovCkBAIC0xNjYsMTIgKzE3MywxNCBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGxvb3BiYWNrX29wcyA9IHsKIAku bmRvX3NldF9tYWNfYWRkcmVzcyA9IGV0aF9tYWNfYWRkciwKIH07CiAKLS8qIFRoZSBsb29wYmFj ayBkZXZpY2UgaXMgc3BlY2lhbC4gVGhlcmUgaXMgb25seSBvbmUgaW5zdGFuY2UKLSAqIHBlciBu ZXR3b3JrIG5hbWVzcGFjZS4KLSAqLwotc3RhdGljIHZvaWQgbG9vcGJhY2tfc2V0dXAoc3RydWN0 IG5ldF9kZXZpY2UgKmRldikKK3N0YXRpYyB2b2lkIGdlbl9sb19zZXR1cChzdHJ1Y3QgbmV0X2Rl dmljZSAqZGV2LAorCQkJIHVuc2lnbmVkIGludCBtdHUsCisJCQkgY29uc3Qgc3RydWN0IGV0aHRv b2xfb3BzICpldGhfb3BzLAorCQkJIGNvbnN0IHN0cnVjdCBoZWFkZXJfb3BzICpoZHJfb3BzLAor CQkJIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyAqZGV2X29wcywKKwkJCSB2b2lkICgqZGV2 X2Rlc3RydWN0b3IpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpKQogewotCWRldi0+bXR1CQk9IDY0 ICogMTAyNDsKKwlkZXYtPm10dQkJPSBtdHU7CiAJZGV2LT5oYXJkX2hlYWRlcl9sZW4JPSBFVEhf SExFTjsJLyogMTQJKi8KIAlkZXYtPm1pbl9oZWFkZXJfbGVuCT0gRVRIX0hMRU47CS8qIDE0CSov CiAJZGV2LT5hZGRyX2xlbgkJPSBFVEhfQUxFTjsJLyogNgkqLwpAQCAtMTkwLDExICsxOTksMjAg QEAgc3RhdGljIHZvaWQgbG9vcGJhY2tfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJ fCBORVRJRl9GX05FVE5TX0xPQ0FMCiAJCXwgTkVUSUZfRl9WTEFOX0NIQUxMRU5HRUQKIAkJfCBO RVRJRl9GX0xPT1BCQUNLOwotCWRldi0+ZXRodG9vbF9vcHMJPSAmbG9vcGJhY2tfZXRodG9vbF9v cHM7Ci0JZGV2LT5oZWFkZXJfb3BzCQk9ICZldGhfaGVhZGVyX29wczsKLQlkZXYtPm5ldGRldl9v cHMJCT0gJmxvb3BiYWNrX29wczsKKwlkZXYtPmV0aHRvb2xfb3BzCT0gZXRoX29wczsKKwlkZXYt PmhlYWRlcl9vcHMJCT0gaGRyX29wczsKKwlkZXYtPm5ldGRldl9vcHMJCT0gZGV2X29wczsKIAlk ZXYtPm5lZWRzX2ZyZWVfbmV0ZGV2CT0gdHJ1ZTsKLQlkZXYtPnByaXZfZGVzdHJ1Y3Rvcgk9IGxv b3BiYWNrX2Rldl9mcmVlOworCWRldi0+cHJpdl9kZXN0cnVjdG9yCT0gZGV2X2Rlc3RydWN0b3I7 Cit9CisKKy8qIFRoZSBsb29wYmFjayBkZXZpY2UgaXMgc3BlY2lhbC4gVGhlcmUgaXMgb25seSBv bmUgaW5zdGFuY2UKKyAqIHBlciBuZXR3b3JrIG5hbWVzcGFjZS4KKyAqLworc3RhdGljIHZvaWQg bG9vcGJhY2tfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKK3sKKwlnZW5fbG9fc2V0dXAo ZGV2LCAoNjQgKiAxMDI0KSwgJmxvb3BiYWNrX2V0aHRvb2xfb3BzLCAmZXRoX2hlYWRlcl9vcHMs CisJCSAgICAgJmxvb3BiYWNrX29wcywgbG9vcGJhY2tfZGV2X2ZyZWUpOwogfQogCiAvKiBTZXR1 cCBhbmQgcmVnaXN0ZXIgdGhlIGxvb3BiYWNrIGRldmljZS4gKi8KQEAgLTIyOSwzICsyNDcsNDMg QEAgc3RhdGljIF9fbmV0X2luaXQgaW50IGxvb3BiYWNrX25ldF9pbml0KHN0cnVjdCBuZXQgKm5l dCkKIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBfX25ldF9pbml0ZGF0YSBsb29wYmFja19uZXRf b3BzID0gewogCS5pbml0ID0gbG9vcGJhY2tfbmV0X2luaXQsCiB9OworCisvKiBibGFja2hvbGUg bmV0ZGV2aWNlICovCitzdGF0aWMgbmV0ZGV2X3R4X3QgYmxhY2tob2xlX25ldGRldl94bWl0KHN0 cnVjdCBza19idWZmICpza2IsCisJCQkJCSBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCWtm cmVlX3NrYihza2IpOworCW5ldF93YXJuX3JhdGVsaW1pdGVkKCIlcygpOiBEcm9wcGluZyBza2Iu XG4iLCBfX2Z1bmNfXyk7CisJcmV0dXJuIE5FVERFVl9UWF9PSzsKK30KKworc3RhdGljIGNvbnN0 IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBibGFja2hvbGVfbmV0ZGV2X29wcyA9IHsKKwkubmRvX3N0 YXJ0X3htaXQgPSBibGFja2hvbGVfbmV0ZGV2X3htaXQsCit9OworCisvKiBUaGlzIGlzIGEgZHN0 LWR1bW15IGRldmljZSB1c2VkIHNwZWNpZmljYWxseSBmb3IgaW52YWxpZGF0ZWQKKyAqIERTVHMg YW5kIHVubGlrZSBsb29wYmFjaywgdGhpcyBpcyBub3QgcGVyLW5zLgorICovCitzdGF0aWMgdm9p ZCBibGFja2hvbGVfbmV0ZGV2X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCit7CisJZ2Vu X2xvX3NldHVwKGRldiwgRVRIX01JTl9NVFUsIE5VTEwsIE5VTEwsICZibGFja2hvbGVfbmV0ZGV2 X29wcywgTlVMTCk7Cit9CisKKy8qIFNldHVwIGFuZCByZWdpc3RlciB0aGUgYmxhY2tob2xlX25l dGRldi4gKi8KK3N0YXRpYyBpbnQgX19pbml0IGJsYWNraG9sZV9uZXRkZXZfaW5pdCh2b2lkKQor eworCWJsYWNraG9sZV9uZXRkZXYgPSBhbGxvY19uZXRkZXYoMCwgImJsYWNraG9sZV9kZXYiLCBO RVRfTkFNRV9VTktOT1dOLAorCQkJCQlibGFja2hvbGVfbmV0ZGV2X3NldHVwKTsKKwlpZiAoIWJs YWNraG9sZV9uZXRkZXYpCisJCXJldHVybiAtRU5PTUVNOworCisJZGV2X2luaXRfc2NoZWR1bGVy KGJsYWNraG9sZV9uZXRkZXYpOworCWRldl9hY3RpdmF0ZShibGFja2hvbGVfbmV0ZGV2KTsKKwor CWJsYWNraG9sZV9uZXRkZXYtPmZsYWdzIHw9IElGRl9VUCB8IElGRl9SVU5OSU5HOworCWRldl9u ZXRfc2V0KGJsYWNraG9sZV9uZXRkZXYsICZpbml0X25ldCk7CisKKwlyZXR1cm4gMDsKK30KKwor ZGV2aWNlX2luaXRjYWxsKGJsYWNraG9sZV9uZXRkZXZfaW5pdCk7CmRpZmYgLS1naXQgYS9pbmNs dWRlL2xpbnV4L25ldGRldmljZS5oIGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaAppbmRleCAx ZDk1ZTYzNGYzZmUuLmMxMGNiYTEwMzg4YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9uZXRk ZXZpY2UuaAorKysgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oCkBAIC00ODQ4LDQgKzQ4NDgs NiBAQCBkbyB7CQkJCQkJCQlcCiAjZGVmaW5lIFBUWVBFX0hBU0hfU0laRQkoMTYpCiAjZGVmaW5l IFBUWVBFX0hBU0hfTUFTSwkoUFRZUEVfSEFTSF9TSVpFIC0gMSkKIAorZXh0ZXJuIHN0cnVjdCBu ZXRfZGV2aWNlICpibGFja2hvbGVfbmV0ZGV2OworCiAjZW5kaWYJLyogX0xJTlVYX05FVERFVklD RV9IICovCi0tIAoyLjIwLjEuNzkxLmdiNGQwZjFjNjFhLWdvb2cKCg== --00000000000005412c058167c6fc Content-Type: application/octet-stream; name="0002-blackhole_netdev-use-blackhole_netdev-to-invalidate-.patch" Content-Disposition: attachment; filename="0002-blackhole_netdev-use-blackhole_netdev-to-invalidate-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jrwi2epm1 RnJvbSA4Y2EwMjhjOGE1MWYwZThiOTM3NmMxOTVmZTk2MDg2ZDRkZmExOGFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYWhlc2ggQmFuZGV3YXIgPG1haGVzaGJAZ29vZ2xlLmNvbT4K RGF0ZTogVGh1LCA0IE9jdCAyMDE4IDEzOjQwOjMxIC0wNzAwClN1YmplY3Q6IFtQQVRDSCAyLzNd IGJsYWNraG9sZV9uZXRkZXY6IHVzZSBibGFja2hvbGVfbmV0ZGV2IHRvIGludmFsaWRhdGUgZHN0 CiBlbnRyaWVzCgpVc2UgYmxhY2tob2xlX25ldGRldiBpbnN0ZWFkIG9mICdsbycgZGV2aWNlICB3 aXRoIGxvd2VyIE1UVSB3aGVuIG1hcmtpbmcKZHN0ICJkZWFkIi4KCkNoYW5nZS1JZDogSTZjNWNm NGJiNmFhZmU1MGVjM2FkMzFkZWZhMDM5MDZiMDBiMmNkOGIKU2lnbmVkLW9mZi1ieTogTWFoZXNo IEJhbmRld2FyIDxtYWhlc2hiQGdvb2dsZS5jb20+Ci0tLQogbmV0L2NvcmUvZHN0LmMgICB8IDIg Ky0KIG5ldC9pcHY0L3JvdXRlLmMgfCAzICstLQogbmV0L2lwdjYvcm91dGUuYyB8IDIgKy0KIDMg ZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL25ldC9jb3JlL2RzdC5jIGIvbmV0L2NvcmUvZHN0LmMKaW5kZXggYTI2MzMwOWRmMTE1Li5h MDdiMDVkMGE4MjYgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL2RzdC5jCisrKyBiL25ldC9jb3JlL2Rz dC5jCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBkc3RfZGV2X3B1dChzdHJ1Y3QgZHN0X2VudHJ5 ICpkc3QpCiAJCWRzdC0+b3BzLT5pZmRvd24oZHN0LCBkZXYsIHRydWUpOwogCWRzdC0+aW5wdXQg PSBkc3RfZGlzY2FyZDsKIAlkc3QtPm91dHB1dCA9IGRzdF9kaXNjYXJkX291dDsKLQlkc3QtPmRl diA9IGRldl9uZXQoZHN0LT5kZXYpLT5sb29wYmFja19kZXY7CisJZHN0LT5kZXYgPSBibGFja2hv bGVfbmV0ZGV2OwogCWRldl9ob2xkKGRzdC0+ZGV2KTsKIAlkZXZfcHV0KGRldik7CiB9CmRpZmYg LS1naXQgYS9uZXQvaXB2NC9yb3V0ZS5jIGIvbmV0L2lwdjQvcm91dGUuYwppbmRleCAxNjI1OWVh OWRmNTQuLjRlNGYxYjM2ZTMwNiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvcm91dGUuYworKysgYi9u ZXQvaXB2NC9yb3V0ZS5jCkBAIC0xNDg1LDcgKzE0ODUsNiBAQCBzdGF0aWMgdm9pZCBpcHY0X2Rz dF9kZXN0cm95KHN0cnVjdCBkc3RfZW50cnkgKmRzdCkKIAogdm9pZCBydF9mbHVzaF9kZXYoc3Ry dWN0IG5ldF9kZXZpY2UgKmRldikKIHsKLQlzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0KGRldik7 CiAJc3RydWN0IHJ0YWJsZSAqcnQ7CiAJaW50IGNwdTsKIApAQCAtMTQ5Niw3ICsxNDk1LDcgQEAg dm9pZCBydF9mbHVzaF9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJbGlzdF9mb3JfZWFj aF9lbnRyeShydCwgJnVsLT5oZWFkLCBydF91bmNhY2hlZCkgewogCQkJaWYgKHJ0LT5kc3QuZGV2 ICE9IGRldikKIAkJCQljb250aW51ZTsKLQkJCXJ0LT5kc3QuZGV2ID0gbmV0LT5sb29wYmFja19k ZXY7CisJCQlydC0+ZHN0LmRldiA9IGJsYWNraG9sZV9uZXRkZXY7CiAJCQlkZXZfaG9sZChydC0+ ZHN0LmRldik7CiAJCQlkZXZfcHV0KGRldik7CiAJCX0KZGlmZiAtLWdpdCBhL25ldC9pcHY2L3Jv dXRlLmMgYi9uZXQvaXB2Ni9yb3V0ZS5jCmluZGV4IGRjMDY2ZmRmN2U0Ni4uYWNhMGU1NjUxZjVi IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9yb3V0ZS5jCisrKyBiL25ldC9pcHY2L3JvdXRlLmMKQEAg LTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgdm9pZCBydDZfdW5jYWNoZWRfbGlzdF9mbHVzaF9kZXYo c3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQkJfQogCiAJCQlpZiAo cnRfZGV2ID09IGRldikgewotCQkJCXJ0LT5kc3QuZGV2ID0gbG9vcGJhY2tfZGV2OworCQkJCXJ0 LT5kc3QuZGV2ID0gYmxhY2tob2xlX25ldGRldjsKIAkJCQlkZXZfaG9sZChydC0+ZHN0LmRldik7 CiAJCQkJZGV2X3B1dChydF9kZXYpOwogCQkJfQotLSAKMi4yMC4xLjc5MS5nYjRkMGYxYzYxYS1n b29nCgo= --00000000000005412c058167c6fc Content-Type: application/octet-stream; name="0003-blackhole_dev-add-a-selftest.patch" Content-Disposition: attachment; filename="0003-blackhole_dev-add-a-selftest.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jrwi2kzj2 RnJvbSA5OTI4MzIwNDBmZmUwOGIxMDZiYmYyMWMwZmE4YTczMTc2NTVkNTMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYWhlc2ggQmFuZGV3YXIgPG1haGVzaGJAZ29vZ2xlLmNvbT4K RGF0ZTogV2VkLCAxMCBPY3QgMjAxOCAxNToyNTowMSAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMy8z XSBibGFja2hvbGVfZGV2OiBhZGQgYSBzZWxmdGVzdAoKQ2hhbmdlLUlkOiBJYTA2YzNlZGMxMjRj NjUyZWUwMzgzM2ViNjBhNWM2MjI5ZDRjNGVjNQpTaWduZWQtb2ZmLWJ5OiBNYWhlc2ggQmFuZGV3 YXIgPG1haGVzaGJAZ29vZ2xlLmNvbT4KLS0tCiBsaWIvS2NvbmZpZy5kZWJ1ZyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDkgKysKIGxpYi9NYWtlZmlsZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBsaWIvdGVzdF9ibGFja2hvbGVfZGV2LmMgICAgICAg ICAgICAgICAgICAgICAgfCAxMDAgKysrKysrKysrKysrKysrKysrCiB0b29scy90ZXN0aW5nL3Nl bGZ0ZXN0cy9uZXQvTWFrZWZpbGUgICAgICAgICAgfCAgIDMgKy0KIHRvb2xzL3Rlc3Rpbmcvc2Vs ZnRlc3RzL25ldC9jb25maWcgICAgICAgICAgICB8ICAgMSArCiAuLi4vc2VsZnRlc3RzL25ldC90 ZXN0X2JsYWNraG9sZV9kZXYuc2ggICAgICAgfCAgMTEgKysKIDYgZmlsZXMgY2hhbmdlZCwgMTI0 IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdGVz dF9ibGFja2hvbGVfZGV2LmMKIGNyZWF0ZSBtb2RlIDEwMDc1NSB0b29scy90ZXN0aW5nL3NlbGZ0 ZXN0cy9uZXQvdGVzdF9ibGFja2hvbGVfZGV2LnNoCgpkaWZmIC0tZ2l0IGEvbGliL0tjb25maWcu ZGVidWcgYi9saWIvS2NvbmZpZy5kZWJ1ZwppbmRleCBkNGRmNWIyNGQ3NWUuLjU5M2VjZDRiYzgx NSAxMDA2NDQKLS0tIGEvbGliL0tjb25maWcuZGVidWcKKysrIGIvbGliL0tjb25maWcuZGVidWcK QEAgLTE5MDEsNiArMTkwMSwxNSBAQCBjb25maWcgVEVTVF9CUEYKIAogCSAgSWYgdW5zdXJlLCBz YXkgTi4KIAorY29uZmlnIFRFU1RfQkxBQ0tIT0xFX0RFVgorCXRyaXN0YXRlICJUZXN0IEJQRiBm aWx0ZXIgZnVuY3Rpb25hbGl0eSIKKwlkZXBlbmRzIG9uIG0gJiYgTkVUCisJaGVscAorCSAgVGhp cyBidWlsZHMgdGhlICJ0ZXN0X2JsYWNraG9sZV9kZXYiIG1vZHVsZSB0aGF0IHZhbGlkYXRlcyB0 aGUKKwkgIGRhdGEgcGF0aCB0aHJvdWdoIHRoaXMgYmxhY2tob2xlIG5ldGRldi4KKworCSAgSWYg dW5zdXJlLCBzYXkgTi4KKwogY29uZmlnIEZJTkRfQklUX0JFTkNITUFSSwogCXRyaXN0YXRlICJU ZXN0IGZpbmRfYml0IGZ1bmN0aW9ucyIKIAloZWxwCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUg Yi9saWIvTWFrZWZpbGUKaW5kZXggZTFiNTlkYTcxNDE4Li43MzNmNjZjZWI1MWEgMTAwNjQ0Ci0t LSBhL2xpYi9NYWtlZmlsZQorKysgYi9saWIvTWFrZWZpbGUKQEAgLTc2LDYgKzc2LDcgQEAgb2Jq LSQoQ09ORklHX1RFU1RfS01PRCkgKz0gdGVzdF9rbW9kLm8KIG9iai0kKENPTkZJR19URVNUX0RF QlVHX1ZJUlRVQUwpICs9IHRlc3RfZGVidWdfdmlydHVhbC5vCiBvYmotJChDT05GSUdfVEVTVF9N RU1DQVRfUCkgKz0gdGVzdF9tZW1jYXRfcC5vCiBvYmotJChDT05GSUdfVEVTVF9PQkpBR0cpICs9 IHRlc3Rfb2JqYWdnLm8KK29iai0kKENPTkZJR19URVNUX0JMQUNLSE9MRV9ERVYpICs9IHRlc3Rf YmxhY2tob2xlX2Rldi5vCiAKIGlmZXEgKCQoQ09ORklHX0RFQlVHX0tPQkpFQ1QpLHkpCiBDRkxB R1Nfa29iamVjdC5vICs9IC1EREVCVUcKZGlmZiAtLWdpdCBhL2xpYi90ZXN0X2JsYWNraG9sZV9k ZXYuYyBiL2xpYi90ZXN0X2JsYWNraG9sZV9kZXYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjRjNDA1ODBhOTlhMwotLS0gL2Rldi9udWxsCisrKyBiL2xpYi90ZXN0 X2JsYWNraG9sZV9kZXYuYwpAQCAtMCwwICsxLDEwMCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBUaGlzIG1vZHVsZSB0ZXN0cyB0aGUgYmxhY2tob2xlX2Rl diB0aGF0IGlzIGNyZWF0ZWQgZHVyaW5nIHRoZQorICogbmV0IHN1YnN5c3RlbSBpbml0aWFsaXph dGlvbi4gVGhlIHRlc3QgdGhpcyBtb2R1bGUgcGVyZm9ybXMgaXMKKyAqIGJ5IGluamVjdGluZyBh biBza2IgaW50byB0aGUgc3RhY2sgd2l0aCBza2ItPmRldiBhcyB0aGUKKyAqIGJsYWNraG9sZV9k ZXYgYW5kIGV4cGVjdHMga2VybmVsIHRvIGJlaGF2ZSBpbiBhIHNhbmUgbWFubmVyCisgKiAoaW4g b3RoZXIgd29yZHMsICpub3QgY3Jhc2gqKSEKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgsIE1h aGVzaCBCYW5kZXdhciA8bWFoZXNoYkBnb29nbGUuY29tPgorICovCisKKyNpbmNsdWRlIDxsaW51 eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvcHJp bnRrLmg+CisjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+CisjaW5jbHVkZSA8bGludXgvbmV0ZGV2 aWNlLmg+CisjaW5jbHVkZSA8bGludXgvdWRwLmg+CisjaW5jbHVkZSA8bGludXgvaXB2Ni5oPgor CisjaW5jbHVkZSA8bmV0L2RzdC5oPgorCisjZGVmaW5lIFNLQl9TSVpFICAyNTYKKyNkZWZpbmUg SEVBRF9TSVpFICgxNCs0MCs4KQkvKiBFdGhlciArIElQdjYgKyBVRFAgKi8KKyNkZWZpbmUgVEFJ TF9TSVpFIDMyCQkvKiByYW5kb20gdGFpbC1yb29tICovCisKKyNkZWZpbmUgVURQX1BPUlQgMTIz NAorCitzdGF0aWMgaW50IF9faW5pdCB0ZXN0X2JsYWNraG9sZWRldl9pbml0KHZvaWQpCit7CisJ c3RydWN0IGlwdjZoZHIgKmlwNmg7CisJc3RydWN0IHNrX2J1ZmYgKnNrYjsKKwlzdHJ1Y3QgZXRo aGRyICpldGhoOworCXN0cnVjdCB1ZHBoZHIgKnVoOworCWludCBkYXRhX2xlbjsKKwlpbnQgcmV0 OworCisJc2tiID0gYWxsb2Nfc2tiKFNLQl9TSVpFLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXNrYikK KwkJcmV0dXJuIC1FTk9NRU07CisKKwkvKiBSZXNlcnZlIGhlYWQtcm9vbSBmb3IgdGhlIGhlYWRl cnMgKi8KKwlza2JfcmVzZXJ2ZShza2IsIEhFQURfU0laRSk7CisKKwkvKiBBZGQgZGF0YSB0byB0 aGUgc2tiICovCisJZGF0YV9sZW4gPSBTS0JfU0laRSAtIChIRUFEX1NJWkUgKyBUQUlMX1NJWkUp OworCW1lbXNldChfX3NrYl9wdXQoc2tiLCBkYXRhX2xlbiksIDB4ZiwgZGF0YV9sZW4pOworCisJ LyogQWRkIHByb3RvY29sIGRhdGEgKi8KKwkvKiAoVHJhbnNwb3J0KSBVRFAgKi8KKwl1aCA9IChz dHJ1Y3QgdWRwaGRyICopc2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IHVkcGhkcikpOworCXNr Yl9zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IsIDApOworCXVoLT5zb3VyY2UgPSB1aC0+ZGVzdCA9 IGh0b25zKFVEUF9QT1JUKTsKKwl1aC0+bGVuID0gaHRvbnMoZGF0YV9sZW4pOworCXVoLT5jaGVj ayA9IDA7CisJLyogKE5ldHdvcmspIElQdjYgKi8KKwlpcDZoID0gKHN0cnVjdCBpcHY2aGRyICop c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGlwdjZoZHIpKTsKKwlza2Jfc2V0X25ldHdvcmtf aGVhZGVyKHNrYiwgMCk7CisJaXA2aC0+aG9wX2xpbWl0ID0gMzI7CisJaXA2aC0+cGF5bG9hZF9s ZW4gPSBkYXRhX2xlbiArIHNpemVvZihzdHJ1Y3QgdWRwaGRyKTsKKwlpcDZoLT5uZXh0aGRyID0g SVBQUk9UT19VRFA7CisJaXA2aC0+c2FkZHIgPSBpbjZhZGRyX2xvb3BiYWNrOworCWlwNmgtPmRh ZGRyID0gaW42YWRkcl9sb29wYmFjazsKKwkvKiBFdGhlciAqLworCWV0aGggPSAoc3RydWN0IGV0 aGhkciAqKXNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBldGhoZHIpKTsKKwlza2Jfc2V0X21h Y19oZWFkZXIoc2tiLCAwKTsKKworCXNrYi0+cHJvdG9jb2wgPSBodG9ucyhFVEhfUF9JUFY2KTsK Kwlza2ItPnBrdF90eXBlID0gUEFDS0VUX0hPU1Q7CisJc2tiLT5kZXYgPSBibGFja2hvbGVfbmV0 ZGV2OworCisJLyogTm93IGF0dGVtcHQgdG8gc2VuZCB0aGUgcGFja2V0ICovCisJcmV0ID0gZGV2 X3F1ZXVlX3htaXQoc2tiKTsKKworCXN3aXRjaCAocmV0KSB7CisJY2FzZSBORVRfWE1JVF9TVUND RVNTOgorCQlwcl93YXJuKCJkZXZfcXVldWVfeG1pdCgpIHJldHVybmVkIE5FVF9YTUlUX1NVQ0NF U1NcbiIpOworCQlicmVhazsKKwljYXNlIE5FVF9YTUlUX0RST1A6CisJCXByX3dhcm4oImRldl9x dWV1ZV94bWl0KCkgcmV0dXJuZWQgTkVUX1hNSVRfRFJPUFxuIik7CisJCWJyZWFrOworCWNhc2Ug TkVUX1hNSVRfQ046CisJCXByX3dhcm4oImRldl9xdWV1ZV94bWl0KCkgcmV0dXJuZWQgTkVUX1hN SVRfQ05cbiIpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlwcl9lcnIoImRldl9xdWV1ZV94bWl0 KCkgcmV0dXJuZWQgVU5LTk9XTiglZClcbiIsIHJldCk7CisJfQorCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyB2b2lkIF9fZXhpdCB0ZXN0X2JsYWNraG9sZWRldl9leGl0KHZvaWQpCit7CisJcHJf d2FybigidGVzdF9ibGFja2hvbGVkZXYgbW9kdWxlIHRlcm1pbmF0aW5nLlxuIik7Cit9CisKK21v ZHVsZV9pbml0KHRlc3RfYmxhY2tob2xlZGV2X2luaXQpOworbW9kdWxlX2V4aXQodGVzdF9ibGFj a2hvbGVkZXZfZXhpdCk7CisKK01PRFVMRV9BVVRIT1IoIk1haGVzaCBCYW5kZXdhciA8bWFoZXNo YkBnb29nbGUuY29tPiIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEvdG9v bHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVz dHMvbmV0L01ha2VmaWxlCmluZGV4IGY4ZjNlOTA3MDBjMC4uODk1MmIyMDM5ZmRjIDEwMDY0NAot LS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUKKysrIGIvdG9vbHMvdGVz dGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlCkBAIC00LDggKzQsOSBAQAogQ0ZMQUdTID0gIC1X YWxsIC1XbCwtLW5vLWFzLW5lZWRlZCAtTzIgLWcKIENGTEFHUyArPSAtSS4uLy4uLy4uLy4uL3Vz ci9pbmNsdWRlLwogCis8PDw8PDw8IEhFQUQKIFRFU1RfUFJPR1MgOj0gcnVuX25ldHNvY2t0ZXN0 cyBydW5fYWZwYWNrZXR0ZXN0cyB0ZXN0X2JwZi5zaCBuZXRkZXZpY2Uuc2ggXAotCSAgICAgIHJ0 bmV0bGluay5zaCB4ZnJtX3BvbGljeS5zaAorCSAgICAgIHJ0bmV0bGluay5zaCB4ZnJtX3BvbGlj eS5zaCB0ZXN0X2JsYWNraG9sZV9kZXYuc2gKIFRFU1RfUFJPR1MgKz0gZmliX3Rlc3RzLnNoIGZp Yi1vbmxpbmstdGVzdHMuc2ggcG10dS5zaCB1ZHBnc28uc2ggaXBfZGVmcmFnLnNoCiBURVNUX1BS T0dTICs9IHVkcGdzb19iZW5jaC5zaCBmaWJfcnVsZV90ZXN0cy5zaCBtc2dfemVyb2NvcHkuc2gg cHNvY2tfc25kLnNoCiBURVNUX1BST0dTICs9IHVkcGdyb19iZW5jaC5zaCB1ZHBncm8uc2ggdGVz dF92eGxhbl91bmRlcl92cmYuc2ggcmV1c2Vwb3J0X2FkZHJfYW55LnNoCmRpZmYgLS1naXQgYS90 b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVz dHMvbmV0L2NvbmZpZwppbmRleCA1ODIxYmRkOThkMjAuLjQ1NTNjNzM2N2FhZCAxMDA2NDQKLS0t IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZworKysgYi90b29scy90ZXN0aW5n L3NlbGZ0ZXN0cy9uZXQvY29uZmlnCkBAIC0yOCwzICsyOCw0IEBAIENPTkZJR19ORl9UQUJMRVNf SVBWNj15CiBDT05GSUdfTkZfVEFCTEVTX0lQVjQ9eQogQ09ORklHX05GVF9DSEFJTl9OQVRfSVBW Nj1tCiBDT05GSUdfTkZUX0NIQUlOX05BVF9JUFY0PW0KK0NPTkZJR19URVNUX0JMQUNLSE9MRV9E RVY9bQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Rlc3RfYmxhY2to b2xlX2Rldi5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90ZXN0X2JsYWNraG9sZV9k ZXYuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwLi4zMTE5YjgwZTcx MWYKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGVzdF9i bGFja2hvbGVfZGV2LnNoCkBAIC0wLDAgKzEsMTEgQEAKKyMhL2Jpbi9zaAorIyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMAorIyBSdW5zIGJsYWNraG9sZS1kZXYgdGVzdCB1c2luZyBi bGFja2hvbGUtZGV2IGtlcm5lbCBtb2R1bGUKKworaWYgL3NiaW4vbW9kcHJvYmUgLXEgdGVzdF9i bGFja2hvbGVfZGV2IDsgdGhlbgorCS9zYmluL21vZHByb2JlIC1xIC1yIHRlc3RfYmxhY2tob2xl X2RldjsKKwllY2hvICJ0ZXN0X2JsYWNraG9sZV9kZXY6IG9rIjsKK2Vsc2UKKwllY2hvICJ0ZXN0 X2JsYWNraG9sZV9kZXY6IFtGQUlMXSI7CisJZXhpdCAxOworZmkKLS0gCjIuMjAuMS43OTEuZ2I0 ZDBmMWM2MWEtZ29vZwoK --00000000000005412c058167c6fc--