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.129.124]) by mail.toke.dk (Postfix) with ESMTPS id 2192C9C36A4 for ; Mon, 24 Nov 2025 16:00:50 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1763996447; 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=9d3sz+8vDa8p4VOFM1EmqzGMCP9bUkOVFJSvW/ZZ3qY=; b=eySFcZaZ53wv5SkLzJ71nr27PSEABzbYw1XzMQ0y0LfQjVHKpqU0/ISXQLwbJK5mWpSqCc l+wgpV8fYrV13uLLcuNVMHqm3pnc+89ASIywcyLEzwpPjAWJQG2a9i8lbZXUa2zbdxvQxy q6I83pSI8LDEb/Aayc/zXY2Tl05rUOY= Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-629-q2zkIko8OPy65YhP00Pndg-1; Mon, 24 Nov 2025 10:00:42 -0500 X-MC-Unique: q2zkIko8OPy65YhP00Pndg-1 X-Mimecast-MFC-AGG-ID: q2zkIko8OPy65YhP00Pndg_1763996442 Received: by mail-ed1-f69.google.com with SMTP id 4fb4d7f45d1cf-640ed3ad89bso8159708a12.3 for ; Mon, 24 Nov 2025 07:00:42 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763996441; x=1764601241; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=9d3sz+8vDa8p4VOFM1EmqzGMCP9bUkOVFJSvW/ZZ3qY=; b=EHK6/FwtMKuoHcxiFc9a/nBRfqlZZC7dAIimFCePcYOy6Occ/efXaUerlH30bSvlbV KhnCo5XFp+ekGWWLn3gaLi4NN5GFwWBY7v4pCXzQg4/hKMcmDrXYuVNUe2Op/+HJ9TEU lAtBmosJ3yRKhWaCG8csn69K+Qt1WXJPcyXi60EBXYkhold5cEUV8HlvvgAjaxIW/XG4 4Mp1XTSKJhoo5r2xRaVw49KIuQKRb8Cqdnsq7yvS4pMw/bVXqRtU8fzLeHJLwV457B4s FCTG8hs+lnpsHKdh+fjYKr0kEn5znjJd+GOsEhxkaR7wi28iW5AhpLN5p9lyqu2kFZ1A tUaw== X-Forwarded-Encrypted: i=1; AJvYcCUZVTF1xewApUPjPGQNQ4mwhku42CI6Pl5FvGR9A5ynY1uzhAEiFWxopV0mKW7YB03hKHgD@lists.bufferbloat.net X-Gm-Message-State: AOJu0YyGzpof0xWyI9JQobvR5bfScRBkZNoVsVWUxZz9eO+JTx5Siyvl KFRTTexvw7qDxYlcyhiRwPDkc34/ZyDH7AzR+Fuq6X6n5jEpSujyKnKshd2s7ljFWA9iC/aHd6M 6b+AcMIT2sNYWZThF/Qxy4g8SK13RXO7lC2yLaqa+ocY1/lui8GHpBC9BnWyPjgI= X-Gm-Gg: ASbGncsHPqvjlz6ZeeAlViSHt2Ybg0rIZ5lALecYiWHjWts+rrpOgwEitFYzzPsL9+B kHiV1AnjM3bpQHrHSzjUyIWKEd40nNGpNuZPwKtj0DNINm6ayOr7SdGCLzrdYdd07Vqcoe3TkB6 oPoUezT/Mg1w9FvkTFvN1i75+9TFgkeBTXNpygT+khDqe3lThGW8UVT6/pJi/mMrDjGwrDoBV0E brzaOax/97LlkEJUpNpFb7biSzfdBM0rCfl/xGYr9d67ai5xRCWBOVM1v6kMZlHt3DC18jxYLNj IPWugnuC7lQAoS/mLhVNFKYqjyWzhjewKryFamRvceQbVUMY+uYdbFlDtUkkfjGeFUtWRq5gHd1 canCjHI+/0G9ezp52INxce2ld4H02MqnZbA== X-Received: by 2002:a05:6402:51c7:b0:641:6872:8857 with SMTP id 4fb4d7f45d1cf-64555d2fc70mr10371169a12.34.1763996441285; Mon, 24 Nov 2025 07:00:41 -0800 (PST) X-Google-Smtp-Source: AGHT+IHXSfuW/5AE8HyzeU1d9NDzKoSk+tWraH1BUZ5i0fIUPAzUyI/tKi6Aa5eO3MupLov3YuW48w== X-Received: by 2002:a05:6402:51c7:b0:641:6872:8857 with SMTP id 4fb4d7f45d1cf-64555d2fc70mr10371083a12.34.1763996439196; Mon, 24 Nov 2025 07:00:39 -0800 (PST) Received: from alrua-x1.borgediget.toke.dk ([45.145.92.2]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6453642d32csm12261650a12.21.2025.11.24.07.00.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Nov 2025 07:00:38 -0800 (PST) Received: by alrua-x1.borgediget.toke.dk (Postfix, from userid 1000) id 49EFC32A7FF; Mon, 24 Nov 2025 16:00:37 +0100 (CET) From: =?utf-8?q?Toke_H=C3=B8iland-J=C3=B8rgensen?= Date: Mon, 24 Nov 2025 15:59:32 +0100 MIME-Version: 1.0 Message-Id: <20251124-mq-cake-sub-qdisc-v1-1-a2ff1dab488f@redhat.com> References: <20251124-mq-cake-sub-qdisc-v1-0-a2ff1dab488f@redhat.com> In-Reply-To: <20251124-mq-cake-sub-qdisc-v1-0-a2ff1dab488f@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.3 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: b06jTytQf60DYwzSTQuU4zzMO4Nd4TPC08vtxgws18Y_1763996442 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-ID-Hash: V7VF7XGMG5FZHWA4L5DLG2CVBIBF7AO6 X-Message-ID-Hash: V7VF7XGMG5FZHWA4L5DLG2CVBIBF7AO6 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 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 IGZ1bmN0aW9uYWwgY2hhbmdlIGlzIGludGVuZGVkIHdpdGggdGhpcyBwYXRjaC4NCg0KUmV2aWV3 ZWQtYnk6IEphbWFsIEhhZGkgU2FsaW0gPGpoc0Btb2phdGF0dS5jb20+DQpTaWduZWQtb2ZmLWJ5 OiBUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gPHRva2VAcmVkaGF0LmNvbT4NCi0tLQ0KIG5ldC9z Y2hlZC9zY2hfY2FrZS5jIHwgMjQ1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KIDEgZmlsZSBjaGFuZ2VkLCAxMzMgaW5zZXJ0aW9ucygrKSwgMTEy IGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9jYWtlLmMgYi9uZXQv c2NoZWQvc2NoX2Nha2UuYw0KaW5kZXggMzJiYWNmYzMxNGMyLi5hMDJmM2NmY2IwOWIgMTAwNjQ0 DQotLS0gYS9uZXQvc2NoZWQvc2NoX2Nha2UuYw0KKysrIGIvbmV0L3NjaGVkL3NjaF9jYWtlLmMN CkBAIC0xOTcsNDAgKzE5Nyw0MiBAQCBzdHJ1Y3QgY2FrZV90aW5fZGF0YSB7DQogCXUzMgl3YXlf Y29sbGlzaW9uczsNCiB9OyAvKiBudW1iZXIgb2YgdGlucyBpcyBzbWFsbCwgc28gc2l6ZSBvZiB0 aGlzIHN0cnVjdCBkb2Vzbid0IG1hdHRlciBtdWNoICovDQogDQorc3RydWN0IGNha2Vfc2NoZWRf Y29uZmlnIHsNCisJdTY0CQlyYXRlX2JwczsNCisJdTY0CQlpbnRlcnZhbDsNCisJdTY0CQl0YXJn ZXQ7DQorCXUzMgkJYnVmZmVyX2NvbmZpZ19saW1pdDsNCisJdTMyCQlmd21hcmtfbWFzazsNCisJ dTE2CQlmd21hcmtfc2hmdDsNCisJczE2CQlyYXRlX292ZXJoZWFkOw0KKwl1MTYJCXJhdGVfbXB1 Ow0KKwl1MTYJCXJhdGVfZmxhZ3M7DQorCXU4CQl0aW5fbW9kZTsNCisJdTgJCWZsb3dfbW9kZTsN CisJdTgJCWF0bV9tb2RlOw0KKwl1OAkJYWNrX2ZpbHRlcjsNCit9Ow0KKw0KIHN0cnVjdCBjYWtl X3NjaGVkX2RhdGEgew0KIAlzdHJ1Y3QgdGNmX3Byb3RvIF9fcmN1ICpmaWx0ZXJfbGlzdDsgLyog b3B0aW9uYWwgZXh0ZXJuYWwgY2xhc3NpZmllciAqLw0KIAlzdHJ1Y3QgdGNmX2Jsb2NrICpibG9j azsNCiAJc3RydWN0IGNha2VfdGluX2RhdGEgKnRpbnM7DQorCXN0cnVjdCBjYWtlX3NjaGVkX2Nv bmZpZyAqY29uZmlnOw0KIA0KIAlzdHJ1Y3QgY2FrZV9oZWFwX2VudHJ5IG92ZXJmbG93X2hlYXBb Q0FLRV9RVUVVRVMgKiBDQUtFX01BWF9USU5TXTsNCi0JdTE2CQlvdmVyZmxvd190aW1lb3V0Ow0K LQ0KLQl1MTYJCXRpbl9jbnQ7DQotCXU4CQl0aW5fbW9kZTsNCi0JdTgJCWZsb3dfbW9kZTsNCi0J dTgJCWFja19maWx0ZXI7DQotCXU4CQlhdG1fbW9kZTsNCi0NCi0JdTMyCQlmd21hcmtfbWFzazsN Ci0JdTE2CQlmd21hcmtfc2hmdDsNCiANCiAJLyogdGltZV9uZXh0ID0gdGltZV90aGlzICsgKChs ZW4gKiByYXRlX25zKSA+PiByYXRlX3NoZnQpICovDQotCXUxNgkJcmF0ZV9zaGZ0Ow0KIAlrdGlt ZV90CQl0aW1lX25leHRfcGFja2V0Ow0KIAlrdGltZV90CQlmYWlsc2FmZV9uZXh0X3BhY2tldDsN CiAJdTY0CQlyYXRlX25zOw0KLQl1NjQJCXJhdGVfYnBzOw0KLQl1MTYJCXJhdGVfZmxhZ3M7DQot CXMxNgkJcmF0ZV9vdmVyaGVhZDsNCi0JdTE2CQlyYXRlX21wdTsNCi0JdTY0CQlpbnRlcnZhbDsN Ci0JdTY0CQl0YXJnZXQ7DQorCXUxNgkJcmF0ZV9zaGZ0Ow0KKwl1MTYJCW92ZXJmbG93X3RpbWVv dXQ7DQorCXUxNgkJdGluX2NudDsNCiANCiAJLyogcmVzb3VyY2UgdHJhY2tpbmcgKi8NCiAJdTMy CQlidWZmZXJfdXNlZDsNCiAJdTMyCQlidWZmZXJfbWF4X3VzZWQ7DQogCXUzMgkJYnVmZmVyX2xp bWl0Ow0KLQl1MzIJCWJ1ZmZlcl9jb25maWdfbGltaXQ7DQogDQogCS8qIGluZGljZXMgZm9yIGRl cXVldWUgKi8NCiAJdTE2CQljdXJfdGluOw0KQEAgLTExOTgsNyArMTIwMCw3IEBAIHN0YXRpYyBi b29sIGNha2VfdGNwaF9tYXlfZHJvcChjb25zdCBzdHJ1Y3QgdGNwaGRyICp0Y3BoLA0KIHN0YXRp YyBzdHJ1Y3Qgc2tfYnVmZiAqY2FrZV9hY2tfZmlsdGVyKHN0cnVjdCBjYWtlX3NjaGVkX2RhdGEg KnEsDQogCQkJCSAgICAgICBzdHJ1Y3QgY2FrZV9mbG93ICpmbG93KQ0KIHsNCi0JYm9vbCBhZ2dy ZXNzaXZlID0gcS0+YWNrX2ZpbHRlciA9PSBDQUtFX0FDS19BR0dSRVNTSVZFOw0KKwlib29sIGFn Z3Jlc3NpdmUgPSBxLT5jb25maWctPmFja19maWx0ZXIgPT0gQ0FLRV9BQ0tfQUdHUkVTU0lWRTsN CiAJc3RydWN0IHNrX2J1ZmYgKmVsaWdfYWNrID0gTlVMTCwgKmVsaWdfYWNrX3ByZXYgPSBOVUxM Ow0KIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2NoZWNrLCAqc2tiX3ByZXYgPSBOVUxMOw0KIAljb25z dCBzdHJ1Y3QgaXB2NmhkciAqaXB2NmgsICppcHY2aF9jaGVjazsNCkBAIC0xMzU4LDE1ICsxMzYw LDE3IEBAIHN0YXRpYyB1NjQgY2FrZV9ld21hKHU2NCBhdmcsIHU2NCBzYW1wbGUsIHUzMiBzaGlm dCkNCiAJcmV0dXJuIGF2ZzsNCiB9DQogDQotc3RhdGljIHUzMiBjYWtlX2NhbGNfb3ZlcmhlYWQo c3RydWN0IGNha2Vfc2NoZWRfZGF0YSAqcSwgdTMyIGxlbiwgdTMyIG9mZikNCitzdGF0aWMgdTMy IGNha2VfY2FsY19vdmVyaGVhZChzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxZCwgdTMyIGxlbiwg dTMyIG9mZikNCiB7DQorCXN0cnVjdCBjYWtlX3NjaGVkX2NvbmZpZyAqcSA9IHFkLT5jb25maWc7 DQorDQogCWlmIChxLT5yYXRlX2ZsYWdzICYgQ0FLRV9GTEFHX09WRVJIRUFEKQ0KIAkJbGVuIC09 IG9mZjsNCiANCi0JaWYgKHEtPm1heF9uZXRsZW4gPCBsZW4pDQotCQlxLT5tYXhfbmV0bGVuID0g bGVuOw0KLQlpZiAocS0+bWluX25ldGxlbiA+IGxlbikNCi0JCXEtPm1pbl9uZXRsZW4gPSBsZW47 DQorCWlmIChxZC0+bWF4X25ldGxlbiA8IGxlbikNCisJCXFkLT5tYXhfbmV0bGVuID0gbGVuOw0K KwlpZiAocWQtPm1pbl9uZXRsZW4gPiBsZW4pDQorCQlxZC0+bWluX25ldGxlbiA9IGxlbjsNCiAN CiAJbGVuICs9IHEtPnJhdGVfb3ZlcmhlYWQ7DQogDQpAQCAtMTM4NSwxMCArMTM4OSwxMCBAQCBz dGF0aWMgdTMyIGNha2VfY2FsY19vdmVyaGVhZChzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxLCB1 MzIgbGVuLCB1MzIgb2ZmKQ0KIAkJbGVuICs9IChsZW4gKyA2MykgLyA2NDsNCiAJfQ0KIA0KLQlp ZiAocS0+bWF4X2FkamxlbiA8IGxlbikNCi0JCXEtPm1heF9hZGpsZW4gPSBsZW47DQotCWlmIChx LT5taW5fYWRqbGVuID4gbGVuKQ0KLQkJcS0+bWluX2FkamxlbiA9IGxlbjsNCisJaWYgKHFkLT5t YXhfYWRqbGVuIDwgbGVuKQ0KKwkJcWQtPm1heF9hZGpsZW4gPSBsZW47DQorCWlmIChxZC0+bWlu X2FkamxlbiA+IGxlbikNCisJCXFkLT5taW5fYWRqbGVuID0gbGVuOw0KIA0KIAlyZXR1cm4gbGVu Ow0KIH0NCkBAIC0xNTkyLDcgKzE1OTYsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGNha2VfZHJv cChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKQ0KIAlmbG93LT5k cm9wcGVkKys7DQogCWItPnRpbl9kcm9wcGVkKys7DQogDQotCWlmIChxLT5yYXRlX2ZsYWdzICYg Q0FLRV9GTEFHX0lOR1JFU1MpDQorCWlmIChxLT5jb25maWctPnJhdGVfZmxhZ3MgJiBDQUtFX0ZM QUdfSU5HUkVTUykNCiAJCWNha2VfYWR2YW5jZV9zaGFwZXIocSwgYiwgc2tiLCBub3csIHRydWUp Ow0KIA0KIAlxZGlzY19kcm9wX3JlYXNvbihza2IsIHNjaCwgdG9fZnJlZSwgU0tCX0RST1BfUkVB U09OX1FESVNDX09WRVJMSU1JVCk7DQpAQCAtMTY2Myw3ICsxNjY3LDggQEAgc3RhdGljIHU4IGNh a2VfaGFuZGxlX2RpZmZzZXJ2KHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgd2FzaCkNCiBzdGF0 aWMgc3RydWN0IGNha2VfdGluX2RhdGEgKmNha2Vfc2VsZWN0X3RpbihzdHJ1Y3QgUWRpc2MgKnNj aCwNCiAJCQkJCSAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYikNCiB7DQotCXN0cnVjdCBjYWtlX3Nj aGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7DQorCXN0cnVjdCBjYWtlX3NjaGVkX2RhdGEg KnFkID0gcWRpc2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9jb25maWcgKnEgPSBx ZC0+Y29uZmlnOw0KIAl1MzIgdGluLCBtYXJrOw0KIAlib29sIHdhc2g7DQogCXU4IGRzY3A7DQpA QCAtMTY4MCwyNCArMTY4NSwyNCBAQCBzdGF0aWMgc3RydWN0IGNha2VfdGluX2RhdGEgKmNha2Vf c2VsZWN0X3RpbihzdHJ1Y3QgUWRpc2MgKnNjaCwNCiAJaWYgKHEtPnRpbl9tb2RlID09IENBS0Vf RElGRlNFUlZfQkVTVEVGRk9SVCkNCiAJCXRpbiA9IDA7DQogDQotCWVsc2UgaWYgKG1hcmsgJiYg bWFyayA8PSBxLT50aW5fY250KQ0KLQkJdGluID0gcS0+dGluX29yZGVyW21hcmsgLSAxXTsNCisJ ZWxzZSBpZiAobWFyayAmJiBtYXJrIDw9IHFkLT50aW5fY250KQ0KKwkJdGluID0gcWQtPnRpbl9v cmRlclttYXJrIC0gMV07DQogDQogCWVsc2UgaWYgKFRDX0hfTUFKKHNrYi0+cHJpb3JpdHkpID09 IHNjaC0+aGFuZGxlICYmDQogCQkgVENfSF9NSU4oc2tiLT5wcmlvcml0eSkgPiAwICYmDQotCQkg VENfSF9NSU4oc2tiLT5wcmlvcml0eSkgPD0gcS0+dGluX2NudCkNCi0JCXRpbiA9IHEtPnRpbl9v cmRlcltUQ19IX01JTihza2ItPnByaW9yaXR5KSAtIDFdOw0KKwkJIFRDX0hfTUlOKHNrYi0+cHJp b3JpdHkpIDw9IHFkLT50aW5fY250KQ0KKwkJdGluID0gcWQtPnRpbl9vcmRlcltUQ19IX01JTihz a2ItPnByaW9yaXR5KSAtIDFdOw0KIA0KIAllbHNlIHsNCiAJCWlmICghd2FzaCkNCiAJCQlkc2Nw ID0gY2FrZV9oYW5kbGVfZGlmZnNlcnYoc2tiLCB3YXNoKTsNCi0JCXRpbiA9IHEtPnRpbl9pbmRl eFtkc2NwXTsNCisJCXRpbiA9IHFkLT50aW5faW5kZXhbZHNjcF07DQogDQotCQlpZiAodW5saWtl bHkodGluID49IHEtPnRpbl9jbnQpKQ0KKwkJaWYgKHVubGlrZWx5KHRpbiA+PSBxZC0+dGluX2Nu dCkpDQogCQkJdGluID0gMDsNCiAJfQ0KIA0KLQlyZXR1cm4gJnEtPnRpbnNbdGluXTsNCisJcmV0 dXJuICZxZC0+dGluc1t0aW5dOw0KIH0NCiANCiBzdGF0aWMgdTMyIGNha2VfY2xhc3NpZnkoc3Ry dWN0IFFkaXNjICpzY2gsIHN0cnVjdCBjYWtlX3Rpbl9kYXRhICoqdCwNCkBAIC0xNzUzLDcgKzE3 NTgsNyBAQCBzdGF0aWMgczMyIGNha2VfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1 Y3QgUWRpc2MgKnNjaCwNCiAJdTMyIGlkeCwgdGluOw0KIA0KIAkvKiBjaG9vc2UgZmxvdyB0byBp bnNlcnQgaW50byAqLw0KLQlpZHggPSBjYWtlX2NsYXNzaWZ5KHNjaCwgJmIsIHNrYiwgcS0+Zmxv d19tb2RlLCAmcmV0KTsNCisJaWR4ID0gY2FrZV9jbGFzc2lmeShzY2gsICZiLCBza2IsIHEtPmNv bmZpZy0+Zmxvd19tb2RlLCAmcmV0KTsNCiAJaWYgKGlkeCA9PSAwKSB7DQogCQlpZiAocmV0ICYg X19ORVRfWE1JVF9CWVBBU1MpDQogCQkJcWRpc2NfcXN0YXRzX2Ryb3Aoc2NoKTsNCkBAIC0xNzg4 LDcgKzE3OTMsNyBAQCBzdGF0aWMgczMyIGNha2VfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2ti LCBzdHJ1Y3QgUWRpc2MgKnNjaCwNCiAJaWYgKHVubGlrZWx5KGxlbiA+IGItPm1heF9za2JsZW4p KQ0KIAkJYi0+bWF4X3NrYmxlbiA9IGxlbjsNCiANCi0JaWYgKHNrYl9pc19nc28oc2tiKSAmJiBx LT5yYXRlX2ZsYWdzICYgQ0FLRV9GTEFHX1NQTElUX0dTTykgew0KKwlpZiAoc2tiX2lzX2dzbyhz a2IpICYmIHEtPmNvbmZpZy0+cmF0ZV9mbGFncyAmIENBS0VfRkxBR19TUExJVF9HU08pIHsNCiAJ CXN0cnVjdCBza19idWZmICpzZWdzLCAqbnNrYjsNCiAJCW5ldGRldl9mZWF0dXJlc190IGZlYXR1 cmVzID0gbmV0aWZfc2tiX2ZlYXR1cmVzKHNrYik7DQogCQl1bnNpZ25lZCBpbnQgc2xlbiA9IDAs IG51bXNlZ3MgPSAwOw0KQEAgLTE4MjcsNyArMTgzMiw3IEBAIHN0YXRpYyBzMzIgY2FrZV9lbnF1 ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLA0KIAkJZ2V0X2NvYmFs dF9jYihza2IpLT5hZGp1c3RlZF9sZW4gPSBjYWtlX292ZXJoZWFkKHEsIHNrYik7DQogCQlmbG93 X3F1ZXVlX2FkZChmbG93LCBza2IpOw0KIA0KLQkJaWYgKHEtPmFja19maWx0ZXIpDQorCQlpZiAo cS0+Y29uZmlnLT5hY2tfZmlsdGVyKQ0KIAkJCWFjayA9IGNha2VfYWNrX2ZpbHRlcihxLCBmbG93 KTsNCiANCiAJCWlmIChhY2spIHsNCkBAIC0xODM2LDcgKzE4NDEsNyBAQCBzdGF0aWMgczMyIGNh a2VfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwNCiAJCQli LT5ieXRlcyArPSBxZGlzY19wa3RfbGVuKGFjayk7DQogCQkJbGVuIC09IHFkaXNjX3BrdF9sZW4o YWNrKTsNCiAJCQlxLT5idWZmZXJfdXNlZCArPSBza2ItPnRydWVzaXplIC0gYWNrLT50cnVlc2l6 ZTsNCi0JCQlpZiAocS0+cmF0ZV9mbGFncyAmIENBS0VfRkxBR19JTkdSRVNTKQ0KKwkJCWlmIChx LT5jb25maWctPnJhdGVfZmxhZ3MgJiBDQUtFX0ZMQUdfSU5HUkVTUykNCiAJCQkJY2FrZV9hZHZh bmNlX3NoYXBlcihxLCBiLCBhY2ssIG5vdywgdHJ1ZSk7DQogDQogCQkJcWRpc2NfdHJlZV9yZWR1 Y2VfYmFja2xvZyhzY2gsIDEsIHFkaXNjX3BrdF9sZW4oYWNrKSk7DQpAQCAtMTg1OSw3ICsxODY0 LDcgQEAgc3RhdGljIHMzMiBjYWtlX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0 IFFkaXNjICpzY2gsDQogCQljYWtlX2hlYXBpZnlfdXAocSwgYi0+b3ZlcmZsb3dfaWR4W2lkeF0p Ow0KIA0KIAkvKiBpbmNvbWluZyBiYW5kd2lkdGggY2FwYWNpdHkgZXN0aW1hdGUgKi8NCi0JaWYg KHEtPnJhdGVfZmxhZ3MgJiBDQUtFX0ZMQUdfQVVUT1JBVEVfSU5HUkVTUykgew0KKwlpZiAocS0+ Y29uZmlnLT5yYXRlX2ZsYWdzICYgQ0FLRV9GTEFHX0FVVE9SQVRFX0lOR1JFU1MpIHsNCiAJCXU2 NCBwYWNrZXRfaW50ZXJ2YWwgPSBcDQogCQkJa3RpbWVfdG9fbnMoa3RpbWVfc3ViKG5vdywgcS0+ bGFzdF9wYWNrZXRfdGltZSkpOw0KIA0KQEAgLTE4OTEsNyArMTg5Niw3IEBAIHN0YXRpYyBzMzIg Y2FrZV9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLA0KIAkJ CWlmIChrdGltZV9hZnRlcihub3csDQogCQkJCQlrdGltZV9hZGRfbXMocS0+bGFzdF9yZWNvbmZp Z190aW1lLA0KIAkJCQkJCSAgICAgMjUwKSkpIHsNCi0JCQkJcS0+cmF0ZV9icHMgPSAocS0+YXZn X3BlYWtfYmFuZHdpZHRoICogMTUpID4+IDQ7DQorCQkJCXEtPmNvbmZpZy0+cmF0ZV9icHMgPSAo cS0+YXZnX3BlYWtfYmFuZHdpZHRoICogMTUpID4+IDQ7DQogCQkJCWNha2VfcmVjb25maWd1cmUo c2NoKTsNCiAJCQl9DQogCQl9DQpAQCAtMTkxMSw3ICsxOTE2LDcgQEAgc3RhdGljIHMzMiBjYWtl X2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsDQogCQlmbG93 LT5zZXQgPSBDQUtFX1NFVF9TUEFSU0U7DQogCQliLT5zcGFyc2VfZmxvd19jb3VudCsrOw0KIA0K LQkJZmxvdy0+ZGVmaWNpdCA9IGNha2VfZ2V0X2Zsb3dfcXVhbnR1bShiLCBmbG93LCBxLT5mbG93 X21vZGUpOw0KKwkJZmxvdy0+ZGVmaWNpdCA9IGNha2VfZ2V0X2Zsb3dfcXVhbnR1bShiLCBmbG93 LCBxLT5jb25maWctPmZsb3dfbW9kZSk7DQogCX0gZWxzZSBpZiAoZmxvdy0+c2V0ID09IENBS0Vf U0VUX1NQQVJTRV9XQUlUKSB7DQogCQkvKiB0aGlzIGZsb3cgd2FzIGVtcHR5LCBhY2NvdW50ZWQg YXMgYSBzcGFyc2UgZmxvdywgYnV0IGFjdHVhbGx5DQogCQkgKiBpbiB0aGUgYnVsayByb3RhdGlv bi4NCkBAIC0xOTIwLDggKzE5MjUsOCBAQCBzdGF0aWMgczMyIGNha2VfZW5xdWV1ZShzdHJ1Y3Qg c2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwNCiAJCWItPnNwYXJzZV9mbG93X2NvdW50 LS07DQogCQliLT5idWxrX2Zsb3dfY291bnQrKzsNCiANCi0JCWNha2VfaW5jX3NyY2hvc3RfYnVs a19mbG93X2NvdW50KGIsIGZsb3csIHEtPmZsb3dfbW9kZSk7DQotCQljYWtlX2luY19kc3Rob3N0 X2J1bGtfZmxvd19jb3VudChiLCBmbG93LCBxLT5mbG93X21vZGUpOw0KKwkJY2FrZV9pbmNfc3Jj aG9zdF9idWxrX2Zsb3dfY291bnQoYiwgZmxvdywgcS0+Y29uZmlnLT5mbG93X21vZGUpOw0KKwkJ Y2FrZV9pbmNfZHN0aG9zdF9idWxrX2Zsb3dfY291bnQoYiwgZmxvdywgcS0+Y29uZmlnLT5mbG93 X21vZGUpOw0KIAl9DQogDQogCWlmIChxLT5idWZmZXJfdXNlZCA+IHEtPmJ1ZmZlcl9tYXhfdXNl ZCkNCkBAIC0yMTAzLDggKzIxMDgsOCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmNha2VfZGVx dWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAJCQkJYi0+c3BhcnNlX2Zsb3dfY291bnQtLTsNCiAJ CQkJYi0+YnVsa19mbG93X2NvdW50Kys7DQogDQotCQkJCWNha2VfaW5jX3NyY2hvc3RfYnVsa19m bG93X2NvdW50KGIsIGZsb3csIHEtPmZsb3dfbW9kZSk7DQotCQkJCWNha2VfaW5jX2RzdGhvc3Rf YnVsa19mbG93X2NvdW50KGIsIGZsb3csIHEtPmZsb3dfbW9kZSk7DQorCQkJCWNha2VfaW5jX3Ny Y2hvc3RfYnVsa19mbG93X2NvdW50KGIsIGZsb3csIHEtPmNvbmZpZy0+Zmxvd19tb2RlKTsNCisJ CQkJY2FrZV9pbmNfZHN0aG9zdF9idWxrX2Zsb3dfY291bnQoYiwgZmxvdywgcS0+Y29uZmlnLT5m bG93X21vZGUpOw0KIA0KIAkJCQlmbG93LT5zZXQgPSBDQUtFX1NFVF9CVUxLOw0KIAkJCX0gZWxz ZSB7DQpAQCAtMjExNiw3ICsyMTIxLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpjYWtlX2Rl cXVldWUoc3RydWN0IFFkaXNjICpzY2gpDQogCQkJfQ0KIAkJfQ0KIA0KLQkJZmxvdy0+ZGVmaWNp dCArPSBjYWtlX2dldF9mbG93X3F1YW50dW0oYiwgZmxvdywgcS0+Zmxvd19tb2RlKTsNCisJCWZs b3ctPmRlZmljaXQgKz0gY2FrZV9nZXRfZmxvd19xdWFudHVtKGIsIGZsb3csIHEtPmNvbmZpZy0+ Zmxvd19tb2RlKTsNCiAJCWxpc3RfbW92ZV90YWlsKCZmbG93LT5mbG93Y2hhaW4sICZiLT5vbGRf Zmxvd3MpOw0KIA0KIAkJZ290byByZXRyeTsNCkBAIC0yMTQwLDggKzIxNDUsOCBAQCBzdGF0aWMg c3RydWN0IHNrX2J1ZmYgKmNha2VfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAJCQkJaWYg KGZsb3ctPnNldCA9PSBDQUtFX1NFVF9CVUxLKSB7DQogCQkJCQliLT5idWxrX2Zsb3dfY291bnQt LTsNCiANCi0JCQkJCWNha2VfZGVjX3NyY2hvc3RfYnVsa19mbG93X2NvdW50KGIsIGZsb3csIHEt PmZsb3dfbW9kZSk7DQotCQkJCQljYWtlX2RlY19kc3Rob3N0X2J1bGtfZmxvd19jb3VudChiLCBm bG93LCBxLT5mbG93X21vZGUpOw0KKwkJCQkJY2FrZV9kZWNfc3JjaG9zdF9idWxrX2Zsb3dfY291 bnQoYiwgZmxvdywgcS0+Y29uZmlnLT5mbG93X21vZGUpOw0KKwkJCQkJY2FrZV9kZWNfZHN0aG9z dF9idWxrX2Zsb3dfY291bnQoYiwgZmxvdywgcS0+Y29uZmlnLT5mbG93X21vZGUpOw0KIA0KIAkJ CQkJYi0+ZGVjYXlpbmdfZmxvd19jb3VudCsrOw0KIAkJCQl9IGVsc2UgaWYgKGZsb3ctPnNldCA9 PSBDQUtFX1NFVF9TUEFSU0UgfHwNCkBAIC0yMTU5LDggKzIxNjQsOCBAQCBzdGF0aWMgc3RydWN0 IHNrX2J1ZmYgKmNha2VfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAJCQkJZWxzZSBpZiAo Zmxvdy0+c2V0ID09IENBS0VfU0VUX0JVTEspIHsNCiAJCQkJCWItPmJ1bGtfZmxvd19jb3VudC0t Ow0KIA0KLQkJCQkJY2FrZV9kZWNfc3JjaG9zdF9idWxrX2Zsb3dfY291bnQoYiwgZmxvdywgcS0+ Zmxvd19tb2RlKTsNCi0JCQkJCWNha2VfZGVjX2RzdGhvc3RfYnVsa19mbG93X2NvdW50KGIsIGZs b3csIHEtPmZsb3dfbW9kZSk7DQorCQkJCQljYWtlX2RlY19zcmNob3N0X2J1bGtfZmxvd19jb3Vu dChiLCBmbG93LCBxLT5jb25maWctPmZsb3dfbW9kZSk7DQorCQkJCQljYWtlX2RlY19kc3Rob3N0 X2J1bGtfZmxvd19jb3VudChiLCBmbG93LCBxLT5jb25maWctPmZsb3dfbW9kZSk7DQogCQkJCX0g ZWxzZQ0KIAkJCQkJYi0+ZGVjYXlpbmdfZmxvd19jb3VudC0tOw0KIA0KQEAgLTIxNzEsMTQgKzIx NzYsMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpjYWtlX2RlcXVldWUoc3RydWN0IFFkaXNj ICpzY2gpDQogDQogCQlyZWFzb24gPSBjb2JhbHRfc2hvdWxkX2Ryb3AoJmZsb3ctPmN2YXJzLCAm Yi0+Y3BhcmFtcywgbm93LCBza2IsDQogCQkJCQkgICAgKGItPmJ1bGtfZmxvd19jb3VudCAqDQot CQkJCQkgICAgICEhKHEtPnJhdGVfZmxhZ3MgJg0KKwkJCQkJICAgICAhIShxLT5jb25maWctPnJh dGVfZmxhZ3MgJg0KIAkJCQkJCUNBS0VfRkxBR19JTkdSRVNTKSkpOw0KIAkJLyogTGFzdCBwYWNr ZXQgaW4gcXVldWUgbWF5IGJlIG1hcmtlZCwgc2hvdWxkbid0IGJlIGRyb3BwZWQgKi8NCiAJCWlm IChyZWFzb24gPT0gU0tCX05PVF9EUk9QUEVEX1lFVCB8fCAhZmxvdy0+aGVhZCkNCiAJCQlicmVh azsNCiANCiAJCS8qIGRyb3AgdGhpcyBwYWNrZXQsIGdldCBhbm90aGVyIG9uZSAqLw0KLQkJaWYg KHEtPnJhdGVfZmxhZ3MgJiBDQUtFX0ZMQUdfSU5HUkVTUykgew0KKwkJaWYgKHEtPmNvbmZpZy0+ cmF0ZV9mbGFncyAmIENBS0VfRkxBR19JTkdSRVNTKSB7DQogCQkJbGVuID0gY2FrZV9hZHZhbmNl X3NoYXBlcihxLCBiLCBza2IsDQogCQkJCQkJICBub3csIHRydWUpOw0KIAkJCWZsb3ctPmRlZmlj aXQgLT0gbGVuOw0KQEAgLTIxODksNyArMjE5NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAq Y2FrZV9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKQ0KIAkJcWRpc2NfdHJlZV9yZWR1Y2VfYmFj a2xvZyhzY2gsIDEsIHFkaXNjX3BrdF9sZW4oc2tiKSk7DQogCQlxZGlzY19xc3RhdHNfZHJvcChz Y2gpOw0KIAkJa2ZyZWVfc2tiX3JlYXNvbihza2IsIHJlYXNvbik7DQotCQlpZiAocS0+cmF0ZV9m bGFncyAmIENBS0VfRkxBR19JTkdSRVNTKQ0KKwkJaWYgKHEtPmNvbmZpZy0+cmF0ZV9mbGFncyAm IENBS0VfRkxBR19JTkdSRVNTKQ0KIAkJCWdvdG8gcmV0cnk7DQogCX0NCiANCkBAIC0yMzExLDcg KzIzMTYsNyBAQCBzdGF0aWMgaW50IGNha2VfY29uZmlnX2Jlc3RlZmZvcnQoc3RydWN0IFFkaXNj ICpzY2gpDQogCXN0cnVjdCBjYWtlX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7DQog CXN0cnVjdCBjYWtlX3Rpbl9kYXRhICpiID0gJnEtPnRpbnNbMF07DQogCXUzMiBtdHUgPSBwc2No ZWRfbXR1KHFkaXNjX2RldihzY2gpKTsNCi0JdTY0IHJhdGUgPSBxLT5yYXRlX2JwczsNCisJdTY0 IHJhdGUgPSBxLT5jb25maWctPnJhdGVfYnBzOw0KIA0KIAlxLT50aW5fY250ID0gMTsNCiANCkBA IC0yMzE5LDcgKzIzMjQsNyBAQCBzdGF0aWMgaW50IGNha2VfY29uZmlnX2Jlc3RlZmZvcnQoc3Ry dWN0IFFkaXNjICpzY2gpDQogCXEtPnRpbl9vcmRlciA9IG5vcm1hbF9vcmRlcjsNCiANCiAJY2Fr ZV9zZXRfcmF0ZShiLCByYXRlLCBtdHUsDQotCQkgICAgICB1c190b19ucyhxLT50YXJnZXQpLCB1 c190b19ucyhxLT5pbnRlcnZhbCkpOw0KKwkJICAgICAgdXNfdG9fbnMocS0+Y29uZmlnLT50YXJn ZXQpLCB1c190b19ucyhxLT5jb25maWctPmludGVydmFsKSk7DQogCWItPnRpbl9xdWFudHVtID0g NjU1MzU7DQogDQogCXJldHVybiAwOw0KQEAgLTIzMzAsNyArMjMzNSw3IEBAIHN0YXRpYyBpbnQg Y2FrZV9jb25maWdfcHJlY2VkZW5jZShzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAJLyogY29udmVydCBo aWdoLWxldmVsICh1c2VyIHZpc2libGUpIHBhcmFtZXRlcnMgaW50byBpbnRlcm5hbCBmb3JtYXQg Ki8NCiAJc3RydWN0IGNha2Vfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTsNCiAJdTMy IG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpOw0KLQl1NjQgcmF0ZSA9IHEtPnJhdGVf YnBzOw0KKwl1NjQgcmF0ZSA9IHEtPmNvbmZpZy0+cmF0ZV9icHM7DQogCXUzMiBxdWFudHVtID0g MjU2Ow0KIAl1MzIgaTsNCiANCkBAIC0yMzQxLDggKzIzNDYsOCBAQCBzdGF0aWMgaW50IGNha2Vf Y29uZmlnX3ByZWNlZGVuY2Uoc3RydWN0IFFkaXNjICpzY2gpDQogCWZvciAoaSA9IDA7IGkgPCBx LT50aW5fY250OyBpKyspIHsNCiAJCXN0cnVjdCBjYWtlX3Rpbl9kYXRhICpiID0gJnEtPnRpbnNb aV07DQogDQotCQljYWtlX3NldF9yYXRlKGIsIHJhdGUsIG10dSwgdXNfdG9fbnMocS0+dGFyZ2V0 KSwNCi0JCQkgICAgICB1c190b19ucyhxLT5pbnRlcnZhbCkpOw0KKwkJY2FrZV9zZXRfcmF0ZShi LCByYXRlLCBtdHUsIHVzX3RvX25zKHEtPmNvbmZpZy0+dGFyZ2V0KSwNCisJCQkgICAgICB1c190 b19ucyhxLT5jb25maWctPmludGVydmFsKSk7DQogDQogCQliLT50aW5fcXVhbnR1bSA9IG1heF90 KHUxNiwgMVUsIHF1YW50dW0pOw0KIA0KQEAgLTI0MTksNyArMjQyNCw3IEBAIHN0YXRpYyBpbnQg Y2FrZV9jb25maWdfZGlmZnNlcnY4KHN0cnVjdCBRZGlzYyAqc2NoKQ0KIA0KIAlzdHJ1Y3QgY2Fr ZV9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpOw0KIAl1MzIgbXR1ID0gcHNjaGVkX210 dShxZGlzY19kZXYoc2NoKSk7DQotCXU2NCByYXRlID0gcS0+cmF0ZV9icHM7DQorCXU2NCByYXRl ID0gcS0+Y29uZmlnLT5yYXRlX2JwczsNCiAJdTMyIHF1YW50dW0gPSAyNTY7DQogCXUzMiBpOw0K IA0KQEAgLTI0MzMsOCArMjQzOCw4IEBAIHN0YXRpYyBpbnQgY2FrZV9jb25maWdfZGlmZnNlcnY4 KHN0cnVjdCBRZGlzYyAqc2NoKQ0KIAlmb3IgKGkgPSAwOyBpIDwgcS0+dGluX2NudDsgaSsrKSB7 DQogCQlzdHJ1Y3QgY2FrZV90aW5fZGF0YSAqYiA9ICZxLT50aW5zW2ldOw0KIA0KLQkJY2FrZV9z ZXRfcmF0ZShiLCByYXRlLCBtdHUsIHVzX3RvX25zKHEtPnRhcmdldCksDQotCQkJICAgICAgdXNf dG9fbnMocS0+aW50ZXJ2YWwpKTsNCisJCWNha2Vfc2V0X3JhdGUoYiwgcmF0ZSwgbXR1LCB1c190 b19ucyhxLT5jb25maWctPnRhcmdldCksDQorCQkJICAgICAgdXNfdG9fbnMocS0+Y29uZmlnLT5p bnRlcnZhbCkpOw0KIA0KIAkJYi0+dGluX3F1YW50dW0gPSBtYXhfdCh1MTYsIDFVLCBxdWFudHVt KTsNCiANCkBAIC0yNDYzLDcgKzI0NjgsNyBAQCBzdGF0aWMgaW50IGNha2VfY29uZmlnX2RpZmZz ZXJ2NChzdHJ1Y3QgUWRpc2MgKnNjaCkNCiANCiAJc3RydWN0IGNha2Vfc2NoZWRfZGF0YSAqcSA9 IHFkaXNjX3ByaXYoc2NoKTsNCiAJdTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkp Ow0KLQl1NjQgcmF0ZSA9IHEtPnJhdGVfYnBzOw0KKwl1NjQgcmF0ZSA9IHEtPmNvbmZpZy0+cmF0 ZV9icHM7DQogCXUzMiBxdWFudHVtID0gMTAyNDsNCiANCiAJcS0+dGluX2NudCA9IDQ7DQpAQCAt MjQ3NCwxMyArMjQ3OSwxMyBAQCBzdGF0aWMgaW50IGNha2VfY29uZmlnX2RpZmZzZXJ2NChzdHJ1 Y3QgUWRpc2MgKnNjaCkNCiANCiAJLyogY2xhc3MgY2hhcmFjdGVyaXN0aWNzICovDQogCWNha2Vf c2V0X3JhdGUoJnEtPnRpbnNbMF0sIHJhdGUsIG10dSwNCi0JCSAgICAgIHVzX3RvX25zKHEtPnRh cmdldCksIHVzX3RvX25zKHEtPmludGVydmFsKSk7DQorCQkgICAgICB1c190b19ucyhxLT5jb25m aWctPnRhcmdldCksIHVzX3RvX25zKHEtPmNvbmZpZy0+aW50ZXJ2YWwpKTsNCiAJY2FrZV9zZXRf cmF0ZSgmcS0+dGluc1sxXSwgcmF0ZSA+PiA0LCBtdHUsDQotCQkgICAgICB1c190b19ucyhxLT50 YXJnZXQpLCB1c190b19ucyhxLT5pbnRlcnZhbCkpOw0KKwkJICAgICAgdXNfdG9fbnMocS0+Y29u ZmlnLT50YXJnZXQpLCB1c190b19ucyhxLT5jb25maWctPmludGVydmFsKSk7DQogCWNha2Vfc2V0 X3JhdGUoJnEtPnRpbnNbMl0sIHJhdGUgPj4gMSwgbXR1LA0KLQkJICAgICAgdXNfdG9fbnMocS0+ dGFyZ2V0KSwgdXNfdG9fbnMocS0+aW50ZXJ2YWwpKTsNCisJCSAgICAgIHVzX3RvX25zKHEtPmNv bmZpZy0+dGFyZ2V0KSwgdXNfdG9fbnMocS0+Y29uZmlnLT5pbnRlcnZhbCkpOw0KIAljYWtlX3Nl dF9yYXRlKCZxLT50aW5zWzNdLCByYXRlID4+IDIsIG10dSwNCi0JCSAgICAgIHVzX3RvX25zKHEt PnRhcmdldCksIHVzX3RvX25zKHEtPmludGVydmFsKSk7DQorCQkgICAgICB1c190b19ucyhxLT5j b25maWctPnRhcmdldCksIHVzX3RvX25zKHEtPmNvbmZpZy0+aW50ZXJ2YWwpKTsNCiANCiAJLyog YmFuZHdpZHRoLXNoYXJpbmcgd2VpZ2h0cyAqLw0KIAlxLT50aW5zWzBdLnRpbl9xdWFudHVtID0g cXVhbnR1bTsNCkBAIC0yNTAwLDcgKzI1MDUsNyBAQCBzdGF0aWMgaW50IGNha2VfY29uZmlnX2Rp ZmZzZXJ2MyhzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAgKi8NCiAJc3RydWN0IGNha2Vfc2NoZWRfZGF0 YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTsNCiAJdTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2 KHNjaCkpOw0KLQl1NjQgcmF0ZSA9IHEtPnJhdGVfYnBzOw0KKwl1NjQgcmF0ZSA9IHEtPmNvbmZp Zy0+cmF0ZV9icHM7DQogCXUzMiBxdWFudHVtID0gMTAyNDsNCiANCiAJcS0+dGluX2NudCA9IDM7 DQpAQCAtMjUxMSwxMSArMjUxNiwxMSBAQCBzdGF0aWMgaW50IGNha2VfY29uZmlnX2RpZmZzZXJ2 MyhzdHJ1Y3QgUWRpc2MgKnNjaCkNCiANCiAJLyogY2xhc3MgY2hhcmFjdGVyaXN0aWNzICovDQog CWNha2Vfc2V0X3JhdGUoJnEtPnRpbnNbMF0sIHJhdGUsIG10dSwNCi0JCSAgICAgIHVzX3RvX25z KHEtPnRhcmdldCksIHVzX3RvX25zKHEtPmludGVydmFsKSk7DQorCQkgICAgICB1c190b19ucyhx LT5jb25maWctPnRhcmdldCksIHVzX3RvX25zKHEtPmNvbmZpZy0+aW50ZXJ2YWwpKTsNCiAJY2Fr ZV9zZXRfcmF0ZSgmcS0+dGluc1sxXSwgcmF0ZSA+PiA0LCBtdHUsDQotCQkgICAgICB1c190b19u cyhxLT50YXJnZXQpLCB1c190b19ucyhxLT5pbnRlcnZhbCkpOw0KKwkJICAgICAgdXNfdG9fbnMo cS0+Y29uZmlnLT50YXJnZXQpLCB1c190b19ucyhxLT5jb25maWctPmludGVydmFsKSk7DQogCWNh a2Vfc2V0X3JhdGUoJnEtPnRpbnNbMl0sIHJhdGUgPj4gMiwgbXR1LA0KLQkJICAgICAgdXNfdG9f bnMocS0+dGFyZ2V0KSwgdXNfdG9fbnMocS0+aW50ZXJ2YWwpKTsNCisJCSAgICAgIHVzX3RvX25z KHEtPmNvbmZpZy0+dGFyZ2V0KSwgdXNfdG9fbnMocS0+Y29uZmlnLT5pbnRlcnZhbCkpOw0KIA0K IAkvKiBiYW5kd2lkdGgtc2hhcmluZyB3ZWlnaHRzICovDQogCXEtPnRpbnNbMF0udGluX3F1YW50 dW0gPSBxdWFudHVtOw0KQEAgLTI1MjcsNyArMjUzMiw4IEBAIHN0YXRpYyBpbnQgY2FrZV9jb25m aWdfZGlmZnNlcnYzKHN0cnVjdCBRZGlzYyAqc2NoKQ0KIA0KIHN0YXRpYyB2b2lkIGNha2VfcmVj b25maWd1cmUoc3RydWN0IFFkaXNjICpzY2gpDQogew0KLQlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRh ICpxID0gcWRpc2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxZCA9IHFk aXNjX3ByaXYoc2NoKTsNCisJc3RydWN0IGNha2Vfc2NoZWRfY29uZmlnICpxID0gcWQtPmNvbmZp ZzsNCiAJaW50IGMsIGZ0Ow0KIA0KIAlzd2l0Y2ggKHEtPnRpbl9tb2RlKSB7DQpAQCAtMjU1Mywz NiArMjU1OSwzNyBAQCBzdGF0aWMgdm9pZCBjYWtlX3JlY29uZmlndXJlKHN0cnVjdCBRZGlzYyAq c2NoKQ0KIAkJYnJlYWs7DQogCX0NCiANCi0JZm9yIChjID0gcS0+dGluX2NudDsgYyA8IENBS0Vf TUFYX1RJTlM7IGMrKykgew0KKwlmb3IgKGMgPSBxZC0+dGluX2NudDsgYyA8IENBS0VfTUFYX1RJ TlM7IGMrKykgew0KIAkJY2FrZV9jbGVhcl90aW4oc2NoLCBjKTsNCi0JCXEtPnRpbnNbY10uY3Bh cmFtcy5tdHVfdGltZSA9IHEtPnRpbnNbZnRdLmNwYXJhbXMubXR1X3RpbWU7DQorCQlxZC0+dGlu c1tjXS5jcGFyYW1zLm10dV90aW1lID0gcWQtPnRpbnNbZnRdLmNwYXJhbXMubXR1X3RpbWU7DQog CX0NCiANCi0JcS0+cmF0ZV9ucyAgID0gcS0+dGluc1tmdF0udGluX3JhdGVfbnM7DQotCXEtPnJh dGVfc2hmdCA9IHEtPnRpbnNbZnRdLnRpbl9yYXRlX3NoZnQ7DQorCXFkLT5yYXRlX25zICAgPSBx ZC0+dGluc1tmdF0udGluX3JhdGVfbnM7DQorCXFkLT5yYXRlX3NoZnQgPSBxZC0+dGluc1tmdF0u dGluX3JhdGVfc2hmdDsNCiANCiAJaWYgKHEtPmJ1ZmZlcl9jb25maWdfbGltaXQpIHsNCi0JCXEt PmJ1ZmZlcl9saW1pdCA9IHEtPmJ1ZmZlcl9jb25maWdfbGltaXQ7DQorCQlxZC0+YnVmZmVyX2xp bWl0ID0gcS0+YnVmZmVyX2NvbmZpZ19saW1pdDsNCiAJfSBlbHNlIGlmIChxLT5yYXRlX2Jwcykg ew0KIAkJdTY0IHQgPSBxLT5yYXRlX2JwcyAqIHEtPmludGVydmFsOw0KIA0KIAkJZG9fZGl2KHQs IFVTRUNfUEVSX1NFQyAvIDQpOw0KLQkJcS0+YnVmZmVyX2xpbWl0ID0gbWF4X3QodTMyLCB0LCA0 VSA8PCAyMCk7DQorCQlxZC0+YnVmZmVyX2xpbWl0ID0gbWF4X3QodTMyLCB0LCA0VSA8PCAyMCk7 DQogCX0gZWxzZSB7DQotCQlxLT5idWZmZXJfbGltaXQgPSB+MDsNCisJCXFkLT5idWZmZXJfbGlt aXQgPSB+MDsNCiAJfQ0KIA0KIAlzY2gtPmZsYWdzICY9IH5UQ1FfRl9DQU5fQllQQVNTOw0KIA0K LQlxLT5idWZmZXJfbGltaXQgPSBtaW4ocS0+YnVmZmVyX2xpbWl0LA0KLQkJCSAgICAgIG1heChz Y2gtPmxpbWl0ICogcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksDQotCQkJCSAgcS0+YnVmZmVy X2NvbmZpZ19saW1pdCkpOw0KKwlxZC0+YnVmZmVyX2xpbWl0ID0gbWluKHFkLT5idWZmZXJfbGlt aXQsDQorCQkJICAgICAgIG1heChzY2gtPmxpbWl0ICogcHNjaGVkX210dShxZGlzY19kZXYoc2No KSksDQorCQkJCSAgIHEtPmJ1ZmZlcl9jb25maWdfbGltaXQpKTsNCiB9DQogDQogc3RhdGljIGlu dCBjYWtlX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LA0KIAkJ ICAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykNCiB7DQotCXN0cnVjdCBjYWtl X3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7DQorCXN0cnVjdCBjYWtlX3NjaGVkX2Rh dGEgKnFkID0gcWRpc2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9jb25maWcgKnEg PSBxZC0+Y29uZmlnOw0KIAlzdHJ1Y3QgbmxhdHRyICp0YltUQ0FfQ0FLRV9NQVggKyAxXTsNCiAJ dTE2IHJhdGVfZmxhZ3M7DQogCXU4IGZsb3dfbW9kZTsNCkBAIC0yNjM2LDE5ICsyNjQzLDE5IEBA IHN0YXRpYyBpbnQgY2FrZV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIg Km9wdCwNCiAJCQkgICBubGFfZ2V0X3MzMih0YltUQ0FfQ0FLRV9PVkVSSEVBRF0pKTsNCiAJCXJh dGVfZmxhZ3MgfD0gQ0FLRV9GTEFHX09WRVJIRUFEOw0KIA0KLQkJcS0+bWF4X25ldGxlbiA9IDA7 DQotCQlxLT5tYXhfYWRqbGVuID0gMDsNCi0JCXEtPm1pbl9uZXRsZW4gPSB+MDsNCi0JCXEtPm1p bl9hZGpsZW4gPSB+MDsNCisJCXFkLT5tYXhfbmV0bGVuID0gMDsNCisJCXFkLT5tYXhfYWRqbGVu ID0gMDsNCisJCXFkLT5taW5fbmV0bGVuID0gfjA7DQorCQlxZC0+bWluX2FkamxlbiA9IH4wOw0K IAl9DQogDQogCWlmICh0YltUQ0FfQ0FLRV9SQVddKSB7DQogCQlyYXRlX2ZsYWdzICY9IH5DQUtF X0ZMQUdfT1ZFUkhFQUQ7DQogDQotCQlxLT5tYXhfbmV0bGVuID0gMDsNCi0JCXEtPm1heF9hZGps ZW4gPSAwOw0KLQkJcS0+bWluX25ldGxlbiA9IH4wOw0KLQkJcS0+bWluX2FkamxlbiA9IH4wOw0K KwkJcWQtPm1heF9uZXRsZW4gPSAwOw0KKwkJcWQtPm1heF9hZGpsZW4gPSAwOw0KKwkJcWQtPm1p bl9uZXRsZW4gPSB+MDsNCisJCXFkLT5taW5fYWRqbGVuID0gfjA7DQogCX0NCiANCiAJaWYgKHRi W1RDQV9DQUtFX01QVV0pDQpAQCAtMjcwNCw3ICsyNzExLDcgQEAgc3RhdGljIGludCBjYWtlX2No YW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LA0KIA0KIAlXUklURV9P TkNFKHEtPnJhdGVfZmxhZ3MsIHJhdGVfZmxhZ3MpOw0KIAlXUklURV9PTkNFKHEtPmZsb3dfbW9k ZSwgZmxvd19tb2RlKTsNCi0JaWYgKHEtPnRpbnMpIHsNCisJaWYgKHFkLT50aW5zKSB7DQogCQlz Y2hfdHJlZV9sb2NrKHNjaCk7DQogCQljYWtlX3JlY29uZmlndXJlKHNjaCk7DQogCQlzY2hfdHJl ZV91bmxvY2soc2NoKTsNCkBAIC0yNzIwLDE0ICsyNzI3LDIwIEBAIHN0YXRpYyB2b2lkIGNha2Vf ZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAJcWRpc2Nfd2F0Y2hkb2dfY2FuY2VsKCZxLT53 YXRjaGRvZyk7DQogCXRjZl9ibG9ja19wdXQocS0+YmxvY2spOw0KIAlrdmZyZWUocS0+dGlucyk7 DQorCWt2ZnJlZShxLT5jb25maWcpOw0KIH0NCiANCiBzdGF0aWMgaW50IGNha2VfaW5pdChzdHJ1 Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LA0KIAkJICAgICBzdHJ1Y3QgbmV0bGlu a19leHRfYWNrICpleHRhY2spDQogew0KLQlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxID0gcWRp c2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxZCA9IHFkaXNjX3ByaXYo c2NoKTsNCisJc3RydWN0IGNha2Vfc2NoZWRfY29uZmlnICpxOw0KIAlpbnQgaSwgaiwgZXJyOw0K IA0KKwlxID0ga3ZjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBjYWtlX3NjaGVkX2NvbmZpZyksIEdG UF9LRVJORUwpOw0KKwlpZiAoIXEpDQorCQlyZXR1cm4gLUVOT01FTTsNCisNCiAJc2NoLT5saW1p dCA9IDEwMjQwOw0KIAlxLT50aW5fbW9kZSA9IENBS0VfRElGRlNFUlZfRElGRlNFUlYzOw0KIAlx LT5mbG93X21vZGUgID0gQ0FLRV9GTE9XX1RSSVBMRTsNCkBAIC0yNzM5LDMzICsyNzUyLDM2IEBA IHN0YXRpYyBpbnQgY2FrZV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpv cHQsDQogCQkJICAgICAgICogZm9yIDUgdG8gMTAlIG9mIGludGVydmFsDQogCQkJICAgICAgICov DQogCXEtPnJhdGVfZmxhZ3MgfD0gQ0FLRV9GTEFHX1NQTElUX0dTTzsNCi0JcS0+Y3VyX3RpbiA9 IDA7DQotCXEtPmN1cl9mbG93ICA9IDA7DQorCXFkLT5jdXJfdGluID0gMDsNCisJcWQtPmN1cl9m bG93ICA9IDA7DQorCXFkLT5jb25maWcgPSBxOw0KIA0KLQlxZGlzY193YXRjaGRvZ19pbml0KCZx LT53YXRjaGRvZywgc2NoKTsNCisJcWRpc2Nfd2F0Y2hkb2dfaW5pdCgmcWQtPndhdGNoZG9nLCBz Y2gpOw0KIA0KIAlpZiAob3B0KSB7DQogCQllcnIgPSBjYWtlX2NoYW5nZShzY2gsIG9wdCwgZXh0 YWNrKTsNCiANCiAJCWlmIChlcnIpDQotCQkJcmV0dXJuIGVycjsNCisJCQlnb3RvIGVycjsNCiAJ fQ0KIA0KLQllcnIgPSB0Y2ZfYmxvY2tfZ2V0KCZxLT5ibG9jaywgJnEtPmZpbHRlcl9saXN0LCBz Y2gsIGV4dGFjayk7DQorCWVyciA9IHRjZl9ibG9ja19nZXQoJnFkLT5ibG9jaywgJnFkLT5maWx0 ZXJfbGlzdCwgc2NoLCBleHRhY2spOw0KIAlpZiAoZXJyKQ0KLQkJcmV0dXJuIGVycjsNCisJCWdv dG8gZXJyOw0KIA0KIAlxdWFudHVtX2RpdlswXSA9IH4wOw0KIAlmb3IgKGkgPSAxOyBpIDw9IENB S0VfUVVFVUVTOyBpKyspDQogCQlxdWFudHVtX2RpdltpXSA9IDY1NTM1IC8gaTsNCiANCi0JcS0+ dGlucyA9IGt2Y2FsbG9jKENBS0VfTUFYX1RJTlMsIHNpemVvZihzdHJ1Y3QgY2FrZV90aW5fZGF0 YSksDQotCQkJICAgR0ZQX0tFUk5FTCk7DQotCWlmICghcS0+dGlucykNCi0JCXJldHVybiAtRU5P TUVNOw0KKwlxZC0+dGlucyA9IGt2Y2FsbG9jKENBS0VfTUFYX1RJTlMsIHNpemVvZihzdHJ1Y3Qg Y2FrZV90aW5fZGF0YSksDQorCQkJICAgIEdGUF9LRVJORUwpOw0KKwlpZiAoIXFkLT50aW5zKSB7 DQorCQllcnIgPSAtRU5PTUVNOw0KKwkJZ290byBlcnI7DQorCX0NCiANCiAJZm9yIChpID0gMDsg aSA8IENBS0VfTUFYX1RJTlM7IGkrKykgew0KLQkJc3RydWN0IGNha2VfdGluX2RhdGEgKmIgPSBx LT50aW5zICsgaTsNCisJCXN0cnVjdCBjYWtlX3Rpbl9kYXRhICpiID0gcWQtPnRpbnMgKyBpOw0K IA0KIAkJSU5JVF9MSVNUX0hFQUQoJmItPm5ld19mbG93cyk7DQogCQlJTklUX0xJU1RfSEVBRCgm Yi0+b2xkX2Zsb3dzKTsNCkBAIC0yNzgxLDIyICsyNzk3LDI3IEBAIHN0YXRpYyBpbnQgY2FrZV9p bml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsDQogCQkJSU5JVF9MSVNU X0hFQUQoJmZsb3ctPmZsb3djaGFpbik7DQogCQkJY29iYWx0X3ZhcnNfaW5pdCgmZmxvdy0+Y3Zh cnMpOw0KIA0KLQkJCXEtPm92ZXJmbG93X2hlYXBba10udCA9IGk7DQotCQkJcS0+b3ZlcmZsb3df aGVhcFtrXS5iID0gajsNCisJCQlxZC0+b3ZlcmZsb3dfaGVhcFtrXS50ID0gaTsNCisJCQlxZC0+ b3ZlcmZsb3dfaGVhcFtrXS5iID0gajsNCiAJCQliLT5vdmVyZmxvd19pZHhbal0gPSBrOw0KIAkJ fQ0KIAl9DQogDQogCWNha2VfcmVjb25maWd1cmUoc2NoKTsNCi0JcS0+YXZnX3BlYWtfYmFuZHdp ZHRoID0gcS0+cmF0ZV9icHM7DQotCXEtPm1pbl9uZXRsZW4gPSB+MDsNCi0JcS0+bWluX2Fkamxl biA9IH4wOw0KKwlxZC0+YXZnX3BlYWtfYmFuZHdpZHRoID0gcS0+cmF0ZV9icHM7DQorCXFkLT5t aW5fbmV0bGVuID0gfjA7DQorCXFkLT5taW5fYWRqbGVuID0gfjA7DQogCXJldHVybiAwOw0KK2Vy cjoNCisJa3ZmcmVlKHFkLT5jb25maWcpOw0KKwlxZC0+Y29uZmlnID0gTlVMTDsNCisJcmV0dXJu IGVycjsNCiB9DQogDQogc3RhdGljIGludCBjYWtlX2R1bXAoc3RydWN0IFFkaXNjICpzY2gsIHN0 cnVjdCBza19idWZmICpza2IpDQogew0KLQlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxID0gcWRp c2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxZCA9IHFkaXNjX3ByaXYo c2NoKTsNCisJc3RydWN0IGNha2Vfc2NoZWRfY29uZmlnICpxID0gcWQtPmNvbmZpZzsNCiAJc3Ry dWN0IG5sYXR0ciAqb3B0czsNCiAJdTE2IHJhdGVfZmxhZ3M7DQogCXU4IGZsb3dfbW9kZTsNCg0K LS0gDQoyLjUxLjINCg0K