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=-9.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 98EFEC43381 for ; Sat, 30 Mar 2019 01:39:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 654962184C for ; Sat, 30 Mar 2019 01:39:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1553909986; bh=wFBjDRC1cmKCA36nkAYZ/nKjJl0ch7eCLOt4oToGhmQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=HZOVEQqJ7A29x9/EgM+YCHvn/HRtF5T5c1JTrsEOj+vgjeO+8BLupOyuDAJFiVpHH IuHvMWOo05f6RbMLYYLFow5jWW9GTt8PcccBs3VazaxBCPE+vIrEJ2k5bEl8JB9Cx+ IR7FqYRnNrkoGGgNND2HY0pvbwkqpSq62pTDI2wA= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731552AbfC3Bjo (ORCPT ); Fri, 29 Mar 2019 21:39:44 -0400 Received: from mail.kernel.org ([198.145.29.99]:36932 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731245AbfC3BaA (ORCPT ); Fri, 29 Mar 2019 21:30:00 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id D90BA218D9; Sat, 30 Mar 2019 01:29:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1553909399; bh=wFBjDRC1cmKCA36nkAYZ/nKjJl0ch7eCLOt4oToGhmQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fd+7FqUqClrIup5dQP43QuMTluC0F7FWpG5k8NgoehBhwL+3Mw4VWdys0tDpd8UOZ cgYXlOsqVWHuMf4oU0BkNwJUzUmwekxr2LCcXgQUHW0miOD+9hvC2tfiYRVf0OROqF YCM4ayym3330d72jTA7N2QPZNlgk2rmJICN8yp9I= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Trigger Huang , Alex Deucher , Sasha Levin , dri-devel@lists.freedesktop.org Subject: [PATCH AUTOSEL 4.19 29/57] drm/ttm: Fix bo_global and mem_global kfree error Date: Fri, 29 Mar 2019 21:28:22 -0400 Message-Id: <20190330012854.32212-29-sashal@kernel.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190330012854.32212-1-sashal@kernel.org> References: <20190330012854.32212-1-sashal@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Trigger Huang [ Upstream commit 30f33126feca0fe16df9e9302ffc28a953e2eb37 ] ttm_bo_glob and ttm_mem_glob are defined as structure instance, while not allocated by kzalloc, so kfree should not be invoked to release them anymore. Otherwise, it will cause the following kernel BUG when unloading amdgpu module [ 48.419294] kernel BUG at /build/linux-5s7Xkn/linux-4.15.0/mm/slub.c:3894! [ 48.419352] invalid opcode: 0000 [#1] SMP PTI [ 48.419387] Modules linked in: amdgpu(OE-) amdchash(OE) amdttm(OE) amd_sched(OE) amdkcl(OE) amd_iommu_v2 drm_kms_helper drm i2c_algo_bit fb_sys_fops syscopyarea sysfillrect sysimgblt snd_hda_codec_generic snd_hda_intel snd_hda_codec snd_hda_core snd_hwdep kvm_intel kvm irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel snd_pcm snd_seq_midi snd_seq_midi_event snd_rawmidi pcbc snd_seq snd_seq_device snd_timer aesni_intel snd soundcore joydev aes_x86_64 crypto_simd glue_helper cryptd input_leds mac_hid serio_raw binfmt_misc nfsd auth_rpcgss nfs_acl lockd grace sunrpc sch_fq_codel parport_pc ppdev lp parport ip_tables x_tables autofs4 8139too psmouse i2c_piix4 8139cp mii floppy pata_acpi [ 48.419782] CPU: 1 PID: 1281 Comm: modprobe Tainted: G OE 4.15.0-20-generic #21-Ubuntu [ 48.419838] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014 [ 48.419901] RIP: 0010:kfree+0x137/0x180 [ 48.419934] RSP: 0018:ffffb02101273bf8 EFLAGS: 00010246 [ 48.419974] RAX: ffffeee1418ad7e0 RBX: ffffffffc075f100 RCX: ffff8fed7fca7ed0 [ 48.420025] RDX: 0000000000000000 RSI: 000000000003440e RDI: 0000000022400000 [ 48.420073] RBP: ffffb02101273c10 R08: 0000000000000010 R09: ffff8fed7ffd3680 [ 48.420121] R10: ffffeee1418ad7c0 R11: ffff8fed7ffd3000 R12: ffffffffc075e2c0 [ 48.420169] R13: ffffffffc074ec10 R14: ffff8fed73063900 R15: ffff8fed737428e8 [ 48.420216] FS: 00007fdc912ec540(0000) GS:ffff8fed7fc80000(0000) knlGS:0000000000000000 [ 48.420267] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 48.420308] CR2: 000055fa40c30060 CR3: 000000023470a006 CR4: 00000000003606e0 [ 48.420358] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 48.420405] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 48.420452] Call Trace: [ 48.420485] ttm_bo_global_kobj_release+0x20/0x30 [amdttm] [ 48.420528] kobject_release+0x6a/0x180 [ 48.420562] kobject_put+0x28/0x50 [ 48.420595] ttm_bo_global_release+0x36/0x50 [amdttm] [ 48.420636] amdttm_bo_device_release+0x119/0x180 [amdttm] [ 48.420678] ? amdttm_bo_clean_mm+0xa6/0xf0 [amdttm] [ 48.420760] amdgpu_ttm_fini+0xc9/0x180 [amdgpu] [ 48.420821] amdgpu_bo_fini+0x12/0x40 [amdgpu] [ 48.420889] gmc_v9_0_sw_fini+0x40/0x50 [amdgpu] [ 48.420947] amdgpu_device_fini+0x36f/0x4c0 [amdgpu] [ 48.421007] amdgpu_driver_unload_kms+0xb4/0x150 [amdgpu] [ 48.421058] drm_dev_unregister+0x46/0xf0 [drm] [ 48.421102] drm_dev_unplug+0x12/0x70 [drm] Signed-off-by: Trigger Huang Reviewed-by: Christian König Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- drivers/gpu/drm/ttm/ttm_bo.c | 1 - drivers/gpu/drm/ttm/ttm_memory.c | 9 --------- 2 files changed, 10 deletions(-) diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index 7c484729f9b2..268f5a3b3122 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c @@ -1445,7 +1445,6 @@ static void ttm_bo_global_kobj_release(struct kobject *kobj) container_of(kobj, struct ttm_bo_global, kobj); __free_page(glob->dummy_read_page); - kfree(glob); } void ttm_bo_global_release(struct drm_global_reference *ref) diff --git a/drivers/gpu/drm/ttm/ttm_memory.c b/drivers/gpu/drm/ttm/ttm_memory.c index 450387c92b63..df73d5ff84a8 100644 --- a/drivers/gpu/drm/ttm/ttm_memory.c +++ b/drivers/gpu/drm/ttm/ttm_memory.c @@ -216,14 +216,6 @@ static ssize_t ttm_mem_global_store(struct kobject *kobj, return size; } -static void ttm_mem_global_kobj_release(struct kobject *kobj) -{ - struct ttm_mem_global *glob = - container_of(kobj, struct ttm_mem_global, kobj); - - kfree(glob); -} - static struct attribute *ttm_mem_global_attrs[] = { &ttm_mem_global_lower_mem_limit, NULL @@ -235,7 +227,6 @@ static const struct sysfs_ops ttm_mem_global_ops = { }; static struct kobj_type ttm_mem_glob_kobj_type = { - .release = &ttm_mem_global_kobj_release, .sysfs_ops = &ttm_mem_global_ops, .default_attrs = ttm_mem_global_attrs, }; -- 2.19.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Subject: [PATCH AUTOSEL 4.19 29/57] drm/ttm: Fix bo_global and mem_global kfree error Date: Fri, 29 Mar 2019 21:28:22 -0400 Message-ID: <20190330012854.32212-29-sashal@kernel.org> References: <20190330012854.32212-1-sashal@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id B73B76E56E for ; Sat, 30 Mar 2019 01:29:59 +0000 (UTC) In-Reply-To: <20190330012854.32212-1-sashal@kernel.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Alex Deucher , Sasha Levin , dri-devel@lists.freedesktop.org, Trigger Huang List-Id: dri-devel@lists.freedesktop.org RnJvbTogVHJpZ2dlciBIdWFuZyA8VHJpZ2dlci5IdWFuZ0BhbWQuY29tPgoKWyBVcHN0cmVhbSBj b21taXQgMzBmMzMxMjZmZWNhMGZlMTZkZjllOTMwMmZmYzI4YTk1M2UyZWIzNyBdCgp0dG1fYm9f Z2xvYiBhbmQgdHRtX21lbV9nbG9iIGFyZSBkZWZpbmVkIGFzIHN0cnVjdHVyZSBpbnN0YW5jZSwg d2hpbGUKbm90IGFsbG9jYXRlZCBieSBremFsbG9jLCBzbyBrZnJlZSBzaG91bGQgbm90IGJlIGlu dm9rZWQgdG8gcmVsZWFzZQp0aGVtIGFueW1vcmUuIE90aGVyd2lzZSwgaXQgd2lsbCBjYXVzZSB0 aGUgZm9sbG93aW5nIGtlcm5lbCBCVUcgd2hlbgp1bmxvYWRpbmcgYW1kZ3B1IG1vZHVsZQoKWyAg IDQ4LjQxOTI5NF0ga2VybmVsIEJVRyBhdCAvYnVpbGQvbGludXgtNXM3WGtuL2xpbnV4LTQuMTUu MC9tbS9zbHViLmM6Mzg5NCEKWyAgIDQ4LjQxOTM1Ml0gaW52YWxpZCBvcGNvZGU6IDAwMDAgWyMx XSBTTVAgUFRJClsgICA0OC40MTkzODddIE1vZHVsZXMgbGlua2VkIGluOiBhbWRncHUoT0UtKSBh bWRjaGFzaChPRSkgYW1kdHRtKE9FKSBhbWRfc2NoZWQoT0UpIGFtZGtjbChPRSkgYW1kX2lvbW11 X3YyIGRybV9rbXNfaGVscGVyIGRybSBpMmNfYWxnb19iaXQgZmJfc3lzX2ZvcHMgc3lzY29weWFy ZWEgc3lzZmlsbHJlY3Qgc3lzaW1nYmx0IHNuZF9oZGFfY29kZWNfZ2VuZXJpYyBzbmRfaGRhX2lu dGVsIHNuZF9oZGFfY29kZWMgc25kX2hkYV9jb3JlIHNuZF9od2RlcCBrdm1faW50ZWwga3ZtIGly cWJ5cGFzcyBjcmN0MTBkaWZfcGNsbXVsIGNyYzMyX3BjbG11bCBnaGFzaF9jbG11bG5pX2ludGVs IHNuZF9wY20gc25kX3NlcV9taWRpIHNuZF9zZXFfbWlkaV9ldmVudCBzbmRfcmF3bWlkaSBwY2Jj IHNuZF9zZXEgc25kX3NlcV9kZXZpY2Ugc25kX3RpbWVyIGFlc25pX2ludGVsIHNuZCBzb3VuZGNv cmUgam95ZGV2IGFlc194ODZfNjQgY3J5cHRvX3NpbWQgZ2x1ZV9oZWxwZXIgY3J5cHRkIGlucHV0 X2xlZHMgbWFjX2hpZCBzZXJpb19yYXcgYmluZm10X21pc2MgbmZzZCBhdXRoX3JwY2dzcyBuZnNf YWNsIGxvY2tkIGdyYWNlIHN1bnJwYyBzY2hfZnFfY29kZWwgcGFycG9ydF9wYyBwcGRldiBscCBw YXJwb3J0IGlwX3RhYmxlcyB4X3RhYmxlcyBhdXRvZnM0IDgxMzl0b28gcHNtb3VzZSBpMmNfcGlp eDQgODEzOWNwIG1paSBmbG9wcHkgcGF0YV9hY3BpClsgICA0OC40MTk3ODJdIENQVTogMSBQSUQ6 IDEyODEgQ29tbTogbW9kcHJvYmUgVGFpbnRlZDogRyAgICAgICAgICAgT0UgICAgNC4xNS4wLTIw LWdlbmVyaWMgIzIxLVVidW50dQpbICAgNDguNDE5ODM4XSBIYXJkd2FyZSBuYW1lOiBRRU1VIFN0 YW5kYXJkIFBDIChpNDQwRlggKyBQSUlYLCAxOTk2KSwgQklPUyBVYnVudHUtMS44LjItMXVidW50 dTEgMDQvMDEvMjAxNApbICAgNDguNDE5OTAxXSBSSVA6IDAwMTA6a2ZyZWUrMHgxMzcvMHgxODAK WyAgIDQ4LjQxOTkzNF0gUlNQOiAwMDE4OmZmZmZiMDIxMDEyNzNiZjggRUZMQUdTOiAwMDAxMDI0 NgpbICAgNDguNDE5OTc0XSBSQVg6IGZmZmZlZWUxNDE4YWQ3ZTAgUkJYOiBmZmZmZmZmZmMwNzVm MTAwIFJDWDogZmZmZjhmZWQ3ZmNhN2VkMApbICAgNDguNDIwMDI1XSBSRFg6IDAwMDAwMDAwMDAw MDAwMDAgUlNJOiAwMDAwMDAwMDAwMDM0NDBlIFJESTogMDAwMDAwMDAyMjQwMDAwMApbICAgNDgu NDIwMDczXSBSQlA6IGZmZmZiMDIxMDEyNzNjMTAgUjA4OiAwMDAwMDAwMDAwMDAwMDEwIFIwOTog ZmZmZjhmZWQ3ZmZkMzY4MApbICAgNDguNDIwMTIxXSBSMTA6IGZmZmZlZWUxNDE4YWQ3YzAgUjEx OiBmZmZmOGZlZDdmZmQzMDAwIFIxMjogZmZmZmZmZmZjMDc1ZTJjMApbICAgNDguNDIwMTY5XSBS MTM6IGZmZmZmZmZmYzA3NGVjMTAgUjE0OiBmZmZmOGZlZDczMDYzOTAwIFIxNTogZmZmZjhmZWQ3 Mzc0MjhlOApbICAgNDguNDIwMjE2XSBGUzogIDAwMDA3ZmRjOTEyZWM1NDAoMDAwMCkgR1M6ZmZm ZjhmZWQ3ZmM4MDAwMCgwMDAwKSBrbmxHUzowMDAwMDAwMDAwMDAwMDAwClsgICA0OC40MjAyNjdd IENTOiAgMDAxMCBEUzogMDAwMCBFUzogMDAwMCBDUjA6IDAwMDAwMDAwODAwNTAwMzMKWyAgIDQ4 LjQyMDMwOF0gQ1IyOiAwMDAwNTVmYTQwYzMwMDYwIENSMzogMDAwMDAwMDIzNDcwYTAwNiBDUjQ6 IDAwMDAwMDAwMDAzNjA2ZTAKWyAgIDQ4LjQyMDM1OF0gRFIwOiAwMDAwMDAwMDAwMDAwMDAwIERS MTogMDAwMDAwMDAwMDAwMDAwMCBEUjI6IDAwMDAwMDAwMDAwMDAwMDAKWyAgIDQ4LjQyMDQwNV0g RFIzOiAwMDAwMDAwMDAwMDAwMDAwIERSNjogMDAwMDAwMDBmZmZlMGZmMCBEUjc6IDAwMDAwMDAw MDAwMDA0MDAKWyAgIDQ4LjQyMDQ1Ml0gQ2FsbCBUcmFjZToKWyAgIDQ4LjQyMDQ4NV0gIHR0bV9i b19nbG9iYWxfa29ial9yZWxlYXNlKzB4MjAvMHgzMCBbYW1kdHRtXQpbICAgNDguNDIwNTI4XSAg a29iamVjdF9yZWxlYXNlKzB4NmEvMHgxODAKWyAgIDQ4LjQyMDU2Ml0gIGtvYmplY3RfcHV0KzB4 MjgvMHg1MApbICAgNDguNDIwNTk1XSAgdHRtX2JvX2dsb2JhbF9yZWxlYXNlKzB4MzYvMHg1MCBb YW1kdHRtXQpbICAgNDguNDIwNjM2XSAgYW1kdHRtX2JvX2RldmljZV9yZWxlYXNlKzB4MTE5LzB4 MTgwIFthbWR0dG1dClsgICA0OC40MjA2NzhdICA/IGFtZHR0bV9ib19jbGVhbl9tbSsweGE2LzB4 ZjAgW2FtZHR0bV0KWyAgIDQ4LjQyMDc2MF0gIGFtZGdwdV90dG1fZmluaSsweGM5LzB4MTgwIFth bWRncHVdClsgICA0OC40MjA4MjFdICBhbWRncHVfYm9fZmluaSsweDEyLzB4NDAgW2FtZGdwdV0K WyAgIDQ4LjQyMDg4OV0gIGdtY192OV8wX3N3X2ZpbmkrMHg0MC8weDUwIFthbWRncHVdClsgICA0 OC40MjA5NDddICBhbWRncHVfZGV2aWNlX2ZpbmkrMHgzNmYvMHg0YzAgW2FtZGdwdV0KWyAgIDQ4 LjQyMTAwN10gIGFtZGdwdV9kcml2ZXJfdW5sb2FkX2ttcysweGI0LzB4MTUwIFthbWRncHVdClsg ICA0OC40MjEwNThdICBkcm1fZGV2X3VucmVnaXN0ZXIrMHg0Ni8weGYwIFtkcm1dClsgICA0OC40 MjExMDJdICBkcm1fZGV2X3VucGx1ZysweDEyLzB4NzAgW2RybV0KClNpZ25lZC1vZmYtYnk6IFRy aWdnZXIgSHVhbmcgPFRyaWdnZXIuSHVhbmdAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6IENocmlzdGlh biBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KU2lnbmVkLW9mZi1ieTogQWxleCBE ZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPgpTaWduZWQtb2ZmLWJ5OiBTYXNoYSBM ZXZpbiA8c2FzaGFsQGtlcm5lbC5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm8u YyAgICAgfCAxIC0KIGRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX21lbW9yeS5jIHwgOSAtLS0tLS0t LS0KIDIgZmlsZXMgY2hhbmdlZCwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3R0bS90dG1fYm8uYyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMKaW5k ZXggN2M0ODQ3MjlmOWIyLi4yNjhmNWEzYjMxMjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS90dG0vdHRtX2JvLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm8uYwpAQCAtMTQ0 NSw3ICsxNDQ1LDYgQEAgc3RhdGljIHZvaWQgdHRtX2JvX2dsb2JhbF9rb2JqX3JlbGVhc2Uoc3Ry dWN0IGtvYmplY3QgKmtvYmopCiAJCWNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgdHRtX2JvX2ds b2JhbCwga29iaik7CiAKIAlfX2ZyZWVfcGFnZShnbG9iLT5kdW1teV9yZWFkX3BhZ2UpOwotCWtm cmVlKGdsb2IpOwogfQogCiB2b2lkIHR0bV9ib19nbG9iYWxfcmVsZWFzZShzdHJ1Y3QgZHJtX2ds b2JhbF9yZWZlcmVuY2UgKnJlZikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRt X21lbW9yeS5jIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fbWVtb3J5LmMKaW5kZXggNDUwMzg3 YzkyYjYzLi5kZjczZDVmZjg0YTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRt X21lbW9yeS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX21lbW9yeS5jCkBAIC0yMTYs MTQgKzIxNiw2IEBAIHN0YXRpYyBzc2l6ZV90IHR0bV9tZW1fZ2xvYmFsX3N0b3JlKHN0cnVjdCBr b2JqZWN0ICprb2JqLAogCXJldHVybiBzaXplOwogfQogCi1zdGF0aWMgdm9pZCB0dG1fbWVtX2ds b2JhbF9rb2JqX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopCi17Ci0Jc3RydWN0IHR0bV9t ZW1fZ2xvYmFsICpnbG9iID0KLQkJY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCB0dG1fbWVtX2ds b2JhbCwga29iaik7Ci0KLQlrZnJlZShnbG9iKTsKLX0KLQogc3RhdGljIHN0cnVjdCBhdHRyaWJ1 dGUgKnR0bV9tZW1fZ2xvYmFsX2F0dHJzW10gPSB7CiAJJnR0bV9tZW1fZ2xvYmFsX2xvd2VyX21l bV9saW1pdCwKIAlOVUxMCkBAIC0yMzUsNyArMjI3LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBz eXNmc19vcHMgdHRtX21lbV9nbG9iYWxfb3BzID0gewogfTsKIAogc3RhdGljIHN0cnVjdCBrb2Jq X3R5cGUgdHRtX21lbV9nbG9iX2tvYmpfdHlwZSA9IHsKLQkucmVsZWFzZSA9ICZ0dG1fbWVtX2ds b2JhbF9rb2JqX3JlbGVhc2UsCiAJLnN5c2ZzX29wcyA9ICZ0dG1fbWVtX2dsb2JhbF9vcHMsCiAJ LmRlZmF1bHRfYXR0cnMgPSB0dG1fbWVtX2dsb2JhbF9hdHRycywKIH07Ci0tIAoyLjE5LjEKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==