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 D7AFBB57AEF for ; Mon, 05 Jan 2026 13:51:39 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767617498; 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=bR20rNHd1+rPJ3PTqeHqQf61dw6X+fztj5hRmdhs158=; b=KA6iJgqRzmKIcPx2mLVwgg69VdAC6228PucYo8IrA5BHWC8Rg1yFSKoQLG1ZkqvWI2lY+q z68yBDhCktyYSAx9hlexviNb83JblITpP9vmMYAQOYnMZeuV+j9efnwka9nQzBRLgBBlXW b3HMUpI4pYru4MmwMbGFA53NRNq0nUQ= Received: from mail-ej1-f72.google.com (mail-ej1-f72.google.com [209.85.218.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-492-dY2EpmHDPju5ccU3PaoV4g-1; Mon, 05 Jan 2026 07:51:37 -0500 X-MC-Unique: dY2EpmHDPju5ccU3PaoV4g-1 X-Mimecast-MFC-AGG-ID: dY2EpmHDPju5ccU3PaoV4g_1767617496 Received: by mail-ej1-f72.google.com with SMTP id a640c23a62f3a-b79fcc35ab2so1225209666b.2 for ; Mon, 05 Jan 2026 04:51:36 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767617496; x=1768222296; 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=bR20rNHd1+rPJ3PTqeHqQf61dw6X+fztj5hRmdhs158=; b=NRkHX49qoVk/I+eLsL/YnBZPLVg2fjKipNiv+Cqt0PxRIm0IRQSzYcu6LvuHvHYQ7O mpsGzvRF4ar07f3C/fXw1TE0Fyrnfx7mZp8CgyuuBtKb3ZpTBPMXkLMy8D6/f7TuEpcb 7/8KGvtAuMr7fetJ9Lx4BXR7ZB3ew9/uZE44T5+8K8shNC1V3Fv2jmS2HZaKo2709rp8 h7fVNWTupn7Awi1Y9ZtteCd3a7gaF4O/yxYC+WsT/MWvND13oM04V89AuwM5xE//cfJt 9pi2NVgoEmK61Mrn2eeHWue9EYnrXD3v3w3LyB9T3/2oAH+3MCt8Dq39BIO6qJTwH0xS ldkw== X-Forwarded-Encrypted: i=1; AJvYcCUoGHZpVK3uUDoTaEF/2vXFblw/vJH++ZiizPNfU3eUYzcmidNVGTY/JL+lgwwIKApk+3qj@lists.bufferbloat.net X-Gm-Message-State: AOJu0YzMEWkQZmXNc8LRBsYLCWGqN8qNbc7qvuSsTbG6IjWZF1CSU1mu 8abcDz4iiF0WOBsvT/qRU+NeRmn0WDt03TVa1EfeuHvKBbcGOiLWJqdExohGNLZ3S6qVUBz+pqC UZCrdp9WFvsq1a1RCJDU1kDlMDB/8LRLf3k+yYm0Z3lNTNKwceaUDZRDPnpH8pBc= X-Gm-Gg: AY/fxX4aTI9VJQcCslFlf3sIi164KB6q8YZNlIXebWYvi2ytV1GA6JTZKd+TJwCm5qP 5ptH0xtcGQwzj44KQ/JTlYeybi/tKugRHsUYHhFbmcwT4q+juX/9Yt+pfXWOViBBwuAP+UxzDfz FztcuYWSCiYMP5GSjpQQdRLIA4CrU4fF6nWdrks2kQipuXmnbOry4/K4L7ejYMZMRmrogVfTPgF 72SLqknCbIiGoKgrKEIoidtoqakpagwl5v0ni0XtOcpfczurj2hxNPz4CktW1RTDOhMAFeuoFGw CJVAsoyTNlQzVua/jomBGiQCum8olX0wq47arSP5Z9Rf4qRZTJjdSx2wWta7PVjpUzSXuaVaqLS f2Yqp9fv2P+ARIz0Ykn/9vQ/mUVzRKfEbmQ== X-Received: by 2002:a17:907:1c1d:b0:b7c:f77c:42e7 with SMTP id a640c23a62f3a-b80371d37b9mr5615741166b.43.1767617495517; Mon, 05 Jan 2026 04:51:35 -0800 (PST) X-Google-Smtp-Source: AGHT+IEobXFoLRFf56PZ4vxvj3tbQmY6QL/kDLZmFtw9I5/m9pq8hvXQk3EVpwzOQKIq8AMuHJgGPA== X-Received: by 2002:a17:907:1c1d:b0:b7c:f77c:42e7 with SMTP id a640c23a62f3a-b80371d37b9mr5615738366b.43.1767617494976; Mon, 05 Jan 2026 04:51:34 -0800 (PST) Received: from alrua-x1.borgediget.toke.dk ([45.145.92.2]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b80464e01d9sm5472619066b.42.2026.01.05.04.51.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 04:51:33 -0800 (PST) Received: by alrua-x1.borgediget.toke.dk (Postfix, from userid 1000) id 4A21B407E91; Mon, 05 Jan 2026 13:51:32 +0100 (CET) From: =?utf-8?q?Toke_H=C3=B8iland-J=C3=B8rgensen?= Date: Mon, 05 Jan 2026 13:50:27 +0100 MIME-Version: 1.0 Message-Id: <20260105-mq-cake-sub-qdisc-v5-2-8a99b9db05e6@redhat.com> References: <20260105-mq-cake-sub-qdisc-v5-0-8a99b9db05e6@redhat.com> In-Reply-To: <20260105-mq-cake-sub-qdisc-v5-0-8a99b9db05e6@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: vCaYOCnXvWQkIIfyTGPQrXYneczCR2UhjRkyGGI87nc_1767617496 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-ID-Hash: 5GILIJLJYL3A7OZE2AWAY336TM3XZYYJ X-Message-ID-Hash: 5GILIJLJYL3A7OZE2AWAY336TM3XZYYJ 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 v5 2/6] 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 c2NoZWQvc2NoX2Nha2UuYw0KaW5kZXggNGE2NGQ2Mzk3YjZmLi5kNDU4MjU3ZDhhZmMgMTAwNjQ0 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 Ow0KIH0NCkBAIC0xNTg2LDcgKzE1OTAsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGNha2VfZHJv cChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKQ0KIAlmbG93LT5k cm9wcGVkKys7DQogCWItPnRpbl9kcm9wcGVkKys7DQogDQotCWlmIChxLT5yYXRlX2ZsYWdzICYg Q0FLRV9GTEFHX0lOR1JFU1MpDQorCWlmIChxLT5jb25maWctPnJhdGVfZmxhZ3MgJiBDQUtFX0ZM QUdfSU5HUkVTUykNCiAJCWNha2VfYWR2YW5jZV9zaGFwZXIocSwgYiwgc2tiLCBub3csIHRydWUp Ow0KIA0KIAlxZGlzY19kcm9wX3JlYXNvbihza2IsIHNjaCwgdG9fZnJlZSwgU0tCX0RST1BfUkVB U09OX1FESVNDX09WRVJMSU1JVCk7DQpAQCAtMTY1Niw3ICsxNjYwLDggQEAgc3RhdGljIHU4IGNh a2VfaGFuZGxlX2RpZmZzZXJ2KHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgd2FzaCkNCiBzdGF0 aWMgc3RydWN0IGNha2VfdGluX2RhdGEgKmNha2Vfc2VsZWN0X3RpbihzdHJ1Y3QgUWRpc2MgKnNj aCwNCiAJCQkJCSAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYikNCiB7DQotCXN0cnVjdCBjYWtlX3Nj aGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7DQorCXN0cnVjdCBjYWtlX3NjaGVkX2RhdGEg KnFkID0gcWRpc2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9jb25maWcgKnEgPSBx ZC0+Y29uZmlnOw0KIAl1MzIgdGluLCBtYXJrOw0KIAlib29sIHdhc2g7DQogCXU4IGRzY3A7DQpA QCAtMTY3MywyNCArMTY3OCwyNCBAQCBzdGF0aWMgc3RydWN0IGNha2VfdGluX2RhdGEgKmNha2Vf c2VsZWN0X3RpbihzdHJ1Y3QgUWRpc2MgKnNjaCwNCiAJaWYgKHEtPnRpbl9tb2RlID09IENBS0Vf RElGRlNFUlZfQkVTVEVGRk9SVCkNCiAJCXRpbiA9IDA7DQogDQotCWVsc2UgaWYgKG1hcmsgJiYg bWFyayA8PSBxLT50aW5fY250KQ0KLQkJdGluID0gcS0+dGluX29yZGVyW21hcmsgLSAxXTsNCisJ ZWxzZSBpZiAobWFyayAmJiBtYXJrIDw9IHFkLT50aW5fY250KQ0KKwkJdGluID0gcWQtPnRpbl9v cmRlclttYXJrIC0gMV07DQogDQogCWVsc2UgaWYgKFRDX0hfTUFKKHNrYi0+cHJpb3JpdHkpID09 IHNjaC0+aGFuZGxlICYmDQogCQkgVENfSF9NSU4oc2tiLT5wcmlvcml0eSkgPiAwICYmDQotCQkg VENfSF9NSU4oc2tiLT5wcmlvcml0eSkgPD0gcS0+dGluX2NudCkNCi0JCXRpbiA9IHEtPnRpbl9v cmRlcltUQ19IX01JTihza2ItPnByaW9yaXR5KSAtIDFdOw0KKwkJIFRDX0hfTUlOKHNrYi0+cHJp b3JpdHkpIDw9IHFkLT50aW5fY250KQ0KKwkJdGluID0gcWQtPnRpbl9vcmRlcltUQ19IX01JTihz a2ItPnByaW9yaXR5KSAtIDFdOw0KIA0KIAllbHNlIHsNCiAJCWlmICghd2FzaCkNCiAJCQlkc2Nw ID0gY2FrZV9oYW5kbGVfZGlmZnNlcnYoc2tiLCB3YXNoKTsNCi0JCXRpbiA9IHEtPnRpbl9pbmRl eFtkc2NwXTsNCisJCXRpbiA9IHFkLT50aW5faW5kZXhbZHNjcF07DQogDQotCQlpZiAodW5saWtl bHkodGluID49IHEtPnRpbl9jbnQpKQ0KKwkJaWYgKHVubGlrZWx5KHRpbiA+PSBxZC0+dGluX2Nu dCkpDQogCQkJdGluID0gMDsNCiAJfQ0KIA0KLQlyZXR1cm4gJnEtPnRpbnNbdGluXTsNCisJcmV0 dXJuICZxZC0+dGluc1t0aW5dOw0KIH0NCiANCiBzdGF0aWMgdTMyIGNha2VfY2xhc3NpZnkoc3Ry dWN0IFFkaXNjICpzY2gsIHN0cnVjdCBjYWtlX3Rpbl9kYXRhICoqdCwNCkBAIC0xNzQ2LDcgKzE3 NTEsNyBAQCBzdGF0aWMgczMyIGNha2VfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1 Y3QgUWRpc2MgKnNjaCwNCiAJYm9vbCBzYW1lX2Zsb3cgPSBmYWxzZTsNCiANCiAJLyogY2hvb3Nl IGZsb3cgdG8gaW5zZXJ0IGludG8gKi8NCi0JaWR4ID0gY2FrZV9jbGFzc2lmeShzY2gsICZiLCBz a2IsIHEtPmZsb3dfbW9kZSwgJnJldCk7DQorCWlkeCA9IGNha2VfY2xhc3NpZnkoc2NoLCAmYiwg c2tiLCBxLT5jb25maWctPmZsb3dfbW9kZSwgJnJldCk7DQogCWlmIChpZHggPT0gMCkgew0KIAkJ aWYgKHJldCAmIF9fTkVUX1hNSVRfQllQQVNTKQ0KIAkJCXFkaXNjX3FzdGF0c19kcm9wKHNjaCk7 DQpAQCAtMTc4MSw3ICsxNzg2LDcgQEAgc3RhdGljIHMzMiBjYWtlX2VucXVldWUoc3RydWN0IHNr X2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsDQogCWlmICh1bmxpa2VseShsZW4gPiBiLT5t YXhfc2tibGVuKSkNCiAJCWItPm1heF9za2JsZW4gPSBsZW47DQogDQotCWlmIChxZGlzY19wa3Rf c2Vncyhza2IpID4gMSAmJiBxLT5yYXRlX2ZsYWdzICYgQ0FLRV9GTEFHX1NQTElUX0dTTykgew0K KwlpZiAocWRpc2NfcGt0X3NlZ3Moc2tiKSA+IDEgJiYgcS0+Y29uZmlnLT5yYXRlX2ZsYWdzICYg Q0FLRV9GTEFHX1NQTElUX0dTTykgew0KIAkJc3RydWN0IHNrX2J1ZmYgKnNlZ3MsICpuc2tiOw0K IAkJbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMgPSBuZXRpZl9za2JfZmVhdHVyZXMoc2tiKTsN CiAJCXVuc2lnbmVkIGludCBzbGVuID0gMCwgbnVtc2VncyA9IDA7DQpAQCAtMTgyMyw3ICsxODI4 LDcgQEAgc3RhdGljIHMzMiBjYWtlX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0 IFFkaXNjICpzY2gsDQogCQlnZXRfY29iYWx0X2NiKHNrYiktPmFkanVzdGVkX2xlbiA9IGNha2Vf b3ZlcmhlYWQocSwgc2tiKTsNCiAJCWZsb3dfcXVldWVfYWRkKGZsb3csIHNrYik7DQogDQotCQlp ZiAocS0+YWNrX2ZpbHRlcikNCisJCWlmIChxLT5jb25maWctPmFja19maWx0ZXIpDQogCQkJYWNr ID0gY2FrZV9hY2tfZmlsdGVyKHEsIGZsb3cpOw0KIA0KIAkJaWYgKGFjaykgew0KQEAgLTE4MzIs NyArMTgzNyw3IEBAIHN0YXRpYyBzMzIgY2FrZV9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2Is IHN0cnVjdCBRZGlzYyAqc2NoLA0KIAkJCWFja19wa3RfbGVuID0gcWRpc2NfcGt0X2xlbihhY2sp Ow0KIAkJCWItPmJ5dGVzICs9IGFja19wa3RfbGVuOw0KIAkJCXEtPmJ1ZmZlcl91c2VkICs9IHNr Yi0+dHJ1ZXNpemUgLSBhY2stPnRydWVzaXplOw0KLQkJCWlmIChxLT5yYXRlX2ZsYWdzICYgQ0FL RV9GTEFHX0lOR1JFU1MpDQorCQkJaWYgKHEtPmNvbmZpZy0+cmF0ZV9mbGFncyAmIENBS0VfRkxB R19JTkdSRVNTKQ0KIAkJCQljYWtlX2FkdmFuY2Vfc2hhcGVyKHEsIGIsIGFjaywgbm93LCB0cnVl KTsNCiANCiAJCQlxZGlzY190cmVlX3JlZHVjZV9iYWNrbG9nKHNjaCwgMSwgYWNrX3BrdF9sZW4p Ow0KQEAgLTE4NTUsNyArMTg2MCw3IEBAIHN0YXRpYyBzMzIgY2FrZV9lbnF1ZXVlKHN0cnVjdCBz a19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLA0KIAkJY2FrZV9oZWFwaWZ5X3VwKHEsIGIt Pm92ZXJmbG93X2lkeFtpZHhdKTsNCiANCiAJLyogaW5jb21pbmcgYmFuZHdpZHRoIGNhcGFjaXR5 IGVzdGltYXRlICovDQotCWlmIChxLT5yYXRlX2ZsYWdzICYgQ0FLRV9GTEFHX0FVVE9SQVRFX0lO R1JFU1MpIHsNCisJaWYgKHEtPmNvbmZpZy0+cmF0ZV9mbGFncyAmIENBS0VfRkxBR19BVVRPUkFU RV9JTkdSRVNTKSB7DQogCQl1NjQgcGFja2V0X2ludGVydmFsID0gXA0KIAkJCWt0aW1lX3RvX25z KGt0aW1lX3N1Yihub3csIHEtPmxhc3RfcGFja2V0X3RpbWUpKTsNCiANCkBAIC0xODg3LDcgKzE4 OTIsNyBAQCBzdGF0aWMgczMyIGNha2VfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1 Y3QgUWRpc2MgKnNjaCwNCiAJCQlpZiAoa3RpbWVfYWZ0ZXIobm93LA0KIAkJCQkJa3RpbWVfYWRk X21zKHEtPmxhc3RfcmVjb25maWdfdGltZSwNCiAJCQkJCQkgICAgIDI1MCkpKSB7DQotCQkJCXEt PnJhdGVfYnBzID0gKHEtPmF2Z19wZWFrX2JhbmR3aWR0aCAqIDE1KSA+PiA0Ow0KKwkJCQlxLT5j b25maWctPnJhdGVfYnBzID0gKHEtPmF2Z19wZWFrX2JhbmR3aWR0aCAqIDE1KSA+PiA0Ow0KIAkJ CQljYWtlX3JlY29uZmlndXJlKHNjaCk7DQogCQkJfQ0KIAkJfQ0KQEAgLTE5MDcsNyArMTkxMiw3 IEBAIHN0YXRpYyBzMzIgY2FrZV9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBR ZGlzYyAqc2NoLA0KIAkJZmxvdy0+c2V0ID0gQ0FLRV9TRVRfU1BBUlNFOw0KIAkJYi0+c3BhcnNl X2Zsb3dfY291bnQrKzsNCiANCi0JCWZsb3ctPmRlZmljaXQgPSBjYWtlX2dldF9mbG93X3F1YW50 dW0oYiwgZmxvdywgcS0+Zmxvd19tb2RlKTsNCisJCWZsb3ctPmRlZmljaXQgPSBjYWtlX2dldF9m bG93X3F1YW50dW0oYiwgZmxvdywgcS0+Y29uZmlnLT5mbG93X21vZGUpOw0KIAl9IGVsc2UgaWYg KGZsb3ctPnNldCA9PSBDQUtFX1NFVF9TUEFSU0VfV0FJVCkgew0KIAkJLyogdGhpcyBmbG93IHdh cyBlbXB0eSwgYWNjb3VudGVkIGFzIGEgc3BhcnNlIGZsb3csIGJ1dCBhY3R1YWxseQ0KIAkJICog aW4gdGhlIGJ1bGsgcm90YXRpb24uDQpAQCAtMTkxNiw4ICsxOTIxLDggQEAgc3RhdGljIHMzMiBj YWtlX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsDQogCQli LT5zcGFyc2VfZmxvd19jb3VudC0tOw0KIAkJYi0+YnVsa19mbG93X2NvdW50Kys7DQogDQotCQlj YWtlX2luY19zcmNob3N0X2J1bGtfZmxvd19jb3VudChiLCBmbG93LCBxLT5mbG93X21vZGUpOw0K LQkJY2FrZV9pbmNfZHN0aG9zdF9idWxrX2Zsb3dfY291bnQoYiwgZmxvdywgcS0+Zmxvd19tb2Rl KTsNCisJCWNha2VfaW5jX3NyY2hvc3RfYnVsa19mbG93X2NvdW50KGIsIGZsb3csIHEtPmNvbmZp Zy0+Zmxvd19tb2RlKTsNCisJCWNha2VfaW5jX2RzdGhvc3RfYnVsa19mbG93X2NvdW50KGIsIGZs b3csIHEtPmNvbmZpZy0+Zmxvd19tb2RlKTsNCiAJfQ0KIA0KIAlpZiAocS0+YnVmZmVyX3VzZWQg PiBxLT5idWZmZXJfbWF4X3VzZWQpDQpAQCAtMjEwNCw4ICsyMTA5LDggQEAgc3RhdGljIHN0cnVj dCBza19idWZmICpjYWtlX2RlcXVldWUoc3RydWN0IFFkaXNjICpzY2gpDQogCQkJCWItPnNwYXJz ZV9mbG93X2NvdW50LS07DQogCQkJCWItPmJ1bGtfZmxvd19jb3VudCsrOw0KIA0KLQkJCQljYWtl X2luY19zcmNob3N0X2J1bGtfZmxvd19jb3VudChiLCBmbG93LCBxLT5mbG93X21vZGUpOw0KLQkJ CQljYWtlX2luY19kc3Rob3N0X2J1bGtfZmxvd19jb3VudChiLCBmbG93LCBxLT5mbG93X21vZGUp Ow0KKwkJCQljYWtlX2luY19zcmNob3N0X2J1bGtfZmxvd19jb3VudChiLCBmbG93LCBxLT5jb25m aWctPmZsb3dfbW9kZSk7DQorCQkJCWNha2VfaW5jX2RzdGhvc3RfYnVsa19mbG93X2NvdW50KGIs IGZsb3csIHEtPmNvbmZpZy0+Zmxvd19tb2RlKTsNCiANCiAJCQkJZmxvdy0+c2V0ID0gQ0FLRV9T RVRfQlVMSzsNCiAJCQl9IGVsc2Ugew0KQEAgLTIxMTcsNyArMjEyMiw3IEBAIHN0YXRpYyBzdHJ1 Y3Qgc2tfYnVmZiAqY2FrZV9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKQ0KIAkJCX0NCiAJCX0N CiANCi0JCWZsb3ctPmRlZmljaXQgKz0gY2FrZV9nZXRfZmxvd19xdWFudHVtKGIsIGZsb3csIHEt PmZsb3dfbW9kZSk7DQorCQlmbG93LT5kZWZpY2l0ICs9IGNha2VfZ2V0X2Zsb3dfcXVhbnR1bShi LCBmbG93LCBxLT5jb25maWctPmZsb3dfbW9kZSk7DQogCQlsaXN0X21vdmVfdGFpbCgmZmxvdy0+ Zmxvd2NoYWluLCAmYi0+b2xkX2Zsb3dzKTsNCiANCiAJCWdvdG8gcmV0cnk7DQpAQCAtMjE0MSw4 ICsyMTQ2LDggQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpjYWtlX2RlcXVldWUoc3RydWN0IFFk aXNjICpzY2gpDQogCQkJCWlmIChmbG93LT5zZXQgPT0gQ0FLRV9TRVRfQlVMSykgew0KIAkJCQkJ Yi0+YnVsa19mbG93X2NvdW50LS07DQogDQotCQkJCQljYWtlX2RlY19zcmNob3N0X2J1bGtfZmxv d19jb3VudChiLCBmbG93LCBxLT5mbG93X21vZGUpOw0KLQkJCQkJY2FrZV9kZWNfZHN0aG9zdF9i dWxrX2Zsb3dfY291bnQoYiwgZmxvdywgcS0+Zmxvd19tb2RlKTsNCisJCQkJCWNha2VfZGVjX3Ny Y2hvc3RfYnVsa19mbG93X2NvdW50KGIsIGZsb3csIHEtPmNvbmZpZy0+Zmxvd19tb2RlKTsNCisJ CQkJCWNha2VfZGVjX2RzdGhvc3RfYnVsa19mbG93X2NvdW50KGIsIGZsb3csIHEtPmNvbmZpZy0+ Zmxvd19tb2RlKTsNCiANCiAJCQkJCWItPmRlY2F5aW5nX2Zsb3dfY291bnQrKzsNCiAJCQkJfSBl bHNlIGlmIChmbG93LT5zZXQgPT0gQ0FLRV9TRVRfU1BBUlNFIHx8DQpAQCAtMjE2MCw4ICsyMTY1 LDggQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpjYWtlX2RlcXVldWUoc3RydWN0IFFkaXNjICpz Y2gpDQogCQkJCWVsc2UgaWYgKGZsb3ctPnNldCA9PSBDQUtFX1NFVF9CVUxLKSB7DQogCQkJCQli LT5idWxrX2Zsb3dfY291bnQtLTsNCiANCi0JCQkJCWNha2VfZGVjX3NyY2hvc3RfYnVsa19mbG93 X2NvdW50KGIsIGZsb3csIHEtPmZsb3dfbW9kZSk7DQotCQkJCQljYWtlX2RlY19kc3Rob3N0X2J1 bGtfZmxvd19jb3VudChiLCBmbG93LCBxLT5mbG93X21vZGUpOw0KKwkJCQkJY2FrZV9kZWNfc3Jj aG9zdF9idWxrX2Zsb3dfY291bnQoYiwgZmxvdywgcS0+Y29uZmlnLT5mbG93X21vZGUpOw0KKwkJ CQkJY2FrZV9kZWNfZHN0aG9zdF9idWxrX2Zsb3dfY291bnQoYiwgZmxvdywgcS0+Y29uZmlnLT5m bG93X21vZGUpOw0KIAkJCQl9IGVsc2UNCiAJCQkJCWItPmRlY2F5aW5nX2Zsb3dfY291bnQtLTsN CiANCkBAIC0yMTcyLDE0ICsyMTc3LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY2FrZV9k ZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKQ0KIA0KIAkJcmVhc29uID0gY29iYWx0X3Nob3VsZF9k cm9wKCZmbG93LT5jdmFycywgJmItPmNwYXJhbXMsIG5vdywgc2tiLA0KIAkJCQkJICAgIChiLT5i dWxrX2Zsb3dfY291bnQgKg0KLQkJCQkJICAgICAhIShxLT5yYXRlX2ZsYWdzICYNCisJCQkJCSAg ICAgISEocS0+Y29uZmlnLT5yYXRlX2ZsYWdzICYNCiAJCQkJCQlDQUtFX0ZMQUdfSU5HUkVTUykp KTsNCiAJCS8qIExhc3QgcGFja2V0IGluIHF1ZXVlIG1heSBiZSBtYXJrZWQsIHNob3VsZG4ndCBi ZSBkcm9wcGVkICovDQogCQlpZiAocmVhc29uID09IFNLQl9OT1RfRFJPUFBFRF9ZRVQgfHwgIWZs b3ctPmhlYWQpDQogCQkJYnJlYWs7DQogDQogCQkvKiBkcm9wIHRoaXMgcGFja2V0LCBnZXQgYW5v dGhlciBvbmUgKi8NCi0JCWlmIChxLT5yYXRlX2ZsYWdzICYgQ0FLRV9GTEFHX0lOR1JFU1MpIHsN CisJCWlmIChxLT5jb25maWctPnJhdGVfZmxhZ3MgJiBDQUtFX0ZMQUdfSU5HUkVTUykgew0KIAkJ CWxlbiA9IGNha2VfYWR2YW5jZV9zaGFwZXIocSwgYiwgc2tiLA0KIAkJCQkJCSAgbm93LCB0cnVl KTsNCiAJCQlmbG93LT5kZWZpY2l0IC09IGxlbjsNCkBAIC0yMTkwLDcgKzIxOTUsNyBAQCBzdGF0 aWMgc3RydWN0IHNrX2J1ZmYgKmNha2VfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAJCXFk aXNjX3RyZWVfcmVkdWNlX2JhY2tsb2coc2NoLCAxLCBxZGlzY19wa3RfbGVuKHNrYikpOw0KIAkJ cWRpc2NfcXN0YXRzX2Ryb3Aoc2NoKTsNCiAJCXFkaXNjX2RlcXVldWVfZHJvcChzY2gsIHNrYiwg cmVhc29uKTsNCi0JCWlmIChxLT5yYXRlX2ZsYWdzICYgQ0FLRV9GTEFHX0lOR1JFU1MpDQorCQlp ZiAocS0+Y29uZmlnLT5yYXRlX2ZsYWdzICYgQ0FLRV9GTEFHX0lOR1JFU1MpDQogCQkJZ290byBy ZXRyeTsNCiAJfQ0KIA0KQEAgLTIzMTIsNyArMjMxNyw3IEBAIHN0YXRpYyBpbnQgY2FrZV9jb25m aWdfYmVzdGVmZm9ydChzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAJc3RydWN0IGNha2Vfc2NoZWRfZGF0 YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTsNCiAJc3RydWN0IGNha2VfdGluX2RhdGEgKmIgPSAmcS0+ dGluc1swXTsNCiAJdTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpOw0KLQl1NjQg cmF0ZSA9IHEtPnJhdGVfYnBzOw0KKwl1NjQgcmF0ZSA9IHEtPmNvbmZpZy0+cmF0ZV9icHM7DQog DQogCXEtPnRpbl9jbnQgPSAxOw0KIA0KQEAgLTIzMjAsNyArMjMyNSw3IEBAIHN0YXRpYyBpbnQg Y2FrZV9jb25maWdfYmVzdGVmZm9ydChzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAJcS0+dGluX29yZGVy ID0gbm9ybWFsX29yZGVyOw0KIA0KIAljYWtlX3NldF9yYXRlKGIsIHJhdGUsIG10dSwNCi0JCSAg ICAgIHVzX3RvX25zKHEtPnRhcmdldCksIHVzX3RvX25zKHEtPmludGVydmFsKSk7DQorCQkgICAg ICB1c190b19ucyhxLT5jb25maWctPnRhcmdldCksIHVzX3RvX25zKHEtPmNvbmZpZy0+aW50ZXJ2 YWwpKTsNCiAJYi0+dGluX3F1YW50dW0gPSA2NTUzNTsNCiANCiAJcmV0dXJuIDA7DQpAQCAtMjMz MSw3ICsyMzM2LDcgQEAgc3RhdGljIGludCBjYWtlX2NvbmZpZ19wcmVjZWRlbmNlKHN0cnVjdCBR ZGlzYyAqc2NoKQ0KIAkvKiBjb252ZXJ0IGhpZ2gtbGV2ZWwgKHVzZXIgdmlzaWJsZSkgcGFyYW1l dGVycyBpbnRvIGludGVybmFsIGZvcm1hdCAqLw0KIAlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpx ID0gcWRpc2NfcHJpdihzY2gpOw0KIAl1MzIgbXR1ID0gcHNjaGVkX210dShxZGlzY19kZXYoc2No KSk7DQotCXU2NCByYXRlID0gcS0+cmF0ZV9icHM7DQorCXU2NCByYXRlID0gcS0+Y29uZmlnLT5y YXRlX2JwczsNCiAJdTMyIHF1YW50dW0gPSAyNTY7DQogCXUzMiBpOw0KIA0KQEAgLTIzNDIsOCAr MjM0Nyw4IEBAIHN0YXRpYyBpbnQgY2FrZV9jb25maWdfcHJlY2VkZW5jZShzdHJ1Y3QgUWRpc2Mg KnNjaCkNCiAJZm9yIChpID0gMDsgaSA8IHEtPnRpbl9jbnQ7IGkrKykgew0KIAkJc3RydWN0IGNh a2VfdGluX2RhdGEgKmIgPSAmcS0+dGluc1tpXTsNCiANCi0JCWNha2Vfc2V0X3JhdGUoYiwgcmF0 ZSwgbXR1LCB1c190b19ucyhxLT50YXJnZXQpLA0KLQkJCSAgICAgIHVzX3RvX25zKHEtPmludGVy dmFsKSk7DQorCQljYWtlX3NldF9yYXRlKGIsIHJhdGUsIG10dSwgdXNfdG9fbnMocS0+Y29uZmln LT50YXJnZXQpLA0KKwkJCSAgICAgIHVzX3RvX25zKHEtPmNvbmZpZy0+aW50ZXJ2YWwpKTsNCiAN CiAJCWItPnRpbl9xdWFudHVtID0gbWF4X3QodTE2LCAxVSwgcXVhbnR1bSk7DQogDQpAQCAtMjQy MCw3ICsyNDI1LDcgQEAgc3RhdGljIGludCBjYWtlX2NvbmZpZ19kaWZmc2Vydjgoc3RydWN0IFFk aXNjICpzY2gpDQogDQogCXN0cnVjdCBjYWtlX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNj aCk7DQogCXUzMiBtdHUgPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTsNCi0JdTY0IHJhdGUg PSBxLT5yYXRlX2JwczsNCisJdTY0IHJhdGUgPSBxLT5jb25maWctPnJhdGVfYnBzOw0KIAl1MzIg cXVhbnR1bSA9IDI1NjsNCiAJdTMyIGk7DQogDQpAQCAtMjQzNCw4ICsyNDM5LDggQEAgc3RhdGlj IGludCBjYWtlX2NvbmZpZ19kaWZmc2Vydjgoc3RydWN0IFFkaXNjICpzY2gpDQogCWZvciAoaSA9 IDA7IGkgPCBxLT50aW5fY250OyBpKyspIHsNCiAJCXN0cnVjdCBjYWtlX3Rpbl9kYXRhICpiID0g JnEtPnRpbnNbaV07DQogDQotCQljYWtlX3NldF9yYXRlKGIsIHJhdGUsIG10dSwgdXNfdG9fbnMo cS0+dGFyZ2V0KSwNCi0JCQkgICAgICB1c190b19ucyhxLT5pbnRlcnZhbCkpOw0KKwkJY2FrZV9z ZXRfcmF0ZShiLCByYXRlLCBtdHUsIHVzX3RvX25zKHEtPmNvbmZpZy0+dGFyZ2V0KSwNCisJCQkg ICAgICB1c190b19ucyhxLT5jb25maWctPmludGVydmFsKSk7DQogDQogCQliLT50aW5fcXVhbnR1 bSA9IG1heF90KHUxNiwgMVUsIHF1YW50dW0pOw0KIA0KQEAgLTI0NjQsNyArMjQ2OSw3IEBAIHN0 YXRpYyBpbnQgY2FrZV9jb25maWdfZGlmZnNlcnY0KHN0cnVjdCBRZGlzYyAqc2NoKQ0KIA0KIAlz dHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpOw0KIAl1MzIgbXR1ID0g cHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7DQotCXU2NCByYXRlID0gcS0+cmF0ZV9icHM7DQor CXU2NCByYXRlID0gcS0+Y29uZmlnLT5yYXRlX2JwczsNCiAJdTMyIHF1YW50dW0gPSAxMDI0Ow0K IA0KIAlxLT50aW5fY250ID0gNDsNCkBAIC0yNDc1LDEzICsyNDgwLDEzIEBAIHN0YXRpYyBpbnQg Y2FrZV9jb25maWdfZGlmZnNlcnY0KHN0cnVjdCBRZGlzYyAqc2NoKQ0KIA0KIAkvKiBjbGFzcyBj aGFyYWN0ZXJpc3RpY3MgKi8NCiAJY2FrZV9zZXRfcmF0ZSgmcS0+dGluc1swXSwgcmF0ZSwgbXR1 LA0KLQkJICAgICAgdXNfdG9fbnMocS0+dGFyZ2V0KSwgdXNfdG9fbnMocS0+aW50ZXJ2YWwpKTsN CisJCSAgICAgIHVzX3RvX25zKHEtPmNvbmZpZy0+dGFyZ2V0KSwgdXNfdG9fbnMocS0+Y29uZmln LT5pbnRlcnZhbCkpOw0KIAljYWtlX3NldF9yYXRlKCZxLT50aW5zWzFdLCByYXRlID4+IDQsIG10 dSwNCi0JCSAgICAgIHVzX3RvX25zKHEtPnRhcmdldCksIHVzX3RvX25zKHEtPmludGVydmFsKSk7 DQorCQkgICAgICB1c190b19ucyhxLT5jb25maWctPnRhcmdldCksIHVzX3RvX25zKHEtPmNvbmZp Zy0+aW50ZXJ2YWwpKTsNCiAJY2FrZV9zZXRfcmF0ZSgmcS0+dGluc1syXSwgcmF0ZSA+PiAxLCBt dHUsDQotCQkgICAgICB1c190b19ucyhxLT50YXJnZXQpLCB1c190b19ucyhxLT5pbnRlcnZhbCkp Ow0KKwkJICAgICAgdXNfdG9fbnMocS0+Y29uZmlnLT50YXJnZXQpLCB1c190b19ucyhxLT5jb25m aWctPmludGVydmFsKSk7DQogCWNha2Vfc2V0X3JhdGUoJnEtPnRpbnNbM10sIHJhdGUgPj4gMiwg bXR1LA0KLQkJICAgICAgdXNfdG9fbnMocS0+dGFyZ2V0KSwgdXNfdG9fbnMocS0+aW50ZXJ2YWwp KTsNCisJCSAgICAgIHVzX3RvX25zKHEtPmNvbmZpZy0+dGFyZ2V0KSwgdXNfdG9fbnMocS0+Y29u ZmlnLT5pbnRlcnZhbCkpOw0KIA0KIAkvKiBiYW5kd2lkdGgtc2hhcmluZyB3ZWlnaHRzICovDQog CXEtPnRpbnNbMF0udGluX3F1YW50dW0gPSBxdWFudHVtOw0KQEAgLTI1MDEsNyArMjUwNiw3IEBA IHN0YXRpYyBpbnQgY2FrZV9jb25maWdfZGlmZnNlcnYzKHN0cnVjdCBRZGlzYyAqc2NoKQ0KICAq Lw0KIAlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpOw0KIAl1MzIg bXR1ID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7DQotCXU2NCByYXRlID0gcS0+cmF0ZV9i cHM7DQorCXU2NCByYXRlID0gcS0+Y29uZmlnLT5yYXRlX2JwczsNCiAJdTMyIHF1YW50dW0gPSAx MDI0Ow0KIA0KIAlxLT50aW5fY250ID0gMzsNCkBAIC0yNTEyLDExICsyNTE3LDExIEBAIHN0YXRp YyBpbnQgY2FrZV9jb25maWdfZGlmZnNlcnYzKHN0cnVjdCBRZGlzYyAqc2NoKQ0KIA0KIAkvKiBj bGFzcyBjaGFyYWN0ZXJpc3RpY3MgKi8NCiAJY2FrZV9zZXRfcmF0ZSgmcS0+dGluc1swXSwgcmF0 ZSwgbXR1LA0KLQkJICAgICAgdXNfdG9fbnMocS0+dGFyZ2V0KSwgdXNfdG9fbnMocS0+aW50ZXJ2 YWwpKTsNCisJCSAgICAgIHVzX3RvX25zKHEtPmNvbmZpZy0+dGFyZ2V0KSwgdXNfdG9fbnMocS0+ Y29uZmlnLT5pbnRlcnZhbCkpOw0KIAljYWtlX3NldF9yYXRlKCZxLT50aW5zWzFdLCByYXRlID4+ IDQsIG10dSwNCi0JCSAgICAgIHVzX3RvX25zKHEtPnRhcmdldCksIHVzX3RvX25zKHEtPmludGVy dmFsKSk7DQorCQkgICAgICB1c190b19ucyhxLT5jb25maWctPnRhcmdldCksIHVzX3RvX25zKHEt PmNvbmZpZy0+aW50ZXJ2YWwpKTsNCiAJY2FrZV9zZXRfcmF0ZSgmcS0+dGluc1syXSwgcmF0ZSA+ PiAyLCBtdHUsDQotCQkgICAgICB1c190b19ucyhxLT50YXJnZXQpLCB1c190b19ucyhxLT5pbnRl cnZhbCkpOw0KKwkJICAgICAgdXNfdG9fbnMocS0+Y29uZmlnLT50YXJnZXQpLCB1c190b19ucyhx LT5jb25maWctPmludGVydmFsKSk7DQogDQogCS8qIGJhbmR3aWR0aC1zaGFyaW5nIHdlaWdodHMg Ki8NCiAJcS0+dGluc1swXS50aW5fcXVhbnR1bSA9IHF1YW50dW07DQpAQCAtMjUyOCw3ICsyNTMz LDggQEAgc3RhdGljIGludCBjYWtlX2NvbmZpZ19kaWZmc2VydjMoc3RydWN0IFFkaXNjICpzY2gp DQogDQogc3RhdGljIHZvaWQgY2FrZV9yZWNvbmZpZ3VyZShzdHJ1Y3QgUWRpc2MgKnNjaCkNCiB7 DQotCXN0cnVjdCBjYWtlX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7DQorCXN0cnVj dCBjYWtlX3NjaGVkX2RhdGEgKnFkID0gcWRpc2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3QgY2FrZV9z Y2hlZF9jb25maWcgKnEgPSBxZC0+Y29uZmlnOw0KIAlpbnQgYywgZnQ7DQogDQogCXN3aXRjaCAo cS0+dGluX21vZGUpIHsNCkBAIC0yNTU0LDM2ICsyNTYwLDM3IEBAIHN0YXRpYyB2b2lkIGNha2Vf cmVjb25maWd1cmUoc3RydWN0IFFkaXNjICpzY2gpDQogCQlicmVhazsNCiAJfQ0KIA0KLQlmb3Ig KGMgPSBxLT50aW5fY250OyBjIDwgQ0FLRV9NQVhfVElOUzsgYysrKSB7DQorCWZvciAoYyA9IHFk LT50aW5fY250OyBjIDwgQ0FLRV9NQVhfVElOUzsgYysrKSB7DQogCQljYWtlX2NsZWFyX3Rpbihz Y2gsIGMpOw0KLQkJcS0+dGluc1tjXS5jcGFyYW1zLm10dV90aW1lID0gcS0+dGluc1tmdF0uY3Bh cmFtcy5tdHVfdGltZTsNCisJCXFkLT50aW5zW2NdLmNwYXJhbXMubXR1X3RpbWUgPSBxZC0+dGlu c1tmdF0uY3BhcmFtcy5tdHVfdGltZTsNCiAJfQ0KIA0KLQlxLT5yYXRlX25zICAgPSBxLT50aW5z W2Z0XS50aW5fcmF0ZV9uczsNCi0JcS0+cmF0ZV9zaGZ0ID0gcS0+dGluc1tmdF0udGluX3JhdGVf c2hmdDsNCisJcWQtPnJhdGVfbnMgICA9IHFkLT50aW5zW2Z0XS50aW5fcmF0ZV9uczsNCisJcWQt PnJhdGVfc2hmdCA9IHFkLT50aW5zW2Z0XS50aW5fcmF0ZV9zaGZ0Ow0KIA0KIAlpZiAocS0+YnVm ZmVyX2NvbmZpZ19saW1pdCkgew0KLQkJcS0+YnVmZmVyX2xpbWl0ID0gcS0+YnVmZmVyX2NvbmZp Z19saW1pdDsNCisJCXFkLT5idWZmZXJfbGltaXQgPSBxLT5idWZmZXJfY29uZmlnX2xpbWl0Ow0K IAl9IGVsc2UgaWYgKHEtPnJhdGVfYnBzKSB7DQogCQl1NjQgdCA9IHEtPnJhdGVfYnBzICogcS0+ aW50ZXJ2YWw7DQogDQogCQlkb19kaXYodCwgVVNFQ19QRVJfU0VDIC8gNCk7DQotCQlxLT5idWZm ZXJfbGltaXQgPSBtYXhfdCh1MzIsIHQsIDRVIDw8IDIwKTsNCisJCXFkLT5idWZmZXJfbGltaXQg PSBtYXhfdCh1MzIsIHQsIDRVIDw8IDIwKTsNCiAJfSBlbHNlIHsNCi0JCXEtPmJ1ZmZlcl9saW1p dCA9IH4wOw0KKwkJcWQtPmJ1ZmZlcl9saW1pdCA9IH4wOw0KIAl9DQogDQogCXNjaC0+ZmxhZ3Mg Jj0gflRDUV9GX0NBTl9CWVBBU1M7DQogDQotCXEtPmJ1ZmZlcl9saW1pdCA9IG1pbihxLT5idWZm ZXJfbGltaXQsDQotCQkJICAgICAgbWF4KHNjaC0+bGltaXQgKiBwc2NoZWRfbXR1KHFkaXNjX2Rl dihzY2gpKSwNCi0JCQkJICBxLT5idWZmZXJfY29uZmlnX2xpbWl0KSk7DQorCXFkLT5idWZmZXJf bGltaXQgPSBtaW4ocWQtPmJ1ZmZlcl9saW1pdCwNCisJCQkgICAgICAgbWF4KHNjaC0+bGltaXQg KiBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwNCisJCQkJICAgcS0+YnVmZmVyX2NvbmZpZ19s aW1pdCkpOw0KIH0NCiANCiBzdGF0aWMgaW50IGNha2VfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2No LCBzdHJ1Y3QgbmxhdHRyICpvcHQsDQogCQkgICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAq ZXh0YWNrKQ0KIHsNCi0Jc3RydWN0IGNha2Vfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2No KTsNCisJc3RydWN0IGNha2Vfc2NoZWRfZGF0YSAqcWQgPSBxZGlzY19wcml2KHNjaCk7DQorCXN0 cnVjdCBjYWtlX3NjaGVkX2NvbmZpZyAqcSA9IHFkLT5jb25maWc7DQogCXN0cnVjdCBubGF0dHIg KnRiW1RDQV9DQUtFX01BWCArIDFdOw0KIAl1MTYgcmF0ZV9mbGFnczsNCiAJdTggZmxvd19tb2Rl Ow0KQEAgLTI2MzcsMTkgKzI2NDQsMTkgQEAgc3RhdGljIGludCBjYWtlX2NoYW5nZShzdHJ1Y3Qg UWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LA0KIAkJCSAgIG5sYV9nZXRfczMyKHRiW1RD QV9DQUtFX09WRVJIRUFEXSkpOw0KIAkJcmF0ZV9mbGFncyB8PSBDQUtFX0ZMQUdfT1ZFUkhFQUQ7 DQogDQotCQlxLT5tYXhfbmV0bGVuID0gMDsNCi0JCXEtPm1heF9hZGpsZW4gPSAwOw0KLQkJcS0+ bWluX25ldGxlbiA9IH4wOw0KLQkJcS0+bWluX2FkamxlbiA9IH4wOw0KKwkJcWQtPm1heF9uZXRs ZW4gPSAwOw0KKwkJcWQtPm1heF9hZGpsZW4gPSAwOw0KKwkJcWQtPm1pbl9uZXRsZW4gPSB+MDsN CisJCXFkLT5taW5fYWRqbGVuID0gfjA7DQogCX0NCiANCiAJaWYgKHRiW1RDQV9DQUtFX1JBV10p IHsNCiAJCXJhdGVfZmxhZ3MgJj0gfkNBS0VfRkxBR19PVkVSSEVBRDsNCiANCi0JCXEtPm1heF9u ZXRsZW4gPSAwOw0KLQkJcS0+bWF4X2FkamxlbiA9IDA7DQotCQlxLT5taW5fbmV0bGVuID0gfjA7 DQotCQlxLT5taW5fYWRqbGVuID0gfjA7DQorCQlxZC0+bWF4X25ldGxlbiA9IDA7DQorCQlxZC0+ bWF4X2FkamxlbiA9IDA7DQorCQlxZC0+bWluX25ldGxlbiA9IH4wOw0KKwkJcWQtPm1pbl9hZGps ZW4gPSB+MDsNCiAJfQ0KIA0KIAlpZiAodGJbVENBX0NBS0VfTVBVXSkNCkBAIC0yNzA1LDcgKzI3 MTIsNyBAQCBzdGF0aWMgaW50IGNha2VfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3Qg bmxhdHRyICpvcHQsDQogDQogCVdSSVRFX09OQ0UocS0+cmF0ZV9mbGFncywgcmF0ZV9mbGFncyk7 DQogCVdSSVRFX09OQ0UocS0+Zmxvd19tb2RlLCBmbG93X21vZGUpOw0KLQlpZiAocS0+dGlucykg ew0KKwlpZiAocWQtPnRpbnMpIHsNCiAJCXNjaF90cmVlX2xvY2soc2NoKTsNCiAJCWNha2VfcmVj b25maWd1cmUoc2NoKTsNCiAJCXNjaF90cmVlX3VubG9jayhzY2gpOw0KQEAgLTI3MjEsMTQgKzI3 MjgsMjAgQEAgc3RhdGljIHZvaWQgY2FrZV9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKQ0KIAlx ZGlzY193YXRjaGRvZ19jYW5jZWwoJnEtPndhdGNoZG9nKTsNCiAJdGNmX2Jsb2NrX3B1dChxLT5i bG9jayk7DQogCWt2ZnJlZShxLT50aW5zKTsNCisJa3ZmcmVlKHEtPmNvbmZpZyk7DQogfQ0KIA0K IHN0YXRpYyBpbnQgY2FrZV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpv cHQsDQogCQkgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykNCiB7DQotCXN0cnVj dCBjYWtlX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7DQorCXN0cnVjdCBjYWtlX3Nj aGVkX2RhdGEgKnFkID0gcWRpc2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9jb25m aWcgKnE7DQogCWludCBpLCBqLCBlcnI7DQogDQorCXEgPSBrdmNhbGxvYygxLCBzaXplb2Yoc3Ry dWN0IGNha2Vfc2NoZWRfY29uZmlnKSwgR0ZQX0tFUk5FTCk7DQorCWlmICghcSkNCisJCXJldHVy biAtRU5PTUVNOw0KKw0KIAlzY2gtPmxpbWl0ID0gMTAyNDA7DQogCXNjaC0+ZmxhZ3MgfD0gVENR X0ZfREVRVUVVRV9EUk9QUzsNCiANCkBAIC0yNzQyLDMzICsyNzU1LDM2IEBAIHN0YXRpYyBpbnQg Y2FrZV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsDQogCQkJICAg ICAgICogZm9yIDUgdG8gMTAlIG9mIGludGVydmFsDQogCQkJICAgICAgICovDQogCXEtPnJhdGVf ZmxhZ3MgfD0gQ0FLRV9GTEFHX1NQTElUX0dTTzsNCi0JcS0+Y3VyX3RpbiA9IDA7DQotCXEtPmN1 cl9mbG93ICA9IDA7DQorCXFkLT5jdXJfdGluID0gMDsNCisJcWQtPmN1cl9mbG93ICA9IDA7DQor CXFkLT5jb25maWcgPSBxOw0KIA0KLQlxZGlzY193YXRjaGRvZ19pbml0KCZxLT53YXRjaGRvZywg c2NoKTsNCisJcWRpc2Nfd2F0Y2hkb2dfaW5pdCgmcWQtPndhdGNoZG9nLCBzY2gpOw0KIA0KIAlp ZiAob3B0KSB7DQogCQllcnIgPSBjYWtlX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTsNCiANCiAJ CWlmIChlcnIpDQotCQkJcmV0dXJuIGVycjsNCisJCQlnb3RvIGVycjsNCiAJfQ0KIA0KLQllcnIg PSB0Y2ZfYmxvY2tfZ2V0KCZxLT5ibG9jaywgJnEtPmZpbHRlcl9saXN0LCBzY2gsIGV4dGFjayk7 DQorCWVyciA9IHRjZl9ibG9ja19nZXQoJnFkLT5ibG9jaywgJnFkLT5maWx0ZXJfbGlzdCwgc2No LCBleHRhY2spOw0KIAlpZiAoZXJyKQ0KLQkJcmV0dXJuIGVycjsNCisJCWdvdG8gZXJyOw0KIA0K IAlxdWFudHVtX2RpdlswXSA9IH4wOw0KIAlmb3IgKGkgPSAxOyBpIDw9IENBS0VfUVVFVUVTOyBp KyspDQogCQlxdWFudHVtX2RpdltpXSA9IDY1NTM1IC8gaTsNCiANCi0JcS0+dGlucyA9IGt2Y2Fs bG9jKENBS0VfTUFYX1RJTlMsIHNpemVvZihzdHJ1Y3QgY2FrZV90aW5fZGF0YSksDQotCQkJICAg R0ZQX0tFUk5FTCk7DQotCWlmICghcS0+dGlucykNCi0JCXJldHVybiAtRU5PTUVNOw0KKwlxZC0+ dGlucyA9IGt2Y2FsbG9jKENBS0VfTUFYX1RJTlMsIHNpemVvZihzdHJ1Y3QgY2FrZV90aW5fZGF0 YSksDQorCQkJICAgIEdGUF9LRVJORUwpOw0KKwlpZiAoIXFkLT50aW5zKSB7DQorCQllcnIgPSAt RU5PTUVNOw0KKwkJZ290byBlcnI7DQorCX0NCiANCiAJZm9yIChpID0gMDsgaSA8IENBS0VfTUFY X1RJTlM7IGkrKykgew0KLQkJc3RydWN0IGNha2VfdGluX2RhdGEgKmIgPSBxLT50aW5zICsgaTsN CisJCXN0cnVjdCBjYWtlX3Rpbl9kYXRhICpiID0gcWQtPnRpbnMgKyBpOw0KIA0KIAkJSU5JVF9M SVNUX0hFQUQoJmItPm5ld19mbG93cyk7DQogCQlJTklUX0xJU1RfSEVBRCgmYi0+b2xkX2Zsb3dz KTsNCkBAIC0yNzg0LDIyICsyODAwLDI3IEBAIHN0YXRpYyBpbnQgY2FrZV9pbml0KHN0cnVjdCBR ZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsDQogCQkJSU5JVF9MSVNUX0hFQUQoJmZsb3ct PmZsb3djaGFpbik7DQogCQkJY29iYWx0X3ZhcnNfaW5pdCgmZmxvdy0+Y3ZhcnMpOw0KIA0KLQkJ CXEtPm92ZXJmbG93X2hlYXBba10udCA9IGk7DQotCQkJcS0+b3ZlcmZsb3dfaGVhcFtrXS5iID0g ajsNCisJCQlxZC0+b3ZlcmZsb3dfaGVhcFtrXS50ID0gaTsNCisJCQlxZC0+b3ZlcmZsb3dfaGVh cFtrXS5iID0gajsNCiAJCQliLT5vdmVyZmxvd19pZHhbal0gPSBrOw0KIAkJfQ0KIAl9DQogDQog CWNha2VfcmVjb25maWd1cmUoc2NoKTsNCi0JcS0+YXZnX3BlYWtfYmFuZHdpZHRoID0gcS0+cmF0 ZV9icHM7DQotCXEtPm1pbl9uZXRsZW4gPSB+MDsNCi0JcS0+bWluX2FkamxlbiA9IH4wOw0KKwlx ZC0+YXZnX3BlYWtfYmFuZHdpZHRoID0gcS0+cmF0ZV9icHM7DQorCXFkLT5taW5fbmV0bGVuID0g fjA7DQorCXFkLT5taW5fYWRqbGVuID0gfjA7DQogCXJldHVybiAwOw0KK2VycjoNCisJa3ZmcmVl KHFkLT5jb25maWcpOw0KKwlxZC0+Y29uZmlnID0gTlVMTDsNCisJcmV0dXJuIGVycjsNCiB9DQog DQogc3RhdGljIGludCBjYWtlX2R1bXAoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBza19idWZm ICpza2IpDQogew0KLQlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gp Ow0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxZCA9IHFkaXNjX3ByaXYoc2NoKTsNCisJc3Ry dWN0IGNha2Vfc2NoZWRfY29uZmlnICpxID0gcWQtPmNvbmZpZzsNCiAJc3RydWN0IG5sYXR0ciAq b3B0czsNCiAJdTE2IHJhdGVfZmxhZ3M7DQogCXU4IGZsb3dfbW9kZTsNCg0KLS0gDQoyLjUyLjAN Cg0K