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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id ADF02C43334 for ; Thu, 7 Jul 2022 03:29:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234867AbiGGD3d (ORCPT ); Wed, 6 Jul 2022 23:29:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51110 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234818AbiGGD3c (ORCPT ); Wed, 6 Jul 2022 23:29:32 -0400 Received: from dggsgout11.his.huawei.com (unknown [45.249.212.51]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8C9FC30F4D for ; Wed, 6 Jul 2022 20:29:30 -0700 (PDT) Received: from mail02.huawei.com (unknown [172.30.67.143]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4LdhhL0BqQzKCdd for ; Thu, 7 Jul 2022 11:28:34 +0800 (CST) Received: from [10.174.176.73] (unknown [10.174.176.73]) by APP3 (Coremail) with SMTP id _Ch0CgAXemkWU8ZiH__bAQ--.22982S3; Thu, 07 Jul 2022 11:29:28 +0800 (CST) Subject: Re: [PATCH 7/8] dm: delay registering the gendisk To: Christoph Hellwig , Jens Axboe , Mike Snitzer Cc: dm-devel@redhat.com, linux-block@vger.kernel.org References: <20210804094147.459763-1-hch@lst.de> <20210804094147.459763-8-hch@lst.de> From: Yu Kuai Message-ID: Date: Thu, 7 Jul 2022 11:29:26 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <20210804094147.459763-8-hch@lst.de> Content-Type: text/plain; charset=gbk; format=flowed Content-Transfer-Encoding: 8bit X-CM-TRANSID: _Ch0CgAXemkWU8ZiH__bAQ--.22982S3 X-Coremail-Antispam: 1UD129KBjvJXoW3Gw1xuw43ZrWDZrW5Zw1UKFg_yoW3tr15pF 4UXrW5CrW8tr1Uta17tF1UAr1rtrsrAa4UXr4xAr10v3Wjkw1YqFy7CFWUAry7Jr4kXry7 tFyDJw1ktr1UKaUanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUyEb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6r1F6r1fM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4 vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_tr0E3s1l84ACjcxK6xIIjxv20xvEc7Cj xVAFwI0_Gr1j6F4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x 0267AKxVW0oVCq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG 6I80ewAv7VC0I7IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFV Cjc4AY6r1j6r4UM4x0Y48IcVAKI48JMxk0xIA0c2IEe2xFo4CEbIxvr21l42xK82IYc2Ij 64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x 8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAKI48JMIIF0xvE 2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r1j6r4UMIIF0xvE42 xK8VAvwI8IcIk0rVWrZr1j6s0DMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIE c7CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU1CPfJUUUUU== X-CM-SenderInfo: 51xn3trlr6x35dzhxuhorxvhhfrp/ X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org Hi, Christoph ÔÚ 2021/08/04 17:41, Christoph Hellwig дµÀ: > device mapper is currently the only outlier that tries to call > register_disk after add_disk, leading to fairly inconsistent state > of these block layer data structures. Instead change device-mapper > to just register the gendisk later now that the holder mechanism > can cope with that. > > Note that this introduces a user visible change: the dm kobject is > now only visible after the initial table has been loaded. > > Signed-off-by: Christoph Hellwig > Reviewed-by: Mike Snitzer We found that this patch fix a nullptr crash in our test: [ 88.727918] BUG: kernel NULL pointer dereference, address: 00000000000001a0 [ 88.730698] #PF: supervisor read access in kernel mode [ 88.731381] #PF: error_code(0x0000) - not-present page [ 88.732086] PGD 0 P4D 0 [ 88.732441] Oops: 0000 [#1] PREEMPT SMP [ 88.732964] CPU: 1 PID: 1317 Comm: mount Not tainted 5.10.0-16691-gf6076432827d-dirty #169 [ 88.734055] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS ?-20190727_073836-4 [ 88.735819] RIP: 0010:__blk_mq_sched_bio_merge+0x9d/0x1a0 [ 88.736544] Code: 87 1e 9d 89 d0 25 00 00 00 01 0f 85 ad 00 00 00 48 83 05 25 a1 37 0c 01 3 [ 88.739040] RSP: 0018:ffffc90000473b50 EFLAGS: 00010202 [ 88.739744] RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffc90000473b98 [ 88.740697] RDX: 0000000000001000 RSI: ffff8881080c7500 RDI: ffff888103a9cc18 [ 88.741659] RBP: ffff88813bc80000 R08: 0000000000000001 R09: 0000000000000000 [ 88.742611] R10: ffff88810710be30 R11: 0000000000000000 R12: ffff888103a9cc18 [ 88.743551] R13: ffff8881080c7500 R14: 0000000000000001 R15: 0000000000000000 [ 88.744501] FS: 00007f51bcdbb040(0000) GS:ffff88813bc80000(0000) knlGS:0000000000000000 [ 88.745581] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 88.746345] CR2: 00000000000001a0 CR3: 000000010d715000 CR4: 00000000000006e0 [ 88.747298] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 88.748253] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 88.749204] Call Trace: [ 88.749549] blk_mq_submit_bio+0x115/0xd80 [ 88.750124] submit_bio_noacct+0x4ff/0x610 [ 88.750692] submit_bio+0xaa/0x1a0 [ 88.751149] submit_bh_wbc+0x1cb/0x2f0 [ 88.751662] submit_bh+0x17/0x20 [ 88.752102] ext4_read_bh+0x63/0x170 [ 88.752588] ext4_read_bh_lock+0x2c/0xd0 [ 88.753125] __ext4_sb_bread_gfp.isra.0+0xa0/0xf0 [ 88.753766] ext4_fill_super+0x21f/0x5610 [ 88.754317] ? pointer+0x31b/0x5a0 [ 88.754796] ? vsnprintf+0x131/0x7d0 [ 88.755304] mount_bdev+0x233/0x280 [ 88.755791] ? ext4_calculate_overhead+0x660/0x660 [ 88.756461] ext4_mount+0x19/0x30 [ 88.756926] legacy_get_tree+0x35/0x90 [ 88.757450] vfs_get_tree+0x29/0x100 [ 88.757955] ? capable+0x1d/0x30 [ 88.758406] path_mount+0x8a7/0x1150 [ 88.758918] do_mount+0x8d/0xc0 [ 88.759360] __se_sys_mount+0x14a/0x220 [ 88.759906] __x64_sys_mount+0x29/0x40 [ 88.760431] do_syscall_64+0x45/0x70 [ 88.760931] entry_SYSCALL_64_after_hwframe+0x44/0xa9 [ 88.761634] RIP: 0033:0x7f51bbe1623a [ 88.762135] Code: 48 8b 0d 51 dc 2b 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 8 [ 88.764657] RSP: 002b:00007fff173ae898 EFLAGS: 00000246 ORIG_RAX: 00000000000000a5 [ 88.765700] RAX: ffffffffffffffda RBX: 000056169a120030 RCX: 00007f51bbe1623a [ 88.766675] RDX: 000056169a120210 RSI: 000056169a120250 RDI: 000056169a120230 [ 88.767642] RBP: 0000000000000000 R08: 0000000000000000 R09: 00007fff173ad798 [ 88.768619] R10: 00000000c0ed0000 R11: 0000000000000246 R12: 000056169a120230 [ 88.769605] R13: 000056169a120210 R14: 0000000000000000 R15: 00007f51bcbac184 [ 88.770611] Modules linked in: dm_service_time dm_multipath [ 88.771388] CR2: 00000000000001a0 [ 88.776323] ---[ end trace ac5d86e09fdc7c98 ]--- [ 88.777009] RIP: 0010:__blk_mq_sched_bio_merge+0x9d/0x1a0 [ 88.778038] Code: 87 1e 9d 89 d0 25 00 00 00 01 0f 85 ad 00 00 00 48 83 05 25 a1 37 0c 01 3 [ 88.780708] RSP: 0018:ffffc90000473b50 EFLAGS: 00010202 [ 88.781443] RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffc90000473b98 [ 88.782692] RDX: 0000000000001000 RSI: ffff8881080c7500 RDI: ffff888103a9cc18 [ 88.783839] RBP: ffff88813bc80000 R08: 0000000000000001 R09: 0000000000000000 [ 88.784942] R10: ffff88810710be30 R11: 0000000000000000 R12: ffff888103a9cc18 [ 88.786051] R13: ffff8881080c7500 R14: 0000000000000001 R15: 0000000000000000 [ 88.787142] FS: 00007f51bcdbb040(0000) GS:ffff88813bc80000(0000) knlGS:0000000000000000 [ 88.788399] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 88.789444] CR2: 00007f10e97a5000 CR3: 000000010d715000 CR4: 00000000000006e0 [ 88.790586] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 88.791686] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 88.792773] Kernel panic - not syncing: Fatal exception [ 88.793573] Kernel Offset: disabled [ 88.794052] ---[ end Kernel panic - not syncing: Fatal exception ]--- root cause: t1 dm-mpath t2 mount alloc_dev md->queue = blk_alloc_queue add_disk_no_queue_reg dm_setup_md_queue case DM_TYPE_REQUEST_BASED -> multipath md->disk->fops = &dm_rq_blk_dops; ext4_fill_super ©®__ext4_sb_bread_gfp ©® ext4_read_bh ©® submit_bio -> queue is not initialized yet ©® __blk_mq_sched_bio_merge ©® ctx = blk_mq_get_ctx(q); -> ctx is NULL dm_mq_init_request_queue Do you think it's ok to backport this patch(and all realted patches) to lts, or it's better to fix that bio can be submitted with queue uninitialized from block layer? Thanks, Kuai > --- > drivers/md/dm-rq.c | 1 - > drivers/md/dm.c | 23 +++++++++++------------ > 2 files changed, 11 insertions(+), 13 deletions(-) > > diff --git a/drivers/md/dm-rq.c b/drivers/md/dm-rq.c > index 0dbd48cbdff9..5b95eea517d1 100644 > --- a/drivers/md/dm-rq.c > +++ b/drivers/md/dm-rq.c > @@ -559,7 +559,6 @@ int dm_mq_init_request_queue(struct mapped_device *md, struct dm_table *t) > err = blk_mq_init_allocated_queue(md->tag_set, md->queue); > if (err) > goto out_tag_set; > - elevator_init_mq(md->queue); > return 0; > > out_tag_set: > diff --git a/drivers/md/dm.c b/drivers/md/dm.c > index f003bd5b93ce..7981b7287628 100644 > --- a/drivers/md/dm.c > +++ b/drivers/md/dm.c > @@ -1693,7 +1693,10 @@ static void cleanup_mapped_device(struct mapped_device *md) > spin_lock(&_minor_lock); > md->disk->private_data = NULL; > spin_unlock(&_minor_lock); > - del_gendisk(md->disk); > + if (dm_get_md_type(md) != DM_TYPE_NONE) { > + dm_sysfs_exit(md); > + del_gendisk(md->disk); > + } > dm_queue_destroy_keyslot_manager(md->queue); > blk_cleanup_disk(md->disk); > } > @@ -1788,7 +1791,6 @@ static struct mapped_device *alloc_dev(int minor) > goto bad; > } > > - add_disk_no_queue_reg(md->disk); > format_dev_t(md->name, MKDEV(_major, minor)); > > md->wq = alloc_workqueue("kdmflush", WQ_MEM_RECLAIM, 0); > @@ -1989,19 +1991,12 @@ static struct dm_table *__unbind(struct mapped_device *md) > */ > int dm_create(int minor, struct mapped_device **result) > { > - int r; > struct mapped_device *md; > > md = alloc_dev(minor); > if (!md) > return -ENXIO; > > - r = dm_sysfs_init(md); > - if (r) { > - free_dev(md); > - return r; > - } > - > *result = md; > return 0; > } > @@ -2081,10 +2076,15 @@ int dm_setup_md_queue(struct mapped_device *md, struct dm_table *t) > r = dm_table_set_restrictions(t, md->queue, &limits); > if (r) > return r; > - md->type = type; > > - blk_register_queue(md->disk); > + add_disk(md->disk); > > + r = dm_sysfs_init(md); > + if (r) { > + del_gendisk(md->disk); > + return r; > + } > + md->type = type; > return 0; > } > > @@ -2190,7 +2190,6 @@ static void __dm_destroy(struct mapped_device *md, bool wait) > DMWARN("%s: Forcibly removing mapped_device still in use! (%d users)", > dm_device_name(md), atomic_read(&md->holders)); > > - dm_sysfs_exit(md); > dm_table_destroy(__unbind(md)); > free_dev(md); > } > 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 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id AC1C3C433EF for ; Thu, 7 Jul 2022 03:29:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1657164591; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=Tbl7BczCIzPHyFIAmpxRi/CjzSVeiL7NmV6PMGwJXAc=; b=GX93STJkllEal/Ax1hVTT4HLWxWFiUZ7lTd+MSI408sz3zbN4KSZy7NmtEI7Z8/7TwLSUW ILreo1ISTS8xpa5/PXh36iU5OKgphM7YQPPsQ4PisXOr3XZtgXA08alq4RB1o3M4elMdyi EJvCYI1PAQj6HirFjR2sN1/Zqhz9tLM= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-186-yFWQ6VMpOFyjJXTjaGfK2Q-1; Wed, 06 Jul 2022 23:29:48 -0400 X-MC-Unique: yFWQ6VMpOFyjJXTjaGfK2Q-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id BCF0629AA2FA; Thu, 7 Jul 2022 03:29:46 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 99B171121320; Thu, 7 Jul 2022 03:29:42 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 4FD391947067; Thu, 7 Jul 2022 03:29:42 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 58B28194704E for ; Thu, 7 Jul 2022 03:29:41 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 3904118EC9; Thu, 7 Jul 2022 03:29:41 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 34AA12EF99 for ; Thu, 7 Jul 2022 03:29:41 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 156C180192F for ; Thu, 7 Jul 2022 03:29:41 +0000 (UTC) Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-572-w8mTnj5EOKmsellNez_DLQ-1; Wed, 06 Jul 2022 23:29:38 -0400 X-MC-Unique: w8mTnj5EOKmsellNez_DLQ-1 Received: from mail02.huawei.com (unknown [172.30.67.143]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4LdhhT635Rzkr7D; Thu, 7 Jul 2022 11:28:41 +0800 (CST) Received: from [10.174.176.73] (unknown [10.174.176.73]) by APP3 (Coremail) with SMTP id _Ch0CgAXemkWU8ZiH__bAQ--.22982S3; Thu, 07 Jul 2022 11:29:28 +0800 (CST) To: Christoph Hellwig , Jens Axboe , Mike Snitzer References: <20210804094147.459763-1-hch@lst.de> <20210804094147.459763-8-hch@lst.de> From: Yu Kuai Message-ID: Date: Thu, 7 Jul 2022 11:29:26 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <20210804094147.459763-8-hch@lst.de> X-CM-TRANSID: _Ch0CgAXemkWU8ZiH__bAQ--.22982S3 X-Coremail-Antispam: 1UD129KBjvJXoW3Gw1xuw43ZrWDZrW5Zw1UKFg_yoW3tr15pF 4UXrW5CrW8tr1Uta17tF1UAr1rtrsrAa4UXr4xAr10v3Wjkw1YqFy7CFWUAry7Jr4kXry7 tFyDJw1ktr1UKaUanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUyEb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6r1F6r1fM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4 vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_tr0E3s1l84ACjcxK6xIIjxv20xvEc7Cj xVAFwI0_Gr1j6F4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x 0267AKxVW0oVCq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG 6I80ewAv7VC0I7IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFV Cjc4AY6r1j6r4UM4x0Y48IcVAKI48JMxk0xIA0c2IEe2xFo4CEbIxvr21l42xK82IYc2Ij 64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x 8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAKI48JMIIF0xvE 2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r1j6r4UMIIF0xvE42 xK8VAvwI8IcIk0rVWrZr1j6s0DMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIE c7CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU1CPfJUUUUU== X-CM-SenderInfo: 51xn3trlr6x35dzhxuhorxvhhfrp/ X-CFilter-Loop: Reflected X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 Subject: Re: [dm-devel] [PATCH 7/8] dm: delay registering the gendisk X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-block@vger.kernel.org, dm-devel@redhat.com Errors-To: dm-devel-bounces@redhat.com Sender: "dm-devel" X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=dm-devel-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="gbk"; Format="flowed" SGksIENocmlzdG9waAoK1NogMjAyMS8wOC8wNCAxNzo0MSwgQ2hyaXN0b3BoIEhlbGx3aWcg0LS1 wDoKPiBkZXZpY2UgbWFwcGVyIGlzIGN1cnJlbnRseSB0aGUgb25seSBvdXRsaWVyIHRoYXQgdHJp ZXMgdG8gY2FsbAo+IHJlZ2lzdGVyX2Rpc2sgYWZ0ZXIgYWRkX2Rpc2ssIGxlYWRpbmcgdG8gZmFp cmx5IGluY29uc2lzdGVudCBzdGF0ZQo+IG9mIHRoZXNlIGJsb2NrIGxheWVyIGRhdGEgc3RydWN0 dXJlcy4gIEluc3RlYWQgY2hhbmdlIGRldmljZS1tYXBwZXIKPiB0byBqdXN0IHJlZ2lzdGVyIHRo ZSBnZW5kaXNrIGxhdGVyIG5vdyB0aGF0IHRoZSBob2xkZXIgbWVjaGFuaXNtCj4gY2FuIGNvcGUg d2l0aCB0aGF0Lgo+IAo+IE5vdGUgdGhhdCB0aGlzIGludHJvZHVjZXMgYSB1c2VyIHZpc2libGUg Y2hhbmdlOiB0aGUgZG0ga29iamVjdCBpcwo+IG5vdyBvbmx5IHZpc2libGUgYWZ0ZXIgdGhlIGlu aXRpYWwgdGFibGUgaGFzIGJlZW4gbG9hZGVkLgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzdG9w aCBIZWxsd2lnIDxoY2hAbHN0LmRlPgo+IFJldmlld2VkLWJ5OiBNaWtlIFNuaXR6ZXIgPHNuaXR6 ZXJAcmVkaGF0LmNvbT4KCldlIGZvdW5kIHRoYXQgdGhpcyBwYXRjaCBmaXggYSBudWxscHRyIGNy YXNoIGluIG91ciB0ZXN0OgpbICAgODguNzI3OTE4XSBCVUc6IGtlcm5lbCBOVUxMIHBvaW50ZXIg ZGVyZWZlcmVuY2UsIGFkZHJlc3M6IAowMDAwMDAwMDAwMDAwMWEwClsgICA4OC43MzA2OThdICNQ Rjogc3VwZXJ2aXNvciByZWFkIGFjY2VzcyBpbiBrZXJuZWwgbW9kZQpbICAgODguNzMxMzgxXSAj UEY6IGVycm9yX2NvZGUoMHgwMDAwKSAtIG5vdC1wcmVzZW50IHBhZ2UKWyAgIDg4LjczMjA4Nl0g UEdEIDAgUDREIDAKWyAgIDg4LjczMjQ0MV0gT29wczogMDAwMCBbIzFdIFBSRUVNUFQgU01QClsg ICA4OC43MzI5NjRdIENQVTogMSBQSUQ6IDEzMTcgQ29tbTogbW91bnQgTm90IHRhaW50ZWQgCjUu MTAuMC0xNjY5MS1nZjYwNzY0MzI4MjdkLWRpcnR5ICMxNjkKWyAgIDg4LjczNDA1NV0gSGFyZHdh cmUgbmFtZTogUUVNVSBTdGFuZGFyZCBQQyAoaTQ0MEZYICsgUElJWCwgMTk5NiksIApCSU9TID8t MjAxOTA3MjdfMDczODM2LTQKWyAgIDg4LjczNTgxOV0gUklQOiAwMDEwOl9fYmxrX21xX3NjaGVk X2Jpb19tZXJnZSsweDlkLzB4MWEwClsgICA4OC43MzY1NDRdIENvZGU6IDg3IDFlIDlkIDg5IGQw IDI1IDAwIDAwIDAwIDAxIDBmIDg1IGFkIDAwIDAwIDAwIDQ4IAo4MyAwNSAyNSBhMSAzNyAwYyAw MSAzClsgICA4OC43MzkwNDBdIFJTUDogMDAxODpmZmZmYzkwMDAwNDczYjUwIEVGTEFHUzogMDAw MTAyMDIKWyAgIDg4LjczOTc0NF0gUkFYOiAwMDAwMDAwMDAwMDAwMDAwIFJCWDogMDAwMDAwMDAw MDAwMDAwMCBSQ1g6IApmZmZmYzkwMDAwNDczYjk4ClsgICA4OC43NDA2OTddIFJEWDogMDAwMDAw MDAwMDAwMTAwMCBSU0k6IGZmZmY4ODgxMDgwYzc1MDAgUkRJOiAKZmZmZjg4ODEwM2E5Y2MxOApb ICAgODguNzQxNjU5XSBSQlA6IGZmZmY4ODgxM2JjODAwMDAgUjA4OiAwMDAwMDAwMDAwMDAwMDAx IFIwOTogCjAwMDAwMDAwMDAwMDAwMDAKWyAgIDg4Ljc0MjYxMV0gUjEwOiBmZmZmODg4MTA3MTBi ZTMwIFIxMTogMDAwMDAwMDAwMDAwMDAwMCBSMTI6IApmZmZmODg4MTAzYTljYzE4ClsgICA4OC43 NDM1NTFdIFIxMzogZmZmZjg4ODEwODBjNzUwMCBSMTQ6IDAwMDAwMDAwMDAwMDAwMDEgUjE1OiAK MDAwMDAwMDAwMDAwMDAwMApbICAgODguNzQ0NTAxXSBGUzogIDAwMDA3ZjUxYmNkYmIwNDAoMDAw MCkgR1M6ZmZmZjg4ODEzYmM4MDAwMCgwMDAwKSAKa25sR1M6MDAwMDAwMDAwMDAwMDAwMApbICAg ODguNzQ1NTgxXSBDUzogIDAwMTAgRFM6IDAwMDAgRVM6IDAwMDAgQ1IwOiAwMDAwMDAwMDgwMDUw MDMzClsgICA4OC43NDYzNDVdIENSMjogMDAwMDAwMDAwMDAwMDFhMCBDUjM6IDAwMDAwMDAxMGQ3 MTUwMDAgQ1I0OiAKMDAwMDAwMDAwMDAwMDZlMApbICAgODguNzQ3Mjk4XSBEUjA6IDAwMDAwMDAw MDAwMDAwMDAgRFIxOiAwMDAwMDAwMDAwMDAwMDAwIERSMjogCjAwMDAwMDAwMDAwMDAwMDAKWyAg IDg4Ljc0ODI1M10gRFIzOiAwMDAwMDAwMDAwMDAwMDAwIERSNjogMDAwMDAwMDBmZmZlMGZmMCBE Ujc6IAowMDAwMDAwMDAwMDAwNDAwCgpbICAgODguNzQ5MjA0XSBDYWxsIFRyYWNlOgpbICAgODgu NzQ5NTQ5XSAgYmxrX21xX3N1Ym1pdF9iaW8rMHgxMTUvMHhkODAKWyAgIDg4Ljc1MDEyNF0gIHN1 Ym1pdF9iaW9fbm9hY2N0KzB4NGZmLzB4NjEwClsgICA4OC43NTA2OTJdICBzdWJtaXRfYmlvKzB4 YWEvMHgxYTAKWyAgIDg4Ljc1MTE0OV0gIHN1Ym1pdF9iaF93YmMrMHgxY2IvMHgyZjAKWyAgIDg4 Ljc1MTY2Ml0gIHN1Ym1pdF9iaCsweDE3LzB4MjAKWyAgIDg4Ljc1MjEwMl0gIGV4dDRfcmVhZF9i aCsweDYzLzB4MTcwClsgICA4OC43NTI1ODhdICBleHQ0X3JlYWRfYmhfbG9jaysweDJjLzB4ZDAK WyAgIDg4Ljc1MzEyNV0gIF9fZXh0NF9zYl9icmVhZF9nZnAuaXNyYS4wKzB4YTAvMHhmMApbICAg ODguNzUzNzY2XSAgZXh0NF9maWxsX3N1cGVyKzB4MjFmLzB4NTYxMApbICAgODguNzU0MzE3XSAg PyBwb2ludGVyKzB4MzFiLzB4NWEwClsgICA4OC43NTQ3OTZdICA/IHZzbnByaW50ZisweDEzMS8w eDdkMApbICAgODguNzU1MzA0XSAgbW91bnRfYmRldisweDIzMy8weDI4MApbICAgODguNzU1Nzkx XSAgPyBleHQ0X2NhbGN1bGF0ZV9vdmVyaGVhZCsweDY2MC8weDY2MApbICAgODguNzU2NDYxXSAg ZXh0NF9tb3VudCsweDE5LzB4MzAKWyAgIDg4Ljc1NjkyNl0gIGxlZ2FjeV9nZXRfdHJlZSsweDM1 LzB4OTAKWyAgIDg4Ljc1NzQ1MF0gIHZmc19nZXRfdHJlZSsweDI5LzB4MTAwClsgICA4OC43NTc5 NTVdICA/IGNhcGFibGUrMHgxZC8weDMwClsgICA4OC43NTg0MDZdICBwYXRoX21vdW50KzB4OGE3 LzB4MTE1MApbICAgODguNzU4OTE4XSAgZG9fbW91bnQrMHg4ZC8weGMwClsgICA4OC43NTkzNjBd ICBfX3NlX3N5c19tb3VudCsweDE0YS8weDIyMApbICAgODguNzU5OTA2XSAgX194NjRfc3lzX21v dW50KzB4MjkvMHg0MApbICAgODguNzYwNDMxXSAgZG9fc3lzY2FsbF82NCsweDQ1LzB4NzAKWyAg IDg4Ljc2MDkzMV0gIGVudHJ5X1NZU0NBTExfNjRfYWZ0ZXJfaHdmcmFtZSsweDQ0LzB4YTkKWyAg IDg4Ljc2MTYzNF0gUklQOiAwMDMzOjB4N2Y1MWJiZTE2MjNhClsgICA4OC43NjIxMzVdIENvZGU6 IDQ4IDhiIDBkIDUxIGRjIDJiIDAwIGY3IGQ4IDY0IDg5IDAxIDQ4IDgzIGM4IGZmIGMzIAo2NiAy ZSAwZiAxZiA4NCAwMCAwMCA4ClsgICA4OC43NjQ2NTddIFJTUDogMDAyYjowMDAwN2ZmZjE3M2Fl ODk4IEVGTEFHUzogMDAwMDAyNDYgT1JJR19SQVg6IAowMDAwMDAwMDAwMDAwMGE1ClsgICA4OC43 NjU3MDBdIFJBWDogZmZmZmZmZmZmZmZmZmZkYSBSQlg6IDAwMDA1NjE2OWExMjAwMzAgUkNYOiAK MDAwMDdmNTFiYmUxNjIzYQpbICAgODguNzY2Njc1XSBSRFg6IDAwMDA1NjE2OWExMjAyMTAgUlNJ OiAwMDAwNTYxNjlhMTIwMjUwIFJESTogCjAwMDA1NjE2OWExMjAyMzAKWyAgIDg4Ljc2NzY0Ml0g UkJQOiAwMDAwMDAwMDAwMDAwMDAwIFIwODogMDAwMDAwMDAwMDAwMDAwMCBSMDk6IAowMDAwN2Zm ZjE3M2FkNzk4ClsgICA4OC43Njg2MTldIFIxMDogMDAwMDAwMDBjMGVkMDAwMCBSMTE6IDAwMDAw MDAwMDAwMDAyNDYgUjEyOiAKMDAwMDU2MTY5YTEyMDIzMApbICAgODguNzY5NjA1XSBSMTM6IDAw MDA1NjE2OWExMjAyMTAgUjE0OiAwMDAwMDAwMDAwMDAwMDAwIFIxNTogCjAwMDA3ZjUxYmNiYWMx ODQKWyAgIDg4Ljc3MDYxMV0gTW9kdWxlcyBsaW5rZWQgaW46IGRtX3NlcnZpY2VfdGltZSBkbV9t dWx0aXBhdGgKWyAgIDg4Ljc3MTM4OF0gQ1IyOiAwMDAwMDAwMDAwMDAwMWEwClsgICA4OC43NzYz MjNdIC0tLVsgZW5kIHRyYWNlIGFjNWQ4NmUwOWZkYzdjOTggXS0tLQpbICAgODguNzc3MDA5XSBS SVA6IDAwMTA6X19ibGtfbXFfc2NoZWRfYmlvX21lcmdlKzB4OWQvMHgxYTAKWyAgIDg4Ljc3ODAz OF0gQ29kZTogODcgMWUgOWQgODkgZDAgMjUgMDAgMDAgMDAgMDEgMGYgODUgYWQgMDAgMDAgMDAg NDggCjgzIDA1IDI1IGExIDM3IDBjIDAxIDMKWyAgIDg4Ljc4MDcwOF0gUlNQOiAwMDE4OmZmZmZj OTAwMDA0NzNiNTAgRUZMQUdTOiAwMDAxMDIwMgpbICAgODguNzgxNDQzXSBSQVg6IDAwMDAwMDAw MDAwMDAwMDAgUkJYOiAwMDAwMDAwMDAwMDAwMDAwIFJDWDogCmZmZmZjOTAwMDA0NzNiOTgKWyAg IDg4Ljc4MjY5Ml0gUkRYOiAwMDAwMDAwMDAwMDAxMDAwIFJTSTogZmZmZjg4ODEwODBjNzUwMCBS REk6IApmZmZmODg4MTAzYTljYzE4ClsgICA4OC43ODM4MzldIFJCUDogZmZmZjg4ODEzYmM4MDAw MCBSMDg6IDAwMDAwMDAwMDAwMDAwMDEgUjA5OiAKMDAwMDAwMDAwMDAwMDAwMApbICAgODguNzg0 OTQyXSBSMTA6IGZmZmY4ODgxMDcxMGJlMzAgUjExOiAwMDAwMDAwMDAwMDAwMDAwIFIxMjogCmZm ZmY4ODgxMDNhOWNjMTgKWyAgIDg4Ljc4NjA1MV0gUjEzOiBmZmZmODg4MTA4MGM3NTAwIFIxNDog MDAwMDAwMDAwMDAwMDAwMSBSMTU6IAowMDAwMDAwMDAwMDAwMDAwClsgICA4OC43ODcxNDJdIEZT OiAgMDAwMDdmNTFiY2RiYjA0MCgwMDAwKSBHUzpmZmZmODg4MTNiYzgwMDAwKDAwMDApIAprbmxH UzowMDAwMDAwMDAwMDAwMDAwClsgICA4OC43ODgzOTldIENTOiAgMDAxMCBEUzogMDAwMCBFUzog MDAwMCBDUjA6IDAwMDAwMDAwODAwNTAwMzMKWyAgIDg4Ljc4OTQ0NF0gQ1IyOiAwMDAwN2YxMGU5 N2E1MDAwIENSMzogMDAwMDAwMDEwZDcxNTAwMCBDUjQ6IAowMDAwMDAwMDAwMDAwNmUwClsgICA4 OC43OTA1ODZdIERSMDogMDAwMDAwMDAwMDAwMDAwMCBEUjE6IDAwMDAwMDAwMDAwMDAwMDAgRFIy OiAKMDAwMDAwMDAwMDAwMDAwMApbICAgODguNzkxNjg2XSBEUjM6IDAwMDAwMDAwMDAwMDAwMDAg RFI2OiAwMDAwMDAwMGZmZmUwZmYwIERSNzogCjAwMDAwMDAwMDAwMDA0MDAKWyAgIDg4Ljc5Mjc3 M10gS2VybmVsIHBhbmljIC0gbm90IHN5bmNpbmc6IEZhdGFsIGV4Y2VwdGlvbgpbICAgODguNzkz NTczXSBLZXJuZWwgT2Zmc2V0OiBkaXNhYmxlZApbICAgODguNzk0MDUyXSAtLS1bIGVuZCBLZXJu ZWwgcGFuaWMgLSBub3Qgc3luY2luZzogRmF0YWwgZXhjZXB0aW9uIF0tLS0KCnJvb3QgY2F1c2U6 CnQxIGRtLW1wYXRoICAgICAgIHQyIG1vdW50CgphbGxvY19kZXYKICBtZC0+cXVldWUgPSBibGtf YWxsb2NfcXVldWUKICBhZGRfZGlza19ub19xdWV1ZV9yZWcKCmRtX3NldHVwX21kX3F1ZXVlCiAg Y2FzZSBETV9UWVBFX1JFUVVFU1RfQkFTRUQgLT4gbXVsdGlwYXRoCiAgIG1kLT5kaXNrLT5mb3Bz ID0gJmRtX3JxX2Jsa19kb3BzOwogICAgICAgICAgICAgICAgICAgICAgICAgZXh0NF9maWxsX3N1 cGVyCiAgICAgICAgICAgICAgICAgICAgICAgICCprl9fZXh0NF9zYl9icmVhZF9nZnAKICAgICAg ICAgICAgICAgICAgICAgICAgIKmuIGV4dDRfcmVhZF9iaAogICAgICAgICAgICAgICAgICAgICAg ICAgqa4gIHN1Ym1pdF9iaW8gLT4gcXVldWUgaXMgbm90IGluaXRpYWxpemVkIHlldAogICAgICAg ICAgICAgICAgICAgICAgICAgqa4gICBfX2Jsa19tcV9zY2hlZF9iaW9fbWVyZ2UKICAgICAgICAg ICAgICAgICAgICAgICAgIKmuICAgIGN0eCA9IGJsa19tcV9nZXRfY3R4KHEpOyAtPiBjdHggaXMg TlVMTAogICBkbV9tcV9pbml0X3JlcXVlc3RfcXVldWUKCkRvIHlvdSB0aGluayBpdCdzIG9rIHRv IGJhY2twb3J0IHRoaXMgcGF0Y2goYW5kIGFsbCByZWFsdGVkIHBhdGNoZXMpIHRvCmx0cywgb3Ig aXQncyBiZXR0ZXIgdG8gZml4IHRoYXQgYmlvIGNhbiBiZSBzdWJtaXR0ZWQgd2l0aCBxdWV1ZQp1 bmluaXRpYWxpemVkIGZyb20gYmxvY2sgbGF5ZXI/CgpUaGFua3MsCkt1YWkKPiAtLS0KPiAgIGRy aXZlcnMvbWQvZG0tcnEuYyB8ICAxIC0KPiAgIGRyaXZlcnMvbWQvZG0uYyAgICB8IDIzICsrKysr KysrKysrLS0tLS0tLS0tLS0tCj4gICAyIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyks IDEzIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLXJxLmMgYi9k cml2ZXJzL21kL2RtLXJxLmMKPiBpbmRleCAwZGJkNDhjYmRmZjkuLjViOTVlZWE1MTdkMSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL21kL2RtLXJxLmMKPiArKysgYi9kcml2ZXJzL21kL2RtLXJxLmMK PiBAQCAtNTU5LDcgKzU1OSw2IEBAIGludCBkbV9tcV9pbml0X3JlcXVlc3RfcXVldWUoc3RydWN0 IG1hcHBlZF9kZXZpY2UgKm1kLCBzdHJ1Y3QgZG1fdGFibGUgKnQpCj4gICAJZXJyID0gYmxrX21x X2luaXRfYWxsb2NhdGVkX3F1ZXVlKG1kLT50YWdfc2V0LCBtZC0+cXVldWUpOwo+ICAgCWlmIChl cnIpCj4gICAJCWdvdG8gb3V0X3RhZ19zZXQ7Cj4gLQllbGV2YXRvcl9pbml0X21xKG1kLT5xdWV1 ZSk7Cj4gICAJcmV0dXJuIDA7Cj4gICAKPiAgIG91dF90YWdfc2V0Ogo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL21kL2RtLmMgYi9kcml2ZXJzL21kL2RtLmMKPiBpbmRleCBmMDAzYmQ1YjkzY2UuLjc5 ODFiNzI4NzYyOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21kL2RtLmMKPiArKysgYi9kcml2ZXJz L21kL2RtLmMKPiBAQCAtMTY5Myw3ICsxNjkzLDEwIEBAIHN0YXRpYyB2b2lkIGNsZWFudXBfbWFw cGVkX2RldmljZShzdHJ1Y3QgbWFwcGVkX2RldmljZSAqbWQpCj4gICAJCXNwaW5fbG9jaygmX21p bm9yX2xvY2spOwo+ICAgCQltZC0+ZGlzay0+cHJpdmF0ZV9kYXRhID0gTlVMTDsKPiAgIAkJc3Bp bl91bmxvY2soJl9taW5vcl9sb2NrKTsKPiAtCQlkZWxfZ2VuZGlzayhtZC0+ZGlzayk7Cj4gKwkJ aWYgKGRtX2dldF9tZF90eXBlKG1kKSAhPSBETV9UWVBFX05PTkUpIHsKPiArCQkJZG1fc3lzZnNf ZXhpdChtZCk7Cj4gKwkJCWRlbF9nZW5kaXNrKG1kLT5kaXNrKTsKPiArCQl9Cj4gICAJCWRtX3F1 ZXVlX2Rlc3Ryb3lfa2V5c2xvdF9tYW5hZ2VyKG1kLT5xdWV1ZSk7Cj4gICAJCWJsa19jbGVhbnVw X2Rpc2sobWQtPmRpc2spOwo+ICAgCX0KPiBAQCAtMTc4OCw3ICsxNzkxLDYgQEAgc3RhdGljIHN0 cnVjdCBtYXBwZWRfZGV2aWNlICphbGxvY19kZXYoaW50IG1pbm9yKQo+ICAgCQkJZ290byBiYWQ7 Cj4gICAJfQo+ICAgCj4gLQlhZGRfZGlza19ub19xdWV1ZV9yZWcobWQtPmRpc2spOwo+ICAgCWZv cm1hdF9kZXZfdChtZC0+bmFtZSwgTUtERVYoX21ham9yLCBtaW5vcikpOwo+ICAgCj4gICAJbWQt PndxID0gYWxsb2Nfd29ya3F1ZXVlKCJrZG1mbHVzaCIsIFdRX01FTV9SRUNMQUlNLCAwKTsKPiBA QCAtMTk4OSwxOSArMTk5MSwxMiBAQCBzdGF0aWMgc3RydWN0IGRtX3RhYmxlICpfX3VuYmluZChz dHJ1Y3QgbWFwcGVkX2RldmljZSAqbWQpCj4gICAgKi8KPiAgIGludCBkbV9jcmVhdGUoaW50IG1p bm9yLCBzdHJ1Y3QgbWFwcGVkX2RldmljZSAqKnJlc3VsdCkKPiAgIHsKPiAtCWludCByOwo+ICAg CXN0cnVjdCBtYXBwZWRfZGV2aWNlICptZDsKPiAgIAo+ICAgCW1kID0gYWxsb2NfZGV2KG1pbm9y KTsKPiAgIAlpZiAoIW1kKQo+ICAgCQlyZXR1cm4gLUVOWElPOwo+ICAgCj4gLQlyID0gZG1fc3lz ZnNfaW5pdChtZCk7Cj4gLQlpZiAocikgewo+IC0JCWZyZWVfZGV2KG1kKTsKPiAtCQlyZXR1cm4g cjsKPiAtCX0KPiAtCj4gICAJKnJlc3VsdCA9IG1kOwo+ICAgCXJldHVybiAwOwo+ICAgfQo+IEBA IC0yMDgxLDEwICsyMDc2LDE1IEBAIGludCBkbV9zZXR1cF9tZF9xdWV1ZShzdHJ1Y3QgbWFwcGVk X2RldmljZSAqbWQsIHN0cnVjdCBkbV90YWJsZSAqdCkKPiAgIAlyID0gZG1fdGFibGVfc2V0X3Jl c3RyaWN0aW9ucyh0LCBtZC0+cXVldWUsICZsaW1pdHMpOwo+ICAgCWlmIChyKQo+ICAgCQlyZXR1 cm4gcjsKPiAtCW1kLT50eXBlID0gdHlwZTsKPiAgIAo+IC0JYmxrX3JlZ2lzdGVyX3F1ZXVlKG1k LT5kaXNrKTsKPiArCWFkZF9kaXNrKG1kLT5kaXNrKTsKPiAgIAo+ICsJciA9IGRtX3N5c2ZzX2lu aXQobWQpOwo+ICsJaWYgKHIpIHsKPiArCQlkZWxfZ2VuZGlzayhtZC0+ZGlzayk7Cj4gKwkJcmV0 dXJuIHI7Cj4gKwl9Cj4gKwltZC0+dHlwZSA9IHR5cGU7Cj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4g ICAKPiBAQCAtMjE5MCw3ICsyMTkwLDYgQEAgc3RhdGljIHZvaWQgX19kbV9kZXN0cm95KHN0cnVj dCBtYXBwZWRfZGV2aWNlICptZCwgYm9vbCB3YWl0KQo+ICAgCQlETVdBUk4oIiVzOiBGb3JjaWJs eSByZW1vdmluZyBtYXBwZWRfZGV2aWNlIHN0aWxsIGluIHVzZSEgKCVkIHVzZXJzKSIsCj4gICAJ CSAgICAgICBkbV9kZXZpY2VfbmFtZShtZCksIGF0b21pY19yZWFkKCZtZC0+aG9sZGVycykpOwo+ ICAgCj4gLQlkbV9zeXNmc19leGl0KG1kKTsKPiAgIAlkbV90YWJsZV9kZXN0cm95KF9fdW5iaW5k KG1kKSk7Cj4gICAJZnJlZV9kZXYobWQpOwo+ICAgfQo+IAoKLS0KZG0tZGV2ZWwgbWFpbGluZyBs aXN0CmRtLWRldmVsQHJlZGhhdC5jb20KaHR0cHM6Ly9saXN0bWFuLnJlZGhhdC5jb20vbWFpbG1h bi9saXN0aW5mby9kbS1kZXZlbAo=