From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; spf=pass smtp.mailfrom=; dkim=pass header.d=redhat.com; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=redhat.com policy.dmarc=quarantine Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mail.toke.dk (Postfix) with ESMTPS id 60F7F6E8397 for ; Wed, 24 Sep 2025 14:16:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758716202; h=from:from: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; bh=tfa3HwrSlbuCanym/sf3ns5oedO/obUOVC5n4MFiYkA=; b=i1SZpUiCoGCKFsRRMmfuRzhH7aP4OJokoevRWzKf4kUE+JxuDdvcxr9aS5E3SnIArd3+Hh e/nqfMCA7PF7tM43+LufaGckATg2RZpl/etR0WoM+p8WsMsGDkVAhwx97YnwOdJJ/6Ocfp 6gxp68d8/wc4ANNU/xT+udfx+jhtbUw= Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com [209.85.218.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-166-qL36AYh8Nzay5dMD6c787g-1; Wed, 24 Sep 2025 08:16:34 -0400 X-MC-Unique: qL36AYh8Nzay5dMD6c787g-1 X-Mimecast-MFC-AGG-ID: qL36AYh8Nzay5dMD6c787g_1758716194 Received: by mail-ej1-f71.google.com with SMTP id a640c23a62f3a-b2e52494b84so258205166b.0 for ; Wed, 24 Sep 2025 05:16:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758716194; x=1759320994; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tfa3HwrSlbuCanym/sf3ns5oedO/obUOVC5n4MFiYkA=; b=QmXD2qN19EYONp96cq/Xk8cAHzcoQfcZzwBWLAx4lGI/gv/jUF0sk8HQz7zlsdUniG m0rlyDX4wD+86mglKbv+MGXKIue/G12jwaAGEKJj+LRxcMo13tAaoDP9WIVtLrSDe/pE jL+U6UW3olBGagLo8H+SpeH1QZBzeF/zdlKdg/kvFedRiNLy+c64bLZPUTFBZ6l3i3ga KvLgF7R4RwFfCG/MbJ77avfEwtdIcM28+T+fzKHRTiXG0KMVjs1MNkQujJLdJT4D736n Xt+ARlD6B8w3v9fXAQ1mWA8qMsUnKNamWxFN7DTxF8BJXfzI7D+MjCkQZPbirPnOkRut r+0w== X-Forwarded-Encrypted: i=1; AJvYcCURrOdi0mq8dpzpQ9bIsamYaiqRFPg7EoeLA911EC7BPuEtXgZiqCv09dTpCwQtVqgt+b/T@lists.bufferbloat.net X-Gm-Message-State: AOJu0Yx6lYZGuxy+ybMmxE5S6LREB+tcB+dRSx5Fc1xqH2GIbMxykrJW AtUpZrZeFK5T12Ls7RNZaYsTNMNyFpr+r6/GBmW24f0Q9ChbrAQRkCQWcNkDoMEERWO/Bc971y8 M/KoEWP0ZjrHp9aufuBh3ms4SwN8Xw/KUW2RJoN+XlLPOcxmSvSLOQO1BZqB/CHo= X-Gm-Gg: ASbGnctWI0zvOw0h3BHLaOtXlxkMLz3Z+fCLo+siip8r8bl0F8pEtglPZtoPROFPSR/ kraiWPlwRf1c7FfxB3+jzBWIpMOEZya0OXDmttm7ybbm5VBYt3+r1if5acJUs09mrekrpMlACKq /WRR3IamBZ7+stA2mQWNLgg3PqfuTxCxyU5YZ895iLSFuCQ/hGvDE4XcTgd/qGU/0Lhvf4rWoKH uGB4Fg8SGFgfLLiHxXscQgQK1grEV2JJk1KLSwA+kJ2ktWcMtvLUU7ML9UfawFyFq1BT8t3m9fz ENb+OsBdjkYJ7nW9sAXrs7pmkndXuGi93Ie5PPs5kKtXBHD3pqYdv+TDhxm41Zfn X-Received: by 2002:a17:907:7f14:b0:b0e:677c:d478 with SMTP id a640c23a62f3a-b3027261c0dmr592407666b.19.1758716193466; Wed, 24 Sep 2025 05:16:33 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH4Uw28SPFP9grmWw6JoszCpKFA7CBuA6grH+NXQJhvLXC5FCVa//hxl6cWCBTSEbeV9t9xmg== X-Received: by 2002:a17:907:7f14:b0:b0e:677c:d478 with SMTP id a640c23a62f3a-b3027261c0dmr592403266b.19.1758716192857; Wed, 24 Sep 2025 05:16:32 -0700 (PDT) Received: from alrua-x1.borgediget.toke.dk ([45.145.92.2]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b261bdfe871sm1212276066b.61.2025.09.24.05.16.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Sep 2025 05:16:27 -0700 (PDT) Received: by alrua-x1.borgediget.toke.dk (Postfix, from userid 1000) id 4DADA276E28; Wed, 24 Sep 2025 14:16:26 +0200 (CEST) From: =?utf-8?q?Toke_H=C3=B8iland-J=C3=B8rgensen?= Date: Wed, 24 Sep 2025 14:16:03 +0200 MIME-Version: 1.0 Message-Id: <20250924-mq-cake-sub-qdisc-v1-1-43a060d1112a@redhat.com> References: <20250924-mq-cake-sub-qdisc-v1-0-43a060d1112a@redhat.com> In-Reply-To: <20250924-mq-cake-sub-qdisc-v1-0-43a060d1112a@redhat.com> To: =?utf-8?q?Toke_H=C3=B8iland-J=C3=B8rgensen?= , Jamal Hadi Salim , Cong Wang , Jiri Pirko , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: =?utf-8?q?Jonas_K=C3=B6ppeler?= , cake@lists.bufferbloat.net, netdev@vger.kernel.org, =?utf-8?q?Toke_H=C3=B8iland-J=C3=B8rgensen?= X-Mailer: b4 0.14.2 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: d0DVqkjIPkbmAxzJGvMQZvyDQSoTt4VVDh9twoAzYH4_1758716194 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-ID-Hash: I7CXP5O4WNLN5ATQZZUF6NKLMV5DLCTK X-Message-ID-Hash: I7CXP5O4WNLN5ATQZZUF6NKLMV5DLCTK X-MailFrom: toke@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Subject: [Cake] [PATCH RFC net-next 1/4] net/sched: sch_cake: Factor out config variables into separate struct List-Id: Cake - FQ_codel the next generation Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: RmFjdG9yIG91dCBhbGwgdGhlIHVzZXItY29uZmlndXJhYmxlIHZhcmlhYmxlcyBpbnRvIGEgc2Vw YXJhdGUgc3RydWN0DQphbmQgZW1iZWQgaXQgaW50byBzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhLiBU aGlzIGlzIGRvbmUgaW4gcHJlcGFyYXRpb24NCmZvciBzaGFyaW5nIHRoZSBjb25maWd1cmF0aW9u IGFjcm9zcyBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgY2FrZSBpbiBhbiBtcQ0Kc2V0dXAuDQoNCk5v IGZ1bmN0aW9uYWwgY2hhbmdlIGlzIGludGVuZGVkIHdpdGggdGhpcyBwYXRjaC4NCg0KU2lnbmVk LW9mZi1ieTogVG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2VuIDx0b2tlQHJlZGhhdC5jb20+DQotLS0N CiBuZXQvc2NoZWQvc2NoX2Nha2UuYyB8IDI0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAxIGZpbGUgY2hhbmdlZCwgMTMzIGluc2VydGlvbnMo KyksIDExMiBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfY2FrZS5j IGIvbmV0L3NjaGVkL3NjaF9jYWtlLmMNCmluZGV4IDMyYmFjZmMzMTRjMjYwZGNjZjk0MTc4ZDMw OWNjYjJiZTIyZDY5ZTQuLmEwMmYzY2ZjYjA5YjUwYmRhNmVlNjZkZmM4YThkZjU4NGFlNmEzNjUg MTAwNjQ0DQotLS0gYS9uZXQvc2NoZWQvc2NoX2Nha2UuYw0KKysrIGIvbmV0L3NjaGVkL3NjaF9j YWtlLmMNCkBAIC0xOTcsNDAgKzE5Nyw0MiBAQCBzdHJ1Y3QgY2FrZV90aW5fZGF0YSB7DQogCXUz Mgl3YXlfY29sbGlzaW9uczsNCiB9OyAvKiBudW1iZXIgb2YgdGlucyBpcyBzbWFsbCwgc28gc2l6 ZSBvZiB0aGlzIHN0cnVjdCBkb2Vzbid0IG1hdHRlciBtdWNoICovDQogDQorc3RydWN0IGNha2Vf c2NoZWRfY29uZmlnIHsNCisJdTY0CQlyYXRlX2JwczsNCisJdTY0CQlpbnRlcnZhbDsNCisJdTY0 CQl0YXJnZXQ7DQorCXUzMgkJYnVmZmVyX2NvbmZpZ19saW1pdDsNCisJdTMyCQlmd21hcmtfbWFz azsNCisJdTE2CQlmd21hcmtfc2hmdDsNCisJczE2CQlyYXRlX292ZXJoZWFkOw0KKwl1MTYJCXJh dGVfbXB1Ow0KKwl1MTYJCXJhdGVfZmxhZ3M7DQorCXU4CQl0aW5fbW9kZTsNCisJdTgJCWZsb3df bW9kZTsNCisJdTgJCWF0bV9tb2RlOw0KKwl1OAkJYWNrX2ZpbHRlcjsNCit9Ow0KKw0KIHN0cnVj dCBjYWtlX3NjaGVkX2RhdGEgew0KIAlzdHJ1Y3QgdGNmX3Byb3RvIF9fcmN1ICpmaWx0ZXJfbGlz dDsgLyogb3B0aW9uYWwgZXh0ZXJuYWwgY2xhc3NpZmllciAqLw0KIAlzdHJ1Y3QgdGNmX2Jsb2Nr ICpibG9jazsNCiAJc3RydWN0IGNha2VfdGluX2RhdGEgKnRpbnM7DQorCXN0cnVjdCBjYWtlX3Nj aGVkX2NvbmZpZyAqY29uZmlnOw0KIA0KIAlzdHJ1Y3QgY2FrZV9oZWFwX2VudHJ5IG92ZXJmbG93 X2hlYXBbQ0FLRV9RVUVVRVMgKiBDQUtFX01BWF9USU5TXTsNCi0JdTE2CQlvdmVyZmxvd190aW1l b3V0Ow0KLQ0KLQl1MTYJCXRpbl9jbnQ7DQotCXU4CQl0aW5fbW9kZTsNCi0JdTgJCWZsb3dfbW9k ZTsNCi0JdTgJCWFja19maWx0ZXI7DQotCXU4CQlhdG1fbW9kZTsNCi0NCi0JdTMyCQlmd21hcmtf bWFzazsNCi0JdTE2CQlmd21hcmtfc2hmdDsNCiANCiAJLyogdGltZV9uZXh0ID0gdGltZV90aGlz ICsgKChsZW4gKiByYXRlX25zKSA+PiByYXRlX3NoZnQpICovDQotCXUxNgkJcmF0ZV9zaGZ0Ow0K IAlrdGltZV90CQl0aW1lX25leHRfcGFja2V0Ow0KIAlrdGltZV90CQlmYWlsc2FmZV9uZXh0X3Bh Y2tldDsNCiAJdTY0CQlyYXRlX25zOw0KLQl1NjQJCXJhdGVfYnBzOw0KLQl1MTYJCXJhdGVfZmxh Z3M7DQotCXMxNgkJcmF0ZV9vdmVyaGVhZDsNCi0JdTE2CQlyYXRlX21wdTsNCi0JdTY0CQlpbnRl cnZhbDsNCi0JdTY0CQl0YXJnZXQ7DQorCXUxNgkJcmF0ZV9zaGZ0Ow0KKwl1MTYJCW92ZXJmbG93 X3RpbWVvdXQ7DQorCXUxNgkJdGluX2NudDsNCiANCiAJLyogcmVzb3VyY2UgdHJhY2tpbmcgKi8N CiAJdTMyCQlidWZmZXJfdXNlZDsNCiAJdTMyCQlidWZmZXJfbWF4X3VzZWQ7DQogCXUzMgkJYnVm ZmVyX2xpbWl0Ow0KLQl1MzIJCWJ1ZmZlcl9jb25maWdfbGltaXQ7DQogDQogCS8qIGluZGljZXMg Zm9yIGRlcXVldWUgKi8NCiAJdTE2CQljdXJfdGluOw0KQEAgLTExOTgsNyArMTIwMCw3IEBAIHN0 YXRpYyBib29sIGNha2VfdGNwaF9tYXlfZHJvcChjb25zdCBzdHJ1Y3QgdGNwaGRyICp0Y3BoLA0K IHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY2FrZV9hY2tfZmlsdGVyKHN0cnVjdCBjYWtlX3NjaGVk X2RhdGEgKnEsDQogCQkJCSAgICAgICBzdHJ1Y3QgY2FrZV9mbG93ICpmbG93KQ0KIHsNCi0JYm9v bCBhZ2dyZXNzaXZlID0gcS0+YWNrX2ZpbHRlciA9PSBDQUtFX0FDS19BR0dSRVNTSVZFOw0KKwli b29sIGFnZ3Jlc3NpdmUgPSBxLT5jb25maWctPmFja19maWx0ZXIgPT0gQ0FLRV9BQ0tfQUdHUkVT U0lWRTsNCiAJc3RydWN0IHNrX2J1ZmYgKmVsaWdfYWNrID0gTlVMTCwgKmVsaWdfYWNrX3ByZXYg PSBOVUxMOw0KIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2NoZWNrLCAqc2tiX3ByZXYgPSBOVUxMOw0K IAljb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXB2NmgsICppcHY2aF9jaGVjazsNCkBAIC0xMzU4LDE1 ICsxMzYwLDE3IEBAIHN0YXRpYyB1NjQgY2FrZV9ld21hKHU2NCBhdmcsIHU2NCBzYW1wbGUsIHUz MiBzaGlmdCkNCiAJcmV0dXJuIGF2ZzsNCiB9DQogDQotc3RhdGljIHUzMiBjYWtlX2NhbGNfb3Zl cmhlYWQoc3RydWN0IGNha2Vfc2NoZWRfZGF0YSAqcSwgdTMyIGxlbiwgdTMyIG9mZikNCitzdGF0 aWMgdTMyIGNha2VfY2FsY19vdmVyaGVhZChzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxZCwgdTMy IGxlbiwgdTMyIG9mZikNCiB7DQorCXN0cnVjdCBjYWtlX3NjaGVkX2NvbmZpZyAqcSA9IHFkLT5j b25maWc7DQorDQogCWlmIChxLT5yYXRlX2ZsYWdzICYgQ0FLRV9GTEFHX09WRVJIRUFEKQ0KIAkJ bGVuIC09IG9mZjsNCiANCi0JaWYgKHEtPm1heF9uZXRsZW4gPCBsZW4pDQotCQlxLT5tYXhfbmV0 bGVuID0gbGVuOw0KLQlpZiAocS0+bWluX25ldGxlbiA+IGxlbikNCi0JCXEtPm1pbl9uZXRsZW4g PSBsZW47DQorCWlmIChxZC0+bWF4X25ldGxlbiA8IGxlbikNCisJCXFkLT5tYXhfbmV0bGVuID0g bGVuOw0KKwlpZiAocWQtPm1pbl9uZXRsZW4gPiBsZW4pDQorCQlxZC0+bWluX25ldGxlbiA9IGxl bjsNCiANCiAJbGVuICs9IHEtPnJhdGVfb3ZlcmhlYWQ7DQogDQpAQCAtMTM4NSwxMCArMTM4OSwx MCBAQCBzdGF0aWMgdTMyIGNha2VfY2FsY19vdmVyaGVhZChzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRh ICpxLCB1MzIgbGVuLCB1MzIgb2ZmKQ0KIAkJbGVuICs9IChsZW4gKyA2MykgLyA2NDsNCiAJfQ0K IA0KLQlpZiAocS0+bWF4X2FkamxlbiA8IGxlbikNCi0JCXEtPm1heF9hZGpsZW4gPSBsZW47DQot CWlmIChxLT5taW5fYWRqbGVuID4gbGVuKQ0KLQkJcS0+bWluX2FkamxlbiA9IGxlbjsNCisJaWYg KHFkLT5tYXhfYWRqbGVuIDwgbGVuKQ0KKwkJcWQtPm1heF9hZGpsZW4gPSBsZW47DQorCWlmIChx ZC0+bWluX2FkamxlbiA+IGxlbikNCisJCXFkLT5taW5fYWRqbGVuID0gbGVuOw0KIA0KIAlyZXR1 cm4gbGVuOw0KIH0NCkBAIC0xNTkyLDcgKzE1OTYsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGNh a2VfZHJvcChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKQ0KIAlm bG93LT5kcm9wcGVkKys7DQogCWItPnRpbl9kcm9wcGVkKys7DQogDQotCWlmIChxLT5yYXRlX2Zs YWdzICYgQ0FLRV9GTEFHX0lOR1JFU1MpDQorCWlmIChxLT5jb25maWctPnJhdGVfZmxhZ3MgJiBD QUtFX0ZMQUdfSU5HUkVTUykNCiAJCWNha2VfYWR2YW5jZV9zaGFwZXIocSwgYiwgc2tiLCBub3cs IHRydWUpOw0KIA0KIAlxZGlzY19kcm9wX3JlYXNvbihza2IsIHNjaCwgdG9fZnJlZSwgU0tCX0RS T1BfUkVBU09OX1FESVNDX09WRVJMSU1JVCk7DQpAQCAtMTY2Myw3ICsxNjY3LDggQEAgc3RhdGlj IHU4IGNha2VfaGFuZGxlX2RpZmZzZXJ2KHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgd2FzaCkN CiBzdGF0aWMgc3RydWN0IGNha2VfdGluX2RhdGEgKmNha2Vfc2VsZWN0X3RpbihzdHJ1Y3QgUWRp c2MgKnNjaCwNCiAJCQkJCSAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYikNCiB7DQotCXN0cnVjdCBj YWtlX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7DQorCXN0cnVjdCBjYWtlX3NjaGVk X2RhdGEgKnFkID0gcWRpc2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9jb25maWcg KnEgPSBxZC0+Y29uZmlnOw0KIAl1MzIgdGluLCBtYXJrOw0KIAlib29sIHdhc2g7DQogCXU4IGRz Y3A7DQpAQCAtMTY4MCwyNCArMTY4NSwyNCBAQCBzdGF0aWMgc3RydWN0IGNha2VfdGluX2RhdGEg KmNha2Vfc2VsZWN0X3RpbihzdHJ1Y3QgUWRpc2MgKnNjaCwNCiAJaWYgKHEtPnRpbl9tb2RlID09 IENBS0VfRElGRlNFUlZfQkVTVEVGRk9SVCkNCiAJCXRpbiA9IDA7DQogDQotCWVsc2UgaWYgKG1h cmsgJiYgbWFyayA8PSBxLT50aW5fY250KQ0KLQkJdGluID0gcS0+dGluX29yZGVyW21hcmsgLSAx XTsNCisJZWxzZSBpZiAobWFyayAmJiBtYXJrIDw9IHFkLT50aW5fY250KQ0KKwkJdGluID0gcWQt PnRpbl9vcmRlclttYXJrIC0gMV07DQogDQogCWVsc2UgaWYgKFRDX0hfTUFKKHNrYi0+cHJpb3Jp dHkpID09IHNjaC0+aGFuZGxlICYmDQogCQkgVENfSF9NSU4oc2tiLT5wcmlvcml0eSkgPiAwICYm DQotCQkgVENfSF9NSU4oc2tiLT5wcmlvcml0eSkgPD0gcS0+dGluX2NudCkNCi0JCXRpbiA9IHEt PnRpbl9vcmRlcltUQ19IX01JTihza2ItPnByaW9yaXR5KSAtIDFdOw0KKwkJIFRDX0hfTUlOKHNr Yi0+cHJpb3JpdHkpIDw9IHFkLT50aW5fY250KQ0KKwkJdGluID0gcWQtPnRpbl9vcmRlcltUQ19I X01JTihza2ItPnByaW9yaXR5KSAtIDFdOw0KIA0KIAllbHNlIHsNCiAJCWlmICghd2FzaCkNCiAJ CQlkc2NwID0gY2FrZV9oYW5kbGVfZGlmZnNlcnYoc2tiLCB3YXNoKTsNCi0JCXRpbiA9IHEtPnRp bl9pbmRleFtkc2NwXTsNCisJCXRpbiA9IHFkLT50aW5faW5kZXhbZHNjcF07DQogDQotCQlpZiAo dW5saWtlbHkodGluID49IHEtPnRpbl9jbnQpKQ0KKwkJaWYgKHVubGlrZWx5KHRpbiA+PSBxZC0+ dGluX2NudCkpDQogCQkJdGluID0gMDsNCiAJfQ0KIA0KLQlyZXR1cm4gJnEtPnRpbnNbdGluXTsN CisJcmV0dXJuICZxZC0+dGluc1t0aW5dOw0KIH0NCiANCiBzdGF0aWMgdTMyIGNha2VfY2xhc3Np Znkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBjYWtlX3Rpbl9kYXRhICoqdCwNCkBAIC0xNzUz LDcgKzE3NTgsNyBAQCBzdGF0aWMgczMyIGNha2VfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2ti LCBzdHJ1Y3QgUWRpc2MgKnNjaCwNCiAJdTMyIGlkeCwgdGluOw0KIA0KIAkvKiBjaG9vc2UgZmxv dyB0byBpbnNlcnQgaW50byAqLw0KLQlpZHggPSBjYWtlX2NsYXNzaWZ5KHNjaCwgJmIsIHNrYiwg cS0+Zmxvd19tb2RlLCAmcmV0KTsNCisJaWR4ID0gY2FrZV9jbGFzc2lmeShzY2gsICZiLCBza2Is IHEtPmNvbmZpZy0+Zmxvd19tb2RlLCAmcmV0KTsNCiAJaWYgKGlkeCA9PSAwKSB7DQogCQlpZiAo cmV0ICYgX19ORVRfWE1JVF9CWVBBU1MpDQogCQkJcWRpc2NfcXN0YXRzX2Ryb3Aoc2NoKTsNCkBA IC0xNzg4LDcgKzE3OTMsNyBAQCBzdGF0aWMgczMyIGNha2VfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwNCiAJaWYgKHVubGlrZWx5KGxlbiA+IGItPm1heF9z a2JsZW4pKQ0KIAkJYi0+bWF4X3NrYmxlbiA9IGxlbjsNCiANCi0JaWYgKHNrYl9pc19nc28oc2ti KSAmJiBxLT5yYXRlX2ZsYWdzICYgQ0FLRV9GTEFHX1NQTElUX0dTTykgew0KKwlpZiAoc2tiX2lz X2dzbyhza2IpICYmIHEtPmNvbmZpZy0+cmF0ZV9mbGFncyAmIENBS0VfRkxBR19TUExJVF9HU08p IHsNCiAJCXN0cnVjdCBza19idWZmICpzZWdzLCAqbnNrYjsNCiAJCW5ldGRldl9mZWF0dXJlc190 IGZlYXR1cmVzID0gbmV0aWZfc2tiX2ZlYXR1cmVzKHNrYik7DQogCQl1bnNpZ25lZCBpbnQgc2xl biA9IDAsIG51bXNlZ3MgPSAwOw0KQEAgLTE4MjcsNyArMTgzMiw3IEBAIHN0YXRpYyBzMzIgY2Fr ZV9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLA0KIAkJZ2V0 X2NvYmFsdF9jYihza2IpLT5hZGp1c3RlZF9sZW4gPSBjYWtlX292ZXJoZWFkKHEsIHNrYik7DQog CQlmbG93X3F1ZXVlX2FkZChmbG93LCBza2IpOw0KIA0KLQkJaWYgKHEtPmFja19maWx0ZXIpDQor CQlpZiAocS0+Y29uZmlnLT5hY2tfZmlsdGVyKQ0KIAkJCWFjayA9IGNha2VfYWNrX2ZpbHRlcihx LCBmbG93KTsNCiANCiAJCWlmIChhY2spIHsNCkBAIC0xODM2LDcgKzE4NDEsNyBAQCBzdGF0aWMg czMyIGNha2VfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwN CiAJCQliLT5ieXRlcyArPSBxZGlzY19wa3RfbGVuKGFjayk7DQogCQkJbGVuIC09IHFkaXNjX3Br dF9sZW4oYWNrKTsNCiAJCQlxLT5idWZmZXJfdXNlZCArPSBza2ItPnRydWVzaXplIC0gYWNrLT50 cnVlc2l6ZTsNCi0JCQlpZiAocS0+cmF0ZV9mbGFncyAmIENBS0VfRkxBR19JTkdSRVNTKQ0KKwkJ CWlmIChxLT5jb25maWctPnJhdGVfZmxhZ3MgJiBDQUtFX0ZMQUdfSU5HUkVTUykNCiAJCQkJY2Fr ZV9hZHZhbmNlX3NoYXBlcihxLCBiLCBhY2ssIG5vdywgdHJ1ZSk7DQogDQogCQkJcWRpc2NfdHJl ZV9yZWR1Y2VfYmFja2xvZyhzY2gsIDEsIHFkaXNjX3BrdF9sZW4oYWNrKSk7DQpAQCAtMTg1OSw3 ICsxODY0LDcgQEAgc3RhdGljIHMzMiBjYWtlX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwg c3RydWN0IFFkaXNjICpzY2gsDQogCQljYWtlX2hlYXBpZnlfdXAocSwgYi0+b3ZlcmZsb3dfaWR4 W2lkeF0pOw0KIA0KIAkvKiBpbmNvbWluZyBiYW5kd2lkdGggY2FwYWNpdHkgZXN0aW1hdGUgKi8N Ci0JaWYgKHEtPnJhdGVfZmxhZ3MgJiBDQUtFX0ZMQUdfQVVUT1JBVEVfSU5HUkVTUykgew0KKwlp ZiAocS0+Y29uZmlnLT5yYXRlX2ZsYWdzICYgQ0FLRV9GTEFHX0FVVE9SQVRFX0lOR1JFU1MpIHsN CiAJCXU2NCBwYWNrZXRfaW50ZXJ2YWwgPSBcDQogCQkJa3RpbWVfdG9fbnMoa3RpbWVfc3ViKG5v dywgcS0+bGFzdF9wYWNrZXRfdGltZSkpOw0KIA0KQEAgLTE4OTEsNyArMTg5Niw3IEBAIHN0YXRp YyBzMzIgY2FrZV9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2No LA0KIAkJCWlmIChrdGltZV9hZnRlcihub3csDQogCQkJCQlrdGltZV9hZGRfbXMocS0+bGFzdF9y ZWNvbmZpZ190aW1lLA0KIAkJCQkJCSAgICAgMjUwKSkpIHsNCi0JCQkJcS0+cmF0ZV9icHMgPSAo cS0+YXZnX3BlYWtfYmFuZHdpZHRoICogMTUpID4+IDQ7DQorCQkJCXEtPmNvbmZpZy0+cmF0ZV9i cHMgPSAocS0+YXZnX3BlYWtfYmFuZHdpZHRoICogMTUpID4+IDQ7DQogCQkJCWNha2VfcmVjb25m aWd1cmUoc2NoKTsNCiAJCQl9DQogCQl9DQpAQCAtMTkxMSw3ICsxOTE2LDcgQEAgc3RhdGljIHMz MiBjYWtlX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsDQog CQlmbG93LT5zZXQgPSBDQUtFX1NFVF9TUEFSU0U7DQogCQliLT5zcGFyc2VfZmxvd19jb3VudCsr Ow0KIA0KLQkJZmxvdy0+ZGVmaWNpdCA9IGNha2VfZ2V0X2Zsb3dfcXVhbnR1bShiLCBmbG93LCBx LT5mbG93X21vZGUpOw0KKwkJZmxvdy0+ZGVmaWNpdCA9IGNha2VfZ2V0X2Zsb3dfcXVhbnR1bShi LCBmbG93LCBxLT5jb25maWctPmZsb3dfbW9kZSk7DQogCX0gZWxzZSBpZiAoZmxvdy0+c2V0ID09 IENBS0VfU0VUX1NQQVJTRV9XQUlUKSB7DQogCQkvKiB0aGlzIGZsb3cgd2FzIGVtcHR5LCBhY2Nv dW50ZWQgYXMgYSBzcGFyc2UgZmxvdywgYnV0IGFjdHVhbGx5DQogCQkgKiBpbiB0aGUgYnVsayBy b3RhdGlvbi4NCkBAIC0xOTIwLDggKzE5MjUsOCBAQCBzdGF0aWMgczMyIGNha2VfZW5xdWV1ZShz dHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwNCiAJCWItPnNwYXJzZV9mbG93 X2NvdW50LS07DQogCQliLT5idWxrX2Zsb3dfY291bnQrKzsNCiANCi0JCWNha2VfaW5jX3NyY2hv c3RfYnVsa19mbG93X2NvdW50KGIsIGZsb3csIHEtPmZsb3dfbW9kZSk7DQotCQljYWtlX2luY19k c3Rob3N0X2J1bGtfZmxvd19jb3VudChiLCBmbG93LCBxLT5mbG93X21vZGUpOw0KKwkJY2FrZV9p bmNfc3JjaG9zdF9idWxrX2Zsb3dfY291bnQoYiwgZmxvdywgcS0+Y29uZmlnLT5mbG93X21vZGUp Ow0KKwkJY2FrZV9pbmNfZHN0aG9zdF9idWxrX2Zsb3dfY291bnQoYiwgZmxvdywgcS0+Y29uZmln LT5mbG93X21vZGUpOw0KIAl9DQogDQogCWlmIChxLT5idWZmZXJfdXNlZCA+IHEtPmJ1ZmZlcl9t YXhfdXNlZCkNCkBAIC0yMTAzLDggKzIxMDgsOCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmNh a2VfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAJCQkJYi0+c3BhcnNlX2Zsb3dfY291bnQt LTsNCiAJCQkJYi0+YnVsa19mbG93X2NvdW50Kys7DQogDQotCQkJCWNha2VfaW5jX3NyY2hvc3Rf YnVsa19mbG93X2NvdW50KGIsIGZsb3csIHEtPmZsb3dfbW9kZSk7DQotCQkJCWNha2VfaW5jX2Rz dGhvc3RfYnVsa19mbG93X2NvdW50KGIsIGZsb3csIHEtPmZsb3dfbW9kZSk7DQorCQkJCWNha2Vf aW5jX3NyY2hvc3RfYnVsa19mbG93X2NvdW50KGIsIGZsb3csIHEtPmNvbmZpZy0+Zmxvd19tb2Rl KTsNCisJCQkJY2FrZV9pbmNfZHN0aG9zdF9idWxrX2Zsb3dfY291bnQoYiwgZmxvdywgcS0+Y29u ZmlnLT5mbG93X21vZGUpOw0KIA0KIAkJCQlmbG93LT5zZXQgPSBDQUtFX1NFVF9CVUxLOw0KIAkJ CX0gZWxzZSB7DQpAQCAtMjExNiw3ICsyMTIxLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpj YWtlX2RlcXVldWUoc3RydWN0IFFkaXNjICpzY2gpDQogCQkJfQ0KIAkJfQ0KIA0KLQkJZmxvdy0+ ZGVmaWNpdCArPSBjYWtlX2dldF9mbG93X3F1YW50dW0oYiwgZmxvdywgcS0+Zmxvd19tb2RlKTsN CisJCWZsb3ctPmRlZmljaXQgKz0gY2FrZV9nZXRfZmxvd19xdWFudHVtKGIsIGZsb3csIHEtPmNv bmZpZy0+Zmxvd19tb2RlKTsNCiAJCWxpc3RfbW92ZV90YWlsKCZmbG93LT5mbG93Y2hhaW4sICZi LT5vbGRfZmxvd3MpOw0KIA0KIAkJZ290byByZXRyeTsNCkBAIC0yMTQwLDggKzIxNDUsOCBAQCBz dGF0aWMgc3RydWN0IHNrX2J1ZmYgKmNha2VfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAJ CQkJaWYgKGZsb3ctPnNldCA9PSBDQUtFX1NFVF9CVUxLKSB7DQogCQkJCQliLT5idWxrX2Zsb3df Y291bnQtLTsNCiANCi0JCQkJCWNha2VfZGVjX3NyY2hvc3RfYnVsa19mbG93X2NvdW50KGIsIGZs b3csIHEtPmZsb3dfbW9kZSk7DQotCQkJCQljYWtlX2RlY19kc3Rob3N0X2J1bGtfZmxvd19jb3Vu dChiLCBmbG93LCBxLT5mbG93X21vZGUpOw0KKwkJCQkJY2FrZV9kZWNfc3JjaG9zdF9idWxrX2Zs b3dfY291bnQoYiwgZmxvdywgcS0+Y29uZmlnLT5mbG93X21vZGUpOw0KKwkJCQkJY2FrZV9kZWNf ZHN0aG9zdF9idWxrX2Zsb3dfY291bnQoYiwgZmxvdywgcS0+Y29uZmlnLT5mbG93X21vZGUpOw0K IA0KIAkJCQkJYi0+ZGVjYXlpbmdfZmxvd19jb3VudCsrOw0KIAkJCQl9IGVsc2UgaWYgKGZsb3ct PnNldCA9PSBDQUtFX1NFVF9TUEFSU0UgfHwNCkBAIC0yMTU5LDggKzIxNjQsOCBAQCBzdGF0aWMg c3RydWN0IHNrX2J1ZmYgKmNha2VfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAJCQkJZWxz ZSBpZiAoZmxvdy0+c2V0ID09IENBS0VfU0VUX0JVTEspIHsNCiAJCQkJCWItPmJ1bGtfZmxvd19j b3VudC0tOw0KIA0KLQkJCQkJY2FrZV9kZWNfc3JjaG9zdF9idWxrX2Zsb3dfY291bnQoYiwgZmxv dywgcS0+Zmxvd19tb2RlKTsNCi0JCQkJCWNha2VfZGVjX2RzdGhvc3RfYnVsa19mbG93X2NvdW50 KGIsIGZsb3csIHEtPmZsb3dfbW9kZSk7DQorCQkJCQljYWtlX2RlY19zcmNob3N0X2J1bGtfZmxv d19jb3VudChiLCBmbG93LCBxLT5jb25maWctPmZsb3dfbW9kZSk7DQorCQkJCQljYWtlX2RlY19k c3Rob3N0X2J1bGtfZmxvd19jb3VudChiLCBmbG93LCBxLT5jb25maWctPmZsb3dfbW9kZSk7DQog CQkJCX0gZWxzZQ0KIAkJCQkJYi0+ZGVjYXlpbmdfZmxvd19jb3VudC0tOw0KIA0KQEAgLTIxNzEs MTQgKzIxNzYsMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpjYWtlX2RlcXVldWUoc3RydWN0 IFFkaXNjICpzY2gpDQogDQogCQlyZWFzb24gPSBjb2JhbHRfc2hvdWxkX2Ryb3AoJmZsb3ctPmN2 YXJzLCAmYi0+Y3BhcmFtcywgbm93LCBza2IsDQogCQkJCQkgICAgKGItPmJ1bGtfZmxvd19jb3Vu dCAqDQotCQkJCQkgICAgICEhKHEtPnJhdGVfZmxhZ3MgJg0KKwkJCQkJICAgICAhIShxLT5jb25m aWctPnJhdGVfZmxhZ3MgJg0KIAkJCQkJCUNBS0VfRkxBR19JTkdSRVNTKSkpOw0KIAkJLyogTGFz dCBwYWNrZXQgaW4gcXVldWUgbWF5IGJlIG1hcmtlZCwgc2hvdWxkbid0IGJlIGRyb3BwZWQgKi8N CiAJCWlmIChyZWFzb24gPT0gU0tCX05PVF9EUk9QUEVEX1lFVCB8fCAhZmxvdy0+aGVhZCkNCiAJ CQlicmVhazsNCiANCiAJCS8qIGRyb3AgdGhpcyBwYWNrZXQsIGdldCBhbm90aGVyIG9uZSAqLw0K LQkJaWYgKHEtPnJhdGVfZmxhZ3MgJiBDQUtFX0ZMQUdfSU5HUkVTUykgew0KKwkJaWYgKHEtPmNv bmZpZy0+cmF0ZV9mbGFncyAmIENBS0VfRkxBR19JTkdSRVNTKSB7DQogCQkJbGVuID0gY2FrZV9h ZHZhbmNlX3NoYXBlcihxLCBiLCBza2IsDQogCQkJCQkJICBub3csIHRydWUpOw0KIAkJCWZsb3ct PmRlZmljaXQgLT0gbGVuOw0KQEAgLTIxODksNyArMjE5NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tf YnVmZiAqY2FrZV9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKQ0KIAkJcWRpc2NfdHJlZV9yZWR1 Y2VfYmFja2xvZyhzY2gsIDEsIHFkaXNjX3BrdF9sZW4oc2tiKSk7DQogCQlxZGlzY19xc3RhdHNf ZHJvcChzY2gpOw0KIAkJa2ZyZWVfc2tiX3JlYXNvbihza2IsIHJlYXNvbik7DQotCQlpZiAocS0+ cmF0ZV9mbGFncyAmIENBS0VfRkxBR19JTkdSRVNTKQ0KKwkJaWYgKHEtPmNvbmZpZy0+cmF0ZV9m bGFncyAmIENBS0VfRkxBR19JTkdSRVNTKQ0KIAkJCWdvdG8gcmV0cnk7DQogCX0NCiANCkBAIC0y MzExLDcgKzIzMTYsNyBAQCBzdGF0aWMgaW50IGNha2VfY29uZmlnX2Jlc3RlZmZvcnQoc3RydWN0 IFFkaXNjICpzY2gpDQogCXN0cnVjdCBjYWtlX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNj aCk7DQogCXN0cnVjdCBjYWtlX3Rpbl9kYXRhICpiID0gJnEtPnRpbnNbMF07DQogCXUzMiBtdHUg PSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTsNCi0JdTY0IHJhdGUgPSBxLT5yYXRlX2JwczsN CisJdTY0IHJhdGUgPSBxLT5jb25maWctPnJhdGVfYnBzOw0KIA0KIAlxLT50aW5fY250ID0gMTsN CiANCkBAIC0yMzE5LDcgKzIzMjQsNyBAQCBzdGF0aWMgaW50IGNha2VfY29uZmlnX2Jlc3RlZmZv cnQoc3RydWN0IFFkaXNjICpzY2gpDQogCXEtPnRpbl9vcmRlciA9IG5vcm1hbF9vcmRlcjsNCiAN CiAJY2FrZV9zZXRfcmF0ZShiLCByYXRlLCBtdHUsDQotCQkgICAgICB1c190b19ucyhxLT50YXJn ZXQpLCB1c190b19ucyhxLT5pbnRlcnZhbCkpOw0KKwkJICAgICAgdXNfdG9fbnMocS0+Y29uZmln LT50YXJnZXQpLCB1c190b19ucyhxLT5jb25maWctPmludGVydmFsKSk7DQogCWItPnRpbl9xdWFu dHVtID0gNjU1MzU7DQogDQogCXJldHVybiAwOw0KQEAgLTIzMzAsNyArMjMzNSw3IEBAIHN0YXRp YyBpbnQgY2FrZV9jb25maWdfcHJlY2VkZW5jZShzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAJLyogY29u dmVydCBoaWdoLWxldmVsICh1c2VyIHZpc2libGUpIHBhcmFtZXRlcnMgaW50byBpbnRlcm5hbCBm b3JtYXQgKi8NCiAJc3RydWN0IGNha2Vfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTsN CiAJdTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpOw0KLQl1NjQgcmF0ZSA9IHEt PnJhdGVfYnBzOw0KKwl1NjQgcmF0ZSA9IHEtPmNvbmZpZy0+cmF0ZV9icHM7DQogCXUzMiBxdWFu dHVtID0gMjU2Ow0KIAl1MzIgaTsNCiANCkBAIC0yMzQxLDggKzIzNDYsOCBAQCBzdGF0aWMgaW50 IGNha2VfY29uZmlnX3ByZWNlZGVuY2Uoc3RydWN0IFFkaXNjICpzY2gpDQogCWZvciAoaSA9IDA7 IGkgPCBxLT50aW5fY250OyBpKyspIHsNCiAJCXN0cnVjdCBjYWtlX3Rpbl9kYXRhICpiID0gJnEt PnRpbnNbaV07DQogDQotCQljYWtlX3NldF9yYXRlKGIsIHJhdGUsIG10dSwgdXNfdG9fbnMocS0+ dGFyZ2V0KSwNCi0JCQkgICAgICB1c190b19ucyhxLT5pbnRlcnZhbCkpOw0KKwkJY2FrZV9zZXRf cmF0ZShiLCByYXRlLCBtdHUsIHVzX3RvX25zKHEtPmNvbmZpZy0+dGFyZ2V0KSwNCisJCQkgICAg ICB1c190b19ucyhxLT5jb25maWctPmludGVydmFsKSk7DQogDQogCQliLT50aW5fcXVhbnR1bSA9 IG1heF90KHUxNiwgMVUsIHF1YW50dW0pOw0KIA0KQEAgLTI0MTksNyArMjQyNCw3IEBAIHN0YXRp YyBpbnQgY2FrZV9jb25maWdfZGlmZnNlcnY4KHN0cnVjdCBRZGlzYyAqc2NoKQ0KIA0KIAlzdHJ1 Y3QgY2FrZV9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpOw0KIAl1MzIgbXR1ID0gcHNj aGVkX210dShxZGlzY19kZXYoc2NoKSk7DQotCXU2NCByYXRlID0gcS0+cmF0ZV9icHM7DQorCXU2 NCByYXRlID0gcS0+Y29uZmlnLT5yYXRlX2JwczsNCiAJdTMyIHF1YW50dW0gPSAyNTY7DQogCXUz MiBpOw0KIA0KQEAgLTI0MzMsOCArMjQzOCw4IEBAIHN0YXRpYyBpbnQgY2FrZV9jb25maWdfZGlm ZnNlcnY4KHN0cnVjdCBRZGlzYyAqc2NoKQ0KIAlmb3IgKGkgPSAwOyBpIDwgcS0+dGluX2NudDsg aSsrKSB7DQogCQlzdHJ1Y3QgY2FrZV90aW5fZGF0YSAqYiA9ICZxLT50aW5zW2ldOw0KIA0KLQkJ Y2FrZV9zZXRfcmF0ZShiLCByYXRlLCBtdHUsIHVzX3RvX25zKHEtPnRhcmdldCksDQotCQkJICAg ICAgdXNfdG9fbnMocS0+aW50ZXJ2YWwpKTsNCisJCWNha2Vfc2V0X3JhdGUoYiwgcmF0ZSwgbXR1 LCB1c190b19ucyhxLT5jb25maWctPnRhcmdldCksDQorCQkJICAgICAgdXNfdG9fbnMocS0+Y29u ZmlnLT5pbnRlcnZhbCkpOw0KIA0KIAkJYi0+dGluX3F1YW50dW0gPSBtYXhfdCh1MTYsIDFVLCBx dWFudHVtKTsNCiANCkBAIC0yNDYzLDcgKzI0NjgsNyBAQCBzdGF0aWMgaW50IGNha2VfY29uZmln X2RpZmZzZXJ2NChzdHJ1Y3QgUWRpc2MgKnNjaCkNCiANCiAJc3RydWN0IGNha2Vfc2NoZWRfZGF0 YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTsNCiAJdTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2 KHNjaCkpOw0KLQl1NjQgcmF0ZSA9IHEtPnJhdGVfYnBzOw0KKwl1NjQgcmF0ZSA9IHEtPmNvbmZp Zy0+cmF0ZV9icHM7DQogCXUzMiBxdWFudHVtID0gMTAyNDsNCiANCiAJcS0+dGluX2NudCA9IDQ7 DQpAQCAtMjQ3NCwxMyArMjQ3OSwxMyBAQCBzdGF0aWMgaW50IGNha2VfY29uZmlnX2RpZmZzZXJ2 NChzdHJ1Y3QgUWRpc2MgKnNjaCkNCiANCiAJLyogY2xhc3MgY2hhcmFjdGVyaXN0aWNzICovDQog CWNha2Vfc2V0X3JhdGUoJnEtPnRpbnNbMF0sIHJhdGUsIG10dSwNCi0JCSAgICAgIHVzX3RvX25z KHEtPnRhcmdldCksIHVzX3RvX25zKHEtPmludGVydmFsKSk7DQorCQkgICAgICB1c190b19ucyhx LT5jb25maWctPnRhcmdldCksIHVzX3RvX25zKHEtPmNvbmZpZy0+aW50ZXJ2YWwpKTsNCiAJY2Fr ZV9zZXRfcmF0ZSgmcS0+dGluc1sxXSwgcmF0ZSA+PiA0LCBtdHUsDQotCQkgICAgICB1c190b19u cyhxLT50YXJnZXQpLCB1c190b19ucyhxLT5pbnRlcnZhbCkpOw0KKwkJICAgICAgdXNfdG9fbnMo cS0+Y29uZmlnLT50YXJnZXQpLCB1c190b19ucyhxLT5jb25maWctPmludGVydmFsKSk7DQogCWNh a2Vfc2V0X3JhdGUoJnEtPnRpbnNbMl0sIHJhdGUgPj4gMSwgbXR1LA0KLQkJICAgICAgdXNfdG9f bnMocS0+dGFyZ2V0KSwgdXNfdG9fbnMocS0+aW50ZXJ2YWwpKTsNCisJCSAgICAgIHVzX3RvX25z KHEtPmNvbmZpZy0+dGFyZ2V0KSwgdXNfdG9fbnMocS0+Y29uZmlnLT5pbnRlcnZhbCkpOw0KIAlj YWtlX3NldF9yYXRlKCZxLT50aW5zWzNdLCByYXRlID4+IDIsIG10dSwNCi0JCSAgICAgIHVzX3Rv X25zKHEtPnRhcmdldCksIHVzX3RvX25zKHEtPmludGVydmFsKSk7DQorCQkgICAgICB1c190b19u cyhxLT5jb25maWctPnRhcmdldCksIHVzX3RvX25zKHEtPmNvbmZpZy0+aW50ZXJ2YWwpKTsNCiAN CiAJLyogYmFuZHdpZHRoLXNoYXJpbmcgd2VpZ2h0cyAqLw0KIAlxLT50aW5zWzBdLnRpbl9xdWFu dHVtID0gcXVhbnR1bTsNCkBAIC0yNTAwLDcgKzI1MDUsNyBAQCBzdGF0aWMgaW50IGNha2VfY29u ZmlnX2RpZmZzZXJ2MyhzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAgKi8NCiAJc3RydWN0IGNha2Vfc2No ZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTsNCiAJdTMyIG10dSA9IHBzY2hlZF9tdHUocWRp c2NfZGV2KHNjaCkpOw0KLQl1NjQgcmF0ZSA9IHEtPnJhdGVfYnBzOw0KKwl1NjQgcmF0ZSA9IHEt PmNvbmZpZy0+cmF0ZV9icHM7DQogCXUzMiBxdWFudHVtID0gMTAyNDsNCiANCiAJcS0+dGluX2Nu dCA9IDM7DQpAQCAtMjUxMSwxMSArMjUxNiwxMSBAQCBzdGF0aWMgaW50IGNha2VfY29uZmlnX2Rp ZmZzZXJ2MyhzdHJ1Y3QgUWRpc2MgKnNjaCkNCiANCiAJLyogY2xhc3MgY2hhcmFjdGVyaXN0aWNz ICovDQogCWNha2Vfc2V0X3JhdGUoJnEtPnRpbnNbMF0sIHJhdGUsIG10dSwNCi0JCSAgICAgIHVz X3RvX25zKHEtPnRhcmdldCksIHVzX3RvX25zKHEtPmludGVydmFsKSk7DQorCQkgICAgICB1c190 b19ucyhxLT5jb25maWctPnRhcmdldCksIHVzX3RvX25zKHEtPmNvbmZpZy0+aW50ZXJ2YWwpKTsN CiAJY2FrZV9zZXRfcmF0ZSgmcS0+dGluc1sxXSwgcmF0ZSA+PiA0LCBtdHUsDQotCQkgICAgICB1 c190b19ucyhxLT50YXJnZXQpLCB1c190b19ucyhxLT5pbnRlcnZhbCkpOw0KKwkJICAgICAgdXNf dG9fbnMocS0+Y29uZmlnLT50YXJnZXQpLCB1c190b19ucyhxLT5jb25maWctPmludGVydmFsKSk7 DQogCWNha2Vfc2V0X3JhdGUoJnEtPnRpbnNbMl0sIHJhdGUgPj4gMiwgbXR1LA0KLQkJICAgICAg dXNfdG9fbnMocS0+dGFyZ2V0KSwgdXNfdG9fbnMocS0+aW50ZXJ2YWwpKTsNCisJCSAgICAgIHVz X3RvX25zKHEtPmNvbmZpZy0+dGFyZ2V0KSwgdXNfdG9fbnMocS0+Y29uZmlnLT5pbnRlcnZhbCkp Ow0KIA0KIAkvKiBiYW5kd2lkdGgtc2hhcmluZyB3ZWlnaHRzICovDQogCXEtPnRpbnNbMF0udGlu X3F1YW50dW0gPSBxdWFudHVtOw0KQEAgLTI1MjcsNyArMjUzMiw4IEBAIHN0YXRpYyBpbnQgY2Fr ZV9jb25maWdfZGlmZnNlcnYzKHN0cnVjdCBRZGlzYyAqc2NoKQ0KIA0KIHN0YXRpYyB2b2lkIGNh a2VfcmVjb25maWd1cmUoc3RydWN0IFFkaXNjICpzY2gpDQogew0KLQlzdHJ1Y3QgY2FrZV9zY2hl ZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpx ZCA9IHFkaXNjX3ByaXYoc2NoKTsNCisJc3RydWN0IGNha2Vfc2NoZWRfY29uZmlnICpxID0gcWQt PmNvbmZpZzsNCiAJaW50IGMsIGZ0Ow0KIA0KIAlzd2l0Y2ggKHEtPnRpbl9tb2RlKSB7DQpAQCAt MjU1MywzNiArMjU1OSwzNyBAQCBzdGF0aWMgdm9pZCBjYWtlX3JlY29uZmlndXJlKHN0cnVjdCBR ZGlzYyAqc2NoKQ0KIAkJYnJlYWs7DQogCX0NCiANCi0JZm9yIChjID0gcS0+dGluX2NudDsgYyA8 IENBS0VfTUFYX1RJTlM7IGMrKykgew0KKwlmb3IgKGMgPSBxZC0+dGluX2NudDsgYyA8IENBS0Vf TUFYX1RJTlM7IGMrKykgew0KIAkJY2FrZV9jbGVhcl90aW4oc2NoLCBjKTsNCi0JCXEtPnRpbnNb Y10uY3BhcmFtcy5tdHVfdGltZSA9IHEtPnRpbnNbZnRdLmNwYXJhbXMubXR1X3RpbWU7DQorCQlx ZC0+dGluc1tjXS5jcGFyYW1zLm10dV90aW1lID0gcWQtPnRpbnNbZnRdLmNwYXJhbXMubXR1X3Rp bWU7DQogCX0NCiANCi0JcS0+cmF0ZV9ucyAgID0gcS0+dGluc1tmdF0udGluX3JhdGVfbnM7DQot CXEtPnJhdGVfc2hmdCA9IHEtPnRpbnNbZnRdLnRpbl9yYXRlX3NoZnQ7DQorCXFkLT5yYXRlX25z ICAgPSBxZC0+dGluc1tmdF0udGluX3JhdGVfbnM7DQorCXFkLT5yYXRlX3NoZnQgPSBxZC0+dGlu c1tmdF0udGluX3JhdGVfc2hmdDsNCiANCiAJaWYgKHEtPmJ1ZmZlcl9jb25maWdfbGltaXQpIHsN Ci0JCXEtPmJ1ZmZlcl9saW1pdCA9IHEtPmJ1ZmZlcl9jb25maWdfbGltaXQ7DQorCQlxZC0+YnVm ZmVyX2xpbWl0ID0gcS0+YnVmZmVyX2NvbmZpZ19saW1pdDsNCiAJfSBlbHNlIGlmIChxLT5yYXRl X2Jwcykgew0KIAkJdTY0IHQgPSBxLT5yYXRlX2JwcyAqIHEtPmludGVydmFsOw0KIA0KIAkJZG9f ZGl2KHQsIFVTRUNfUEVSX1NFQyAvIDQpOw0KLQkJcS0+YnVmZmVyX2xpbWl0ID0gbWF4X3QodTMy LCB0LCA0VSA8PCAyMCk7DQorCQlxZC0+YnVmZmVyX2xpbWl0ID0gbWF4X3QodTMyLCB0LCA0VSA8 PCAyMCk7DQogCX0gZWxzZSB7DQotCQlxLT5idWZmZXJfbGltaXQgPSB+MDsNCisJCXFkLT5idWZm ZXJfbGltaXQgPSB+MDsNCiAJfQ0KIA0KIAlzY2gtPmZsYWdzICY9IH5UQ1FfRl9DQU5fQllQQVNT Ow0KIA0KLQlxLT5idWZmZXJfbGltaXQgPSBtaW4ocS0+YnVmZmVyX2xpbWl0LA0KLQkJCSAgICAg IG1heChzY2gtPmxpbWl0ICogcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksDQotCQkJCSAgcS0+ YnVmZmVyX2NvbmZpZ19saW1pdCkpOw0KKwlxZC0+YnVmZmVyX2xpbWl0ID0gbWluKHFkLT5idWZm ZXJfbGltaXQsDQorCQkJICAgICAgIG1heChzY2gtPmxpbWl0ICogcHNjaGVkX210dShxZGlzY19k ZXYoc2NoKSksDQorCQkJCSAgIHEtPmJ1ZmZlcl9jb25maWdfbGltaXQpKTsNCiB9DQogDQogc3Rh dGljIGludCBjYWtlX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0 LA0KIAkJICAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykNCiB7DQotCXN0cnVj dCBjYWtlX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7DQorCXN0cnVjdCBjYWtlX3Nj aGVkX2RhdGEgKnFkID0gcWRpc2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9jb25m aWcgKnEgPSBxZC0+Y29uZmlnOw0KIAlzdHJ1Y3QgbmxhdHRyICp0YltUQ0FfQ0FLRV9NQVggKyAx XTsNCiAJdTE2IHJhdGVfZmxhZ3M7DQogCXU4IGZsb3dfbW9kZTsNCkBAIC0yNjM2LDE5ICsyNjQz LDE5IEBAIHN0YXRpYyBpbnQgY2FrZV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBu bGF0dHIgKm9wdCwNCiAJCQkgICBubGFfZ2V0X3MzMih0YltUQ0FfQ0FLRV9PVkVSSEVBRF0pKTsN CiAJCXJhdGVfZmxhZ3MgfD0gQ0FLRV9GTEFHX09WRVJIRUFEOw0KIA0KLQkJcS0+bWF4X25ldGxl biA9IDA7DQotCQlxLT5tYXhfYWRqbGVuID0gMDsNCi0JCXEtPm1pbl9uZXRsZW4gPSB+MDsNCi0J CXEtPm1pbl9hZGpsZW4gPSB+MDsNCisJCXFkLT5tYXhfbmV0bGVuID0gMDsNCisJCXFkLT5tYXhf YWRqbGVuID0gMDsNCisJCXFkLT5taW5fbmV0bGVuID0gfjA7DQorCQlxZC0+bWluX2FkamxlbiA9 IH4wOw0KIAl9DQogDQogCWlmICh0YltUQ0FfQ0FLRV9SQVddKSB7DQogCQlyYXRlX2ZsYWdzICY9 IH5DQUtFX0ZMQUdfT1ZFUkhFQUQ7DQogDQotCQlxLT5tYXhfbmV0bGVuID0gMDsNCi0JCXEtPm1h eF9hZGpsZW4gPSAwOw0KLQkJcS0+bWluX25ldGxlbiA9IH4wOw0KLQkJcS0+bWluX2FkamxlbiA9 IH4wOw0KKwkJcWQtPm1heF9uZXRsZW4gPSAwOw0KKwkJcWQtPm1heF9hZGpsZW4gPSAwOw0KKwkJ cWQtPm1pbl9uZXRsZW4gPSB+MDsNCisJCXFkLT5taW5fYWRqbGVuID0gfjA7DQogCX0NCiANCiAJ aWYgKHRiW1RDQV9DQUtFX01QVV0pDQpAQCAtMjcwNCw3ICsyNzExLDcgQEAgc3RhdGljIGludCBj YWtlX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LA0KIA0KIAlX UklURV9PTkNFKHEtPnJhdGVfZmxhZ3MsIHJhdGVfZmxhZ3MpOw0KIAlXUklURV9PTkNFKHEtPmZs b3dfbW9kZSwgZmxvd19tb2RlKTsNCi0JaWYgKHEtPnRpbnMpIHsNCisJaWYgKHFkLT50aW5zKSB7 DQogCQlzY2hfdHJlZV9sb2NrKHNjaCk7DQogCQljYWtlX3JlY29uZmlndXJlKHNjaCk7DQogCQlz Y2hfdHJlZV91bmxvY2soc2NoKTsNCkBAIC0yNzIwLDE0ICsyNzI3LDIwIEBAIHN0YXRpYyB2b2lk IGNha2VfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAJcWRpc2Nfd2F0Y2hkb2dfY2FuY2Vs KCZxLT53YXRjaGRvZyk7DQogCXRjZl9ibG9ja19wdXQocS0+YmxvY2spOw0KIAlrdmZyZWUocS0+ dGlucyk7DQorCWt2ZnJlZShxLT5jb25maWcpOw0KIH0NCiANCiBzdGF0aWMgaW50IGNha2VfaW5p dChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LA0KIAkJICAgICBzdHJ1Y3Qg bmV0bGlua19leHRfYWNrICpleHRhY2spDQogew0KLQlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpx ID0gcWRpc2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxZCA9IHFkaXNj X3ByaXYoc2NoKTsNCisJc3RydWN0IGNha2Vfc2NoZWRfY29uZmlnICpxOw0KIAlpbnQgaSwgaiwg ZXJyOw0KIA0KKwlxID0ga3ZjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBjYWtlX3NjaGVkX2NvbmZp ZyksIEdGUF9LRVJORUwpOw0KKwlpZiAoIXEpDQorCQlyZXR1cm4gLUVOT01FTTsNCisNCiAJc2No LT5saW1pdCA9IDEwMjQwOw0KIAlxLT50aW5fbW9kZSA9IENBS0VfRElGRlNFUlZfRElGRlNFUlYz Ow0KIAlxLT5mbG93X21vZGUgID0gQ0FLRV9GTE9XX1RSSVBMRTsNCkBAIC0yNzM5LDMzICsyNzUy LDM2IEBAIHN0YXRpYyBpbnQgY2FrZV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3Qgbmxh dHRyICpvcHQsDQogCQkJICAgICAgICogZm9yIDUgdG8gMTAlIG9mIGludGVydmFsDQogCQkJICAg ICAgICovDQogCXEtPnJhdGVfZmxhZ3MgfD0gQ0FLRV9GTEFHX1NQTElUX0dTTzsNCi0JcS0+Y3Vy X3RpbiA9IDA7DQotCXEtPmN1cl9mbG93ICA9IDA7DQorCXFkLT5jdXJfdGluID0gMDsNCisJcWQt PmN1cl9mbG93ICA9IDA7DQorCXFkLT5jb25maWcgPSBxOw0KIA0KLQlxZGlzY193YXRjaGRvZ19p bml0KCZxLT53YXRjaGRvZywgc2NoKTsNCisJcWRpc2Nfd2F0Y2hkb2dfaW5pdCgmcWQtPndhdGNo ZG9nLCBzY2gpOw0KIA0KIAlpZiAob3B0KSB7DQogCQllcnIgPSBjYWtlX2NoYW5nZShzY2gsIG9w dCwgZXh0YWNrKTsNCiANCiAJCWlmIChlcnIpDQotCQkJcmV0dXJuIGVycjsNCisJCQlnb3RvIGVy cjsNCiAJfQ0KIA0KLQllcnIgPSB0Y2ZfYmxvY2tfZ2V0KCZxLT5ibG9jaywgJnEtPmZpbHRlcl9s aXN0LCBzY2gsIGV4dGFjayk7DQorCWVyciA9IHRjZl9ibG9ja19nZXQoJnFkLT5ibG9jaywgJnFk LT5maWx0ZXJfbGlzdCwgc2NoLCBleHRhY2spOw0KIAlpZiAoZXJyKQ0KLQkJcmV0dXJuIGVycjsN CisJCWdvdG8gZXJyOw0KIA0KIAlxdWFudHVtX2RpdlswXSA9IH4wOw0KIAlmb3IgKGkgPSAxOyBp IDw9IENBS0VfUVVFVUVTOyBpKyspDQogCQlxdWFudHVtX2RpdltpXSA9IDY1NTM1IC8gaTsNCiAN Ci0JcS0+dGlucyA9IGt2Y2FsbG9jKENBS0VfTUFYX1RJTlMsIHNpemVvZihzdHJ1Y3QgY2FrZV90 aW5fZGF0YSksDQotCQkJICAgR0ZQX0tFUk5FTCk7DQotCWlmICghcS0+dGlucykNCi0JCXJldHVy biAtRU5PTUVNOw0KKwlxZC0+dGlucyA9IGt2Y2FsbG9jKENBS0VfTUFYX1RJTlMsIHNpemVvZihz dHJ1Y3QgY2FrZV90aW5fZGF0YSksDQorCQkJICAgIEdGUF9LRVJORUwpOw0KKwlpZiAoIXFkLT50 aW5zKSB7DQorCQllcnIgPSAtRU5PTUVNOw0KKwkJZ290byBlcnI7DQorCX0NCiANCiAJZm9yIChp ID0gMDsgaSA8IENBS0VfTUFYX1RJTlM7IGkrKykgew0KLQkJc3RydWN0IGNha2VfdGluX2RhdGEg KmIgPSBxLT50aW5zICsgaTsNCisJCXN0cnVjdCBjYWtlX3Rpbl9kYXRhICpiID0gcWQtPnRpbnMg KyBpOw0KIA0KIAkJSU5JVF9MSVNUX0hFQUQoJmItPm5ld19mbG93cyk7DQogCQlJTklUX0xJU1Rf SEVBRCgmYi0+b2xkX2Zsb3dzKTsNCkBAIC0yNzgxLDIyICsyNzk3LDI3IEBAIHN0YXRpYyBpbnQg Y2FrZV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsDQogCQkJSU5J VF9MSVNUX0hFQUQoJmZsb3ctPmZsb3djaGFpbik7DQogCQkJY29iYWx0X3ZhcnNfaW5pdCgmZmxv dy0+Y3ZhcnMpOw0KIA0KLQkJCXEtPm92ZXJmbG93X2hlYXBba10udCA9IGk7DQotCQkJcS0+b3Zl cmZsb3dfaGVhcFtrXS5iID0gajsNCisJCQlxZC0+b3ZlcmZsb3dfaGVhcFtrXS50ID0gaTsNCisJ CQlxZC0+b3ZlcmZsb3dfaGVhcFtrXS5iID0gajsNCiAJCQliLT5vdmVyZmxvd19pZHhbal0gPSBr Ow0KIAkJfQ0KIAl9DQogDQogCWNha2VfcmVjb25maWd1cmUoc2NoKTsNCi0JcS0+YXZnX3BlYWtf YmFuZHdpZHRoID0gcS0+cmF0ZV9icHM7DQotCXEtPm1pbl9uZXRsZW4gPSB+MDsNCi0JcS0+bWlu X2FkamxlbiA9IH4wOw0KKwlxZC0+YXZnX3BlYWtfYmFuZHdpZHRoID0gcS0+cmF0ZV9icHM7DQor CXFkLT5taW5fbmV0bGVuID0gfjA7DQorCXFkLT5taW5fYWRqbGVuID0gfjA7DQogCXJldHVybiAw Ow0KK2VycjoNCisJa3ZmcmVlKHFkLT5jb25maWcpOw0KKwlxZC0+Y29uZmlnID0gTlVMTDsNCisJ cmV0dXJuIGVycjsNCiB9DQogDQogc3RhdGljIGludCBjYWtlX2R1bXAoc3RydWN0IFFkaXNjICpz Y2gsIHN0cnVjdCBza19idWZmICpza2IpDQogew0KLQlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpx ID0gcWRpc2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxZCA9IHFkaXNj X3ByaXYoc2NoKTsNCisJc3RydWN0IGNha2Vfc2NoZWRfY29uZmlnICpxID0gcWQtPmNvbmZpZzsN CiAJc3RydWN0IG5sYXR0ciAqb3B0czsNCiAJdTE2IHJhdGVfZmxhZ3M7DQogCXU4IGZsb3dfbW9k ZTsNCg0KLS0gDQoyLjUxLjANCg0K