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 6B98DB85581 for ; Thu, 08 Jan 2026 17:57:59 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891477; 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=zcFhJuGa2mxJwb0mND5RIrEtmUxu+LDCN5GDe7CQ/j8=; b=f/FB87FqFt+sMpe274aVZ2GRCCdtMXX8hqV9dL84spmEsq7MpEppsc1N3GQEd0ymvQhLQC VjT9365cVhQ3N3CM+2+lYhrXcdXdp0/PO6HSQQQJu2L9/Oz3Bl180QOp/FuXoH7zkgR39s 5PUSdMfpnTj9mmTgjkWIcHKApb2NgnE= 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-590-Q5-bSEj9OBuSYEr9h3oFnQ-1; Thu, 08 Jan 2026 11:57:56 -0500 X-MC-Unique: Q5-bSEj9OBuSYEr9h3oFnQ-1 X-Mimecast-MFC-AGG-ID: Q5-bSEj9OBuSYEr9h3oFnQ_1767891475 Received: by mail-ej1-f72.google.com with SMTP id a640c23a62f3a-b83623fd3bdso483444766b.2 for ; Thu, 08 Jan 2026 08:57:56 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767891475; x=1768496275; 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=zcFhJuGa2mxJwb0mND5RIrEtmUxu+LDCN5GDe7CQ/j8=; b=vb9pyILJpSWZsmq3GQ4zb1uNhGBP5RzqnbxN+u9+hTpu7QfyCp1KAPbeIGrbLvHt81 5Y0FBY1NQaXiew0YyRMMMOlKUupisw5JkUmufne+BUKL9CSWDQ0ovwIm421L8CkXOiNa NKgTt0D5hS+ZVKPiTWQkhKkrtoQ4+YItfE24pLvVMK214EWPzcfgvvzqJkEj68key4Yd I4vd6UimRV5FP7T51b5g1K5C5W/WlT5G62Fy7tWhAUpdPap/To5UfRge2N4hAECKOVTl aYnqi+sC/Wc5hFNNoGsPwfgrQF2jsocKsRW9GNqdECV+zUP78warf/JmFUbJdB97SUl1 LPfg== X-Forwarded-Encrypted: i=1; AJvYcCW8SgS6LTadw8SjG50VHuFJsSZhtX7A0p1y6NZWC8JftmxKJbr/AS9L1ZB29BzNKnBZXQ+7@lists.bufferbloat.net X-Gm-Message-State: AOJu0YyVzzOVOkMVSJvvDliGnBDKZkPShew7iY4VoT4UKCuvkN2ZVJv9 lfJ5BOiU2AGRWR5+mmn+SxCLeoJj3FrWM9kUYfB8PePwzBH0O/sj6X4/dcdkL/vux1bagtdsMLA tHYtrX0b9XSpcIb7He2WIU5G2rOmhw1wk8GjMXUkcCTEp+CgSnijmZoawQ1rEDRk= X-Gm-Gg: AY/fxX6aLDaExJm8tST8+ZqZE5rGhHek1s7utnXnlgTHPRoD4KOXuBBrGLPV/SjgU2V 5TyioJCykq8roC/mL1PPgYS0xm6VA+9A5Q2tGUNwnMVpKgvULTDF13OKQqepNzwC7hn3nke7OXH DzEy4Hh4kSDDHHwrb5yHvTu57FcxII5L7/PxshnFpLr/8K/8mejL37rleX38fypC4K/Ip5MUkgt T1XwpvnOd5h6Lg0E9m4ayRS2w1K05dIxeIJZUMVeJVWXmqBU5a2cH2p/Fs1E9L3xEu8px3+v209 7UMa/PpKqJPmoo6tE3Gjt0UOOyn2uGVaJvUTwLW6xygO9qkjI0akAGIMXAE/RAwCgPDy2/deT4a 9qiB4jx6bENFdBf3JskcbyNR6XHBTEa1meg== X-Received: by 2002:a17:907:7b91:b0:b7c:e320:5244 with SMTP id a640c23a62f3a-b84453a51c1mr639251966b.45.1767891474678; Thu, 08 Jan 2026 08:57:54 -0800 (PST) X-Google-Smtp-Source: AGHT+IELBgMd7cXZWfnkzp4zuG4ElISpAdfYusGFgsE02NZz7Fsy6MkcsfZ0TRpqnK4C9il4HgRc3w== X-Received: by 2002:a17:907:7b91:b0:b7c:e320:5244 with SMTP id a640c23a62f3a-b84453a51c1mr639249366b.45.1767891474163; Thu, 08 Jan 2026 08:57:54 -0800 (PST) Received: from alrua-x1.borgediget.toke.dk ([45.145.92.2]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b842a234000sm867542766b.4.2026.01.08.08.57.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Jan 2026 08:57:53 -0800 (PST) Received: by alrua-x1.borgediget.toke.dk (Postfix, from userid 1000) id C8E2C4083BD; Thu, 08 Jan 2026 17:57:52 +0100 (CET) From: =?utf-8?q?Toke_H=C3=B8iland-J=C3=B8rgensen?= Date: Thu, 08 Jan 2026 17:56:04 +0100 MIME-Version: 1.0 Message-Id: <20260108-mq-cake-sub-qdisc-v7-2-4eb645f0419c@redhat.com> References: <20260108-mq-cake-sub-qdisc-v7-0-4eb645f0419c@redhat.com> In-Reply-To: <20260108-mq-cake-sub-qdisc-v7-0-4eb645f0419c@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, Willem de Bruijn , =?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: iAIm0IxmDjbtu46kgWPQth1soKqQut-Hrpex_0LFrlY_1767891475 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-ID-Hash: 6QY33LRZ2Y5Z64CJ6FHOSIKT4X7RN33N X-Message-ID-Hash: 6QY33LRZ2Y5Z64CJ6FHOSIKT4X7RN33N 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 v7 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+DQpSZXZpZXdlZC1ieTog V2lsbGVtIGRlIEJydWlqbiA8d2lsbGVtYkBnb29nbGUuY29tPg0KU2lnbmVkLW9mZi1ieTogVG9r ZSBIw7hpbGFuZC1Kw7hyZ2Vuc2VuIDx0b2tlQHJlZGhhdC5jb20+DQotLS0NCiBuZXQvc2NoZWQv c2NoX2Nha2UuYyB8IDI0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCiAxIGZpbGUgY2hhbmdlZCwgMTMzIGluc2VydGlvbnMoKyksIDExMiBkZWxl dGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfY2FrZS5jIGIvbmV0L3NjaGVk L3NjaF9jYWtlLmMNCmluZGV4IDRhNjRkNjM5N2I2Zi4uZTIzYjIzZDk0MzQ3IDEwMDY0NA0KLS0t IGEvbmV0L3NjaGVkL3NjaF9jYWtlLmMNCisrKyBiL25ldC9zY2hlZC9zY2hfY2FrZS5jDQpAQCAt MTk3LDQwICsxOTcsNDIgQEAgc3RydWN0IGNha2VfdGluX2RhdGEgew0KIAl1MzIJd2F5X2NvbGxp c2lvbnM7DQogfTsgLyogbnVtYmVyIG9mIHRpbnMgaXMgc21hbGwsIHNvIHNpemUgb2YgdGhpcyBz dHJ1Y3QgZG9lc24ndCBtYXR0ZXIgbXVjaCAqLw0KIA0KK3N0cnVjdCBjYWtlX3NjaGVkX2NvbmZp ZyB7DQorCXU2NAkJcmF0ZV9icHM7DQorCXU2NAkJaW50ZXJ2YWw7DQorCXU2NAkJdGFyZ2V0Ow0K Kwl1MzIJCWJ1ZmZlcl9jb25maWdfbGltaXQ7DQorCXUzMgkJZndtYXJrX21hc2s7DQorCXUxNgkJ ZndtYXJrX3NoZnQ7DQorCXMxNgkJcmF0ZV9vdmVyaGVhZDsNCisJdTE2CQlyYXRlX21wdTsNCisJ dTE2CQlyYXRlX2ZsYWdzOw0KKwl1OAkJdGluX21vZGU7DQorCXU4CQlmbG93X21vZGU7DQorCXU4 CQlhdG1fbW9kZTsNCisJdTgJCWFja19maWx0ZXI7DQorfTsNCisNCiBzdHJ1Y3QgY2FrZV9zY2hl ZF9kYXRhIHsNCiAJc3RydWN0IHRjZl9wcm90byBfX3JjdSAqZmlsdGVyX2xpc3Q7IC8qIG9wdGlv bmFsIGV4dGVybmFsIGNsYXNzaWZpZXIgKi8NCiAJc3RydWN0IHRjZl9ibG9jayAqYmxvY2s7DQog CXN0cnVjdCBjYWtlX3Rpbl9kYXRhICp0aW5zOw0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9jb25maWcg KmNvbmZpZzsNCiANCiAJc3RydWN0IGNha2VfaGVhcF9lbnRyeSBvdmVyZmxvd19oZWFwW0NBS0Vf UVVFVUVTICogQ0FLRV9NQVhfVElOU107DQotCXUxNgkJb3ZlcmZsb3dfdGltZW91dDsNCi0NCi0J dTE2CQl0aW5fY250Ow0KLQl1OAkJdGluX21vZGU7DQotCXU4CQlmbG93X21vZGU7DQotCXU4CQlh Y2tfZmlsdGVyOw0KLQl1OAkJYXRtX21vZGU7DQotDQotCXUzMgkJZndtYXJrX21hc2s7DQotCXUx NgkJZndtYXJrX3NoZnQ7DQogDQogCS8qIHRpbWVfbmV4dCA9IHRpbWVfdGhpcyArICgobGVuICog cmF0ZV9ucykgPj4gcmF0ZV9zaGZ0KSAqLw0KLQl1MTYJCXJhdGVfc2hmdDsNCiAJa3RpbWVfdAkJ dGltZV9uZXh0X3BhY2tldDsNCiAJa3RpbWVfdAkJZmFpbHNhZmVfbmV4dF9wYWNrZXQ7DQogCXU2 NAkJcmF0ZV9uczsNCi0JdTY0CQlyYXRlX2JwczsNCi0JdTE2CQlyYXRlX2ZsYWdzOw0KLQlzMTYJ CXJhdGVfb3ZlcmhlYWQ7DQotCXUxNgkJcmF0ZV9tcHU7DQotCXU2NAkJaW50ZXJ2YWw7DQotCXU2 NAkJdGFyZ2V0Ow0KKwl1MTYJCXJhdGVfc2hmdDsNCisJdTE2CQlvdmVyZmxvd190aW1lb3V0Ow0K Kwl1MTYJCXRpbl9jbnQ7DQogDQogCS8qIHJlc291cmNlIHRyYWNraW5nICovDQogCXUzMgkJYnVm ZmVyX3VzZWQ7DQogCXUzMgkJYnVmZmVyX21heF91c2VkOw0KIAl1MzIJCWJ1ZmZlcl9saW1pdDsN Ci0JdTMyCQlidWZmZXJfY29uZmlnX2xpbWl0Ow0KIA0KIAkvKiBpbmRpY2VzIGZvciBkZXF1ZXVl ICovDQogCXUxNgkJY3VyX3RpbjsNCkBAIC0xMTk4LDcgKzEyMDAsNyBAQCBzdGF0aWMgYm9vbCBj YWtlX3RjcGhfbWF5X2Ryb3AoY29uc3Qgc3RydWN0IHRjcGhkciAqdGNwaCwNCiBzdGF0aWMgc3Ry dWN0IHNrX2J1ZmYgKmNha2VfYWNrX2ZpbHRlcihzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxLA0K IAkJCQkgICAgICAgc3RydWN0IGNha2VfZmxvdyAqZmxvdykNCiB7DQotCWJvb2wgYWdncmVzc2l2 ZSA9IHEtPmFja19maWx0ZXIgPT0gQ0FLRV9BQ0tfQUdHUkVTU0lWRTsNCisJYm9vbCBhZ2dyZXNz aXZlID0gcS0+Y29uZmlnLT5hY2tfZmlsdGVyID09IENBS0VfQUNLX0FHR1JFU1NJVkU7DQogCXN0 cnVjdCBza19idWZmICplbGlnX2FjayA9IE5VTEwsICplbGlnX2Fja19wcmV2ID0gTlVMTDsNCiAJ c3RydWN0IHNrX2J1ZmYgKnNrYl9jaGVjaywgKnNrYl9wcmV2ID0gTlVMTDsNCiAJY29uc3Qgc3Ry dWN0IGlwdjZoZHIgKmlwdjZoLCAqaXB2NmhfY2hlY2s7DQpAQCAtMTM1OCwxNSArMTM2MCwxNyBA QCBzdGF0aWMgdTY0IGNha2VfZXdtYSh1NjQgYXZnLCB1NjQgc2FtcGxlLCB1MzIgc2hpZnQpDQog CXJldHVybiBhdmc7DQogfQ0KIA0KLXN0YXRpYyB1MzIgY2FrZV9jYWxjX292ZXJoZWFkKHN0cnVj dCBjYWtlX3NjaGVkX2RhdGEgKnEsIHUzMiBsZW4sIHUzMiBvZmYpDQorc3RhdGljIHUzMiBjYWtl X2NhbGNfb3ZlcmhlYWQoc3RydWN0IGNha2Vfc2NoZWRfZGF0YSAqcWQsIHUzMiBsZW4sIHUzMiBv ZmYpDQogew0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9jb25maWcgKnEgPSBxZC0+Y29uZmlnOw0KKw0K IAlpZiAocS0+cmF0ZV9mbGFncyAmIENBS0VfRkxBR19PVkVSSEVBRCkNCiAJCWxlbiAtPSBvZmY7 DQogDQotCWlmIChxLT5tYXhfbmV0bGVuIDwgbGVuKQ0KLQkJcS0+bWF4X25ldGxlbiA9IGxlbjsN Ci0JaWYgKHEtPm1pbl9uZXRsZW4gPiBsZW4pDQotCQlxLT5taW5fbmV0bGVuID0gbGVuOw0KKwlp ZiAocWQtPm1heF9uZXRsZW4gPCBsZW4pDQorCQlxZC0+bWF4X25ldGxlbiA9IGxlbjsNCisJaWYg KHFkLT5taW5fbmV0bGVuID4gbGVuKQ0KKwkJcWQtPm1pbl9uZXRsZW4gPSBsZW47DQogDQogCWxl biArPSBxLT5yYXRlX292ZXJoZWFkOw0KIA0KQEAgLTEzODUsMTAgKzEzODksMTAgQEAgc3RhdGlj IHUzMiBjYWtlX2NhbGNfb3ZlcmhlYWQoc3RydWN0IGNha2Vfc2NoZWRfZGF0YSAqcSwgdTMyIGxl biwgdTMyIG9mZikNCiAJCWxlbiArPSAobGVuICsgNjMpIC8gNjQ7DQogCX0NCiANCi0JaWYgKHEt Pm1heF9hZGpsZW4gPCBsZW4pDQotCQlxLT5tYXhfYWRqbGVuID0gbGVuOw0KLQlpZiAocS0+bWlu X2FkamxlbiA+IGxlbikNCi0JCXEtPm1pbl9hZGpsZW4gPSBsZW47DQorCWlmIChxZC0+bWF4X2Fk amxlbiA8IGxlbikNCisJCXFkLT5tYXhfYWRqbGVuID0gbGVuOw0KKwlpZiAocWQtPm1pbl9hZGps ZW4gPiBsZW4pDQorCQlxZC0+bWluX2FkamxlbiA9IGxlbjsNCiANCiAJcmV0dXJuIGxlbjsNCiB9 DQpAQCAtMTU4Niw3ICsxNTkwLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBjYWtlX2Ryb3Aoc3Ry dWN0IFFkaXNjICpzY2gsIHN0cnVjdCBza19idWZmICoqdG9fZnJlZSkNCiAJZmxvdy0+ZHJvcHBl ZCsrOw0KIAliLT50aW5fZHJvcHBlZCsrOw0KIA0KLQlpZiAocS0+cmF0ZV9mbGFncyAmIENBS0Vf RkxBR19JTkdSRVNTKQ0KKwlpZiAocS0+Y29uZmlnLT5yYXRlX2ZsYWdzICYgQ0FLRV9GTEFHX0lO R1JFU1MpDQogCQljYWtlX2FkdmFuY2Vfc2hhcGVyKHEsIGIsIHNrYiwgbm93LCB0cnVlKTsNCiAN CiAJcWRpc2NfZHJvcF9yZWFzb24oc2tiLCBzY2gsIHRvX2ZyZWUsIFNLQl9EUk9QX1JFQVNPTl9R RElTQ19PVkVSTElNSVQpOw0KQEAgLTE2NTYsNyArMTY2MCw4IEBAIHN0YXRpYyB1OCBjYWtlX2hh bmRsZV9kaWZmc2VydihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBib29sIHdhc2gpDQogc3RhdGljIHN0 cnVjdCBjYWtlX3Rpbl9kYXRhICpjYWtlX3NlbGVjdF90aW4oc3RydWN0IFFkaXNjICpzY2gsDQog CQkJCQkgICAgIHN0cnVjdCBza19idWZmICpza2IpDQogew0KLQlzdHJ1Y3QgY2FrZV9zY2hlZF9k YXRhICpxID0gcWRpc2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxZCA9 IHFkaXNjX3ByaXYoc2NoKTsNCisJc3RydWN0IGNha2Vfc2NoZWRfY29uZmlnICpxID0gcWQtPmNv bmZpZzsNCiAJdTMyIHRpbiwgbWFyazsNCiAJYm9vbCB3YXNoOw0KIAl1OCBkc2NwOw0KQEAgLTE2 NzMsMjQgKzE2NzgsMjQgQEAgc3RhdGljIHN0cnVjdCBjYWtlX3Rpbl9kYXRhICpjYWtlX3NlbGVj dF90aW4oc3RydWN0IFFkaXNjICpzY2gsDQogCWlmIChxLT50aW5fbW9kZSA9PSBDQUtFX0RJRkZT RVJWX0JFU1RFRkZPUlQpDQogCQl0aW4gPSAwOw0KIA0KLQllbHNlIGlmIChtYXJrICYmIG1hcmsg PD0gcS0+dGluX2NudCkNCi0JCXRpbiA9IHEtPnRpbl9vcmRlclttYXJrIC0gMV07DQorCWVsc2Ug aWYgKG1hcmsgJiYgbWFyayA8PSBxZC0+dGluX2NudCkNCisJCXRpbiA9IHFkLT50aW5fb3JkZXJb bWFyayAtIDFdOw0KIA0KIAllbHNlIGlmIChUQ19IX01BSihza2ItPnByaW9yaXR5KSA9PSBzY2gt PmhhbmRsZSAmJg0KIAkJIFRDX0hfTUlOKHNrYi0+cHJpb3JpdHkpID4gMCAmJg0KLQkJIFRDX0hf TUlOKHNrYi0+cHJpb3JpdHkpIDw9IHEtPnRpbl9jbnQpDQotCQl0aW4gPSBxLT50aW5fb3JkZXJb VENfSF9NSU4oc2tiLT5wcmlvcml0eSkgLSAxXTsNCisJCSBUQ19IX01JTihza2ItPnByaW9yaXR5 KSA8PSBxZC0+dGluX2NudCkNCisJCXRpbiA9IHFkLT50aW5fb3JkZXJbVENfSF9NSU4oc2tiLT5w cmlvcml0eSkgLSAxXTsNCiANCiAJZWxzZSB7DQogCQlpZiAoIXdhc2gpDQogCQkJZHNjcCA9IGNh a2VfaGFuZGxlX2RpZmZzZXJ2KHNrYiwgd2FzaCk7DQotCQl0aW4gPSBxLT50aW5faW5kZXhbZHNj cF07DQorCQl0aW4gPSBxZC0+dGluX2luZGV4W2RzY3BdOw0KIA0KLQkJaWYgKHVubGlrZWx5KHRp biA+PSBxLT50aW5fY250KSkNCisJCWlmICh1bmxpa2VseSh0aW4gPj0gcWQtPnRpbl9jbnQpKQ0K IAkJCXRpbiA9IDA7DQogCX0NCiANCi0JcmV0dXJuICZxLT50aW5zW3Rpbl07DQorCXJldHVybiAm cWQtPnRpbnNbdGluXTsNCiB9DQogDQogc3RhdGljIHUzMiBjYWtlX2NsYXNzaWZ5KHN0cnVjdCBR ZGlzYyAqc2NoLCBzdHJ1Y3QgY2FrZV90aW5fZGF0YSAqKnQsDQpAQCAtMTc0Niw3ICsxNzUxLDcg QEAgc3RhdGljIHMzMiBjYWtlX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFk aXNjICpzY2gsDQogCWJvb2wgc2FtZV9mbG93ID0gZmFsc2U7DQogDQogCS8qIGNob29zZSBmbG93 IHRvIGluc2VydCBpbnRvICovDQotCWlkeCA9IGNha2VfY2xhc3NpZnkoc2NoLCAmYiwgc2tiLCBx LT5mbG93X21vZGUsICZyZXQpOw0KKwlpZHggPSBjYWtlX2NsYXNzaWZ5KHNjaCwgJmIsIHNrYiwg cS0+Y29uZmlnLT5mbG93X21vZGUsICZyZXQpOw0KIAlpZiAoaWR4ID09IDApIHsNCiAJCWlmIChy ZXQgJiBfX05FVF9YTUlUX0JZUEFTUykNCiAJCQlxZGlzY19xc3RhdHNfZHJvcChzY2gpOw0KQEAg LTE3ODEsNyArMTc4Niw3IEBAIHN0YXRpYyBzMzIgY2FrZV9lbnF1ZXVlKHN0cnVjdCBza19idWZm ICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLA0KIAlpZiAodW5saWtlbHkobGVuID4gYi0+bWF4X3Nr YmxlbikpDQogCQliLT5tYXhfc2tibGVuID0gbGVuOw0KIA0KLQlpZiAocWRpc2NfcGt0X3NlZ3Mo c2tiKSA+IDEgJiYgcS0+cmF0ZV9mbGFncyAmIENBS0VfRkxBR19TUExJVF9HU08pIHsNCisJaWYg KHFkaXNjX3BrdF9zZWdzKHNrYikgPiAxICYmIHEtPmNvbmZpZy0+cmF0ZV9mbGFncyAmIENBS0Vf RkxBR19TUExJVF9HU08pIHsNCiAJCXN0cnVjdCBza19idWZmICpzZWdzLCAqbnNrYjsNCiAJCW5l dGRldl9mZWF0dXJlc190IGZlYXR1cmVzID0gbmV0aWZfc2tiX2ZlYXR1cmVzKHNrYik7DQogCQl1 bnNpZ25lZCBpbnQgc2xlbiA9IDAsIG51bXNlZ3MgPSAwOw0KQEAgLTE4MjMsNyArMTgyOCw3IEBA IHN0YXRpYyBzMzIgY2FrZV9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlz YyAqc2NoLA0KIAkJZ2V0X2NvYmFsdF9jYihza2IpLT5hZGp1c3RlZF9sZW4gPSBjYWtlX292ZXJo ZWFkKHEsIHNrYik7DQogCQlmbG93X3F1ZXVlX2FkZChmbG93LCBza2IpOw0KIA0KLQkJaWYgKHEt PmFja19maWx0ZXIpDQorCQlpZiAocS0+Y29uZmlnLT5hY2tfZmlsdGVyKQ0KIAkJCWFjayA9IGNh a2VfYWNrX2ZpbHRlcihxLCBmbG93KTsNCiANCiAJCWlmIChhY2spIHsNCkBAIC0xODMyLDcgKzE4 MzcsNyBAQCBzdGF0aWMgczMyIGNha2VfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1 Y3QgUWRpc2MgKnNjaCwNCiAJCQlhY2tfcGt0X2xlbiA9IHFkaXNjX3BrdF9sZW4oYWNrKTsNCiAJ CQliLT5ieXRlcyArPSBhY2tfcGt0X2xlbjsNCiAJCQlxLT5idWZmZXJfdXNlZCArPSBza2ItPnRy dWVzaXplIC0gYWNrLT50cnVlc2l6ZTsNCi0JCQlpZiAocS0+cmF0ZV9mbGFncyAmIENBS0VfRkxB R19JTkdSRVNTKQ0KKwkJCWlmIChxLT5jb25maWctPnJhdGVfZmxhZ3MgJiBDQUtFX0ZMQUdfSU5H UkVTUykNCiAJCQkJY2FrZV9hZHZhbmNlX3NoYXBlcihxLCBiLCBhY2ssIG5vdywgdHJ1ZSk7DQog DQogCQkJcWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZyhzY2gsIDEsIGFja19wa3RfbGVuKTsNCkBA IC0xODU1LDcgKzE4NjAsNyBAQCBzdGF0aWMgczMyIGNha2VfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwNCiAJCWNha2VfaGVhcGlmeV91cChxLCBiLT5vdmVy Zmxvd19pZHhbaWR4XSk7DQogDQogCS8qIGluY29taW5nIGJhbmR3aWR0aCBjYXBhY2l0eSBlc3Rp bWF0ZSAqLw0KLQlpZiAocS0+cmF0ZV9mbGFncyAmIENBS0VfRkxBR19BVVRPUkFURV9JTkdSRVNT KSB7DQorCWlmIChxLT5jb25maWctPnJhdGVfZmxhZ3MgJiBDQUtFX0ZMQUdfQVVUT1JBVEVfSU5H UkVTUykgew0KIAkJdTY0IHBhY2tldF9pbnRlcnZhbCA9IFwNCiAJCQlrdGltZV90b19ucyhrdGlt ZV9zdWIobm93LCBxLT5sYXN0X3BhY2tldF90aW1lKSk7DQogDQpAQCAtMTg4Nyw3ICsxODkyLDcg QEAgc3RhdGljIHMzMiBjYWtlX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFk aXNjICpzY2gsDQogCQkJaWYgKGt0aW1lX2FmdGVyKG5vdywNCiAJCQkJCWt0aW1lX2FkZF9tcyhx LT5sYXN0X3JlY29uZmlnX3RpbWUsDQogCQkJCQkJICAgICAyNTApKSkgew0KLQkJCQlxLT5yYXRl X2JwcyA9IChxLT5hdmdfcGVha19iYW5kd2lkdGggKiAxNSkgPj4gNDsNCisJCQkJcS0+Y29uZmln LT5yYXRlX2JwcyA9IChxLT5hdmdfcGVha19iYW5kd2lkdGggKiAxNSkgPj4gNDsNCiAJCQkJY2Fr ZV9yZWNvbmZpZ3VyZShzY2gpOw0KIAkJCX0NCiAJCX0NCkBAIC0xOTA3LDcgKzE5MTIsNyBAQCBz dGF0aWMgczMyIGNha2VfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2Mg KnNjaCwNCiAJCWZsb3ctPnNldCA9IENBS0VfU0VUX1NQQVJTRTsNCiAJCWItPnNwYXJzZV9mbG93 X2NvdW50Kys7DQogDQotCQlmbG93LT5kZWZpY2l0ID0gY2FrZV9nZXRfZmxvd19xdWFudHVtKGIs IGZsb3csIHEtPmZsb3dfbW9kZSk7DQorCQlmbG93LT5kZWZpY2l0ID0gY2FrZV9nZXRfZmxvd19x dWFudHVtKGIsIGZsb3csIHEtPmNvbmZpZy0+Zmxvd19tb2RlKTsNCiAJfSBlbHNlIGlmIChmbG93 LT5zZXQgPT0gQ0FLRV9TRVRfU1BBUlNFX1dBSVQpIHsNCiAJCS8qIHRoaXMgZmxvdyB3YXMgZW1w dHksIGFjY291bnRlZCBhcyBhIHNwYXJzZSBmbG93LCBidXQgYWN0dWFsbHkNCiAJCSAqIGluIHRo ZSBidWxrIHJvdGF0aW9uLg0KQEAgLTE5MTYsOCArMTkyMSw4IEBAIHN0YXRpYyBzMzIgY2FrZV9l bnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLA0KIAkJYi0+c3Bh cnNlX2Zsb3dfY291bnQtLTsNCiAJCWItPmJ1bGtfZmxvd19jb3VudCsrOw0KIA0KLQkJY2FrZV9p bmNfc3JjaG9zdF9idWxrX2Zsb3dfY291bnQoYiwgZmxvdywgcS0+Zmxvd19tb2RlKTsNCi0JCWNh a2VfaW5jX2RzdGhvc3RfYnVsa19mbG93X2NvdW50KGIsIGZsb3csIHEtPmZsb3dfbW9kZSk7DQor CQljYWtlX2luY19zcmNob3N0X2J1bGtfZmxvd19jb3VudChiLCBmbG93LCBxLT5jb25maWctPmZs b3dfbW9kZSk7DQorCQljYWtlX2luY19kc3Rob3N0X2J1bGtfZmxvd19jb3VudChiLCBmbG93LCBx LT5jb25maWctPmZsb3dfbW9kZSk7DQogCX0NCiANCiAJaWYgKHEtPmJ1ZmZlcl91c2VkID4gcS0+ YnVmZmVyX21heF91c2VkKQ0KQEAgLTIxMDQsOCArMjEwOSw4IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tf YnVmZiAqY2FrZV9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKQ0KIAkJCQliLT5zcGFyc2VfZmxv d19jb3VudC0tOw0KIAkJCQliLT5idWxrX2Zsb3dfY291bnQrKzsNCiANCi0JCQkJY2FrZV9pbmNf c3JjaG9zdF9idWxrX2Zsb3dfY291bnQoYiwgZmxvdywgcS0+Zmxvd19tb2RlKTsNCi0JCQkJY2Fr ZV9pbmNfZHN0aG9zdF9idWxrX2Zsb3dfY291bnQoYiwgZmxvdywgcS0+Zmxvd19tb2RlKTsNCisJ CQkJY2FrZV9pbmNfc3JjaG9zdF9idWxrX2Zsb3dfY291bnQoYiwgZmxvdywgcS0+Y29uZmlnLT5m bG93X21vZGUpOw0KKwkJCQljYWtlX2luY19kc3Rob3N0X2J1bGtfZmxvd19jb3VudChiLCBmbG93 LCBxLT5jb25maWctPmZsb3dfbW9kZSk7DQogDQogCQkJCWZsb3ctPnNldCA9IENBS0VfU0VUX0JV TEs7DQogCQkJfSBlbHNlIHsNCkBAIC0yMTE3LDcgKzIxMjIsNyBAQCBzdGF0aWMgc3RydWN0IHNr X2J1ZmYgKmNha2VfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAJCQl9DQogCQl9DQogDQot CQlmbG93LT5kZWZpY2l0ICs9IGNha2VfZ2V0X2Zsb3dfcXVhbnR1bShiLCBmbG93LCBxLT5mbG93 X21vZGUpOw0KKwkJZmxvdy0+ZGVmaWNpdCArPSBjYWtlX2dldF9mbG93X3F1YW50dW0oYiwgZmxv dywgcS0+Y29uZmlnLT5mbG93X21vZGUpOw0KIAkJbGlzdF9tb3ZlX3RhaWwoJmZsb3ctPmZsb3dj aGFpbiwgJmItPm9sZF9mbG93cyk7DQogDQogCQlnb3RvIHJldHJ5Ow0KQEAgLTIxNDEsOCArMjE0 Niw4IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY2FrZV9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAq c2NoKQ0KIAkJCQlpZiAoZmxvdy0+c2V0ID09IENBS0VfU0VUX0JVTEspIHsNCiAJCQkJCWItPmJ1 bGtfZmxvd19jb3VudC0tOw0KIA0KLQkJCQkJY2FrZV9kZWNfc3JjaG9zdF9idWxrX2Zsb3dfY291 bnQoYiwgZmxvdywgcS0+Zmxvd19tb2RlKTsNCi0JCQkJCWNha2VfZGVjX2RzdGhvc3RfYnVsa19m bG93X2NvdW50KGIsIGZsb3csIHEtPmZsb3dfbW9kZSk7DQorCQkJCQljYWtlX2RlY19zcmNob3N0 X2J1bGtfZmxvd19jb3VudChiLCBmbG93LCBxLT5jb25maWctPmZsb3dfbW9kZSk7DQorCQkJCQlj YWtlX2RlY19kc3Rob3N0X2J1bGtfZmxvd19jb3VudChiLCBmbG93LCBxLT5jb25maWctPmZsb3df bW9kZSk7DQogDQogCQkJCQliLT5kZWNheWluZ19mbG93X2NvdW50Kys7DQogCQkJCX0gZWxzZSBp ZiAoZmxvdy0+c2V0ID09IENBS0VfU0VUX1NQQVJTRSB8fA0KQEAgLTIxNjAsOCArMjE2NSw4IEBA IHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY2FrZV9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKQ0K IAkJCQllbHNlIGlmIChmbG93LT5zZXQgPT0gQ0FLRV9TRVRfQlVMSykgew0KIAkJCQkJYi0+YnVs a19mbG93X2NvdW50LS07DQogDQotCQkJCQljYWtlX2RlY19zcmNob3N0X2J1bGtfZmxvd19jb3Vu dChiLCBmbG93LCBxLT5mbG93X21vZGUpOw0KLQkJCQkJY2FrZV9kZWNfZHN0aG9zdF9idWxrX2Zs b3dfY291bnQoYiwgZmxvdywgcS0+Zmxvd19tb2RlKTsNCisJCQkJCWNha2VfZGVjX3NyY2hvc3Rf YnVsa19mbG93X2NvdW50KGIsIGZsb3csIHEtPmNvbmZpZy0+Zmxvd19tb2RlKTsNCisJCQkJCWNh a2VfZGVjX2RzdGhvc3RfYnVsa19mbG93X2NvdW50KGIsIGZsb3csIHEtPmNvbmZpZy0+Zmxvd19t b2RlKTsNCiAJCQkJfSBlbHNlDQogCQkJCQliLT5kZWNheWluZ19mbG93X2NvdW50LS07DQogDQpA QCAtMjE3MiwxNCArMjE3NywxNCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmNha2VfZGVxdWV1 ZShzdHJ1Y3QgUWRpc2MgKnNjaCkNCiANCiAJCXJlYXNvbiA9IGNvYmFsdF9zaG91bGRfZHJvcCgm Zmxvdy0+Y3ZhcnMsICZiLT5jcGFyYW1zLCBub3csIHNrYiwNCiAJCQkJCSAgICAoYi0+YnVsa19m bG93X2NvdW50ICoNCi0JCQkJCSAgICAgISEocS0+cmF0ZV9mbGFncyAmDQorCQkJCQkgICAgICEh KHEtPmNvbmZpZy0+cmF0ZV9mbGFncyAmDQogCQkJCQkJQ0FLRV9GTEFHX0lOR1JFU1MpKSk7DQog CQkvKiBMYXN0IHBhY2tldCBpbiBxdWV1ZSBtYXkgYmUgbWFya2VkLCBzaG91bGRuJ3QgYmUgZHJv cHBlZCAqLw0KIAkJaWYgKHJlYXNvbiA9PSBTS0JfTk9UX0RST1BQRURfWUVUIHx8ICFmbG93LT5o ZWFkKQ0KIAkJCWJyZWFrOw0KIA0KIAkJLyogZHJvcCB0aGlzIHBhY2tldCwgZ2V0IGFub3RoZXIg b25lICovDQotCQlpZiAocS0+cmF0ZV9mbGFncyAmIENBS0VfRkxBR19JTkdSRVNTKSB7DQorCQlp ZiAocS0+Y29uZmlnLT5yYXRlX2ZsYWdzICYgQ0FLRV9GTEFHX0lOR1JFU1MpIHsNCiAJCQlsZW4g PSBjYWtlX2FkdmFuY2Vfc2hhcGVyKHEsIGIsIHNrYiwNCiAJCQkJCQkgIG5vdywgdHJ1ZSk7DQog CQkJZmxvdy0+ZGVmaWNpdCAtPSBsZW47DQpAQCAtMjE5MCw3ICsyMTk1LDcgQEAgc3RhdGljIHN0 cnVjdCBza19idWZmICpjYWtlX2RlcXVldWUoc3RydWN0IFFkaXNjICpzY2gpDQogCQlxZGlzY190 cmVlX3JlZHVjZV9iYWNrbG9nKHNjaCwgMSwgcWRpc2NfcGt0X2xlbihza2IpKTsNCiAJCXFkaXNj X3FzdGF0c19kcm9wKHNjaCk7DQogCQlxZGlzY19kZXF1ZXVlX2Ryb3Aoc2NoLCBza2IsIHJlYXNv bik7DQotCQlpZiAocS0+cmF0ZV9mbGFncyAmIENBS0VfRkxBR19JTkdSRVNTKQ0KKwkJaWYgKHEt PmNvbmZpZy0+cmF0ZV9mbGFncyAmIENBS0VfRkxBR19JTkdSRVNTKQ0KIAkJCWdvdG8gcmV0cnk7 DQogCX0NCiANCkBAIC0yMzEyLDcgKzIzMTcsNyBAQCBzdGF0aWMgaW50IGNha2VfY29uZmlnX2Jl c3RlZmZvcnQoc3RydWN0IFFkaXNjICpzY2gpDQogCXN0cnVjdCBjYWtlX3NjaGVkX2RhdGEgKnEg PSBxZGlzY19wcml2KHNjaCk7DQogCXN0cnVjdCBjYWtlX3Rpbl9kYXRhICpiID0gJnEtPnRpbnNb MF07DQogCXUzMiBtdHUgPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTsNCi0JdTY0IHJhdGUg PSBxLT5yYXRlX2JwczsNCisJdTY0IHJhdGUgPSBxLT5jb25maWctPnJhdGVfYnBzOw0KIA0KIAlx LT50aW5fY250ID0gMTsNCiANCkBAIC0yMzIwLDcgKzIzMjUsNyBAQCBzdGF0aWMgaW50IGNha2Vf Y29uZmlnX2Jlc3RlZmZvcnQoc3RydWN0IFFkaXNjICpzY2gpDQogCXEtPnRpbl9vcmRlciA9IG5v cm1hbF9vcmRlcjsNCiANCiAJY2FrZV9zZXRfcmF0ZShiLCByYXRlLCBtdHUsDQotCQkgICAgICB1 c190b19ucyhxLT50YXJnZXQpLCB1c190b19ucyhxLT5pbnRlcnZhbCkpOw0KKwkJICAgICAgdXNf dG9fbnMocS0+Y29uZmlnLT50YXJnZXQpLCB1c190b19ucyhxLT5jb25maWctPmludGVydmFsKSk7 DQogCWItPnRpbl9xdWFudHVtID0gNjU1MzU7DQogDQogCXJldHVybiAwOw0KQEAgLTIzMzEsNyAr MjMzNiw3IEBAIHN0YXRpYyBpbnQgY2FrZV9jb25maWdfcHJlY2VkZW5jZShzdHJ1Y3QgUWRpc2Mg KnNjaCkNCiAJLyogY29udmVydCBoaWdoLWxldmVsICh1c2VyIHZpc2libGUpIHBhcmFtZXRlcnMg aW50byBpbnRlcm5hbCBmb3JtYXQgKi8NCiAJc3RydWN0IGNha2Vfc2NoZWRfZGF0YSAqcSA9IHFk aXNjX3ByaXYoc2NoKTsNCiAJdTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpOw0K LQl1NjQgcmF0ZSA9IHEtPnJhdGVfYnBzOw0KKwl1NjQgcmF0ZSA9IHEtPmNvbmZpZy0+cmF0ZV9i cHM7DQogCXUzMiBxdWFudHVtID0gMjU2Ow0KIAl1MzIgaTsNCiANCkBAIC0yMzQyLDggKzIzNDcs OCBAQCBzdGF0aWMgaW50IGNha2VfY29uZmlnX3ByZWNlZGVuY2Uoc3RydWN0IFFkaXNjICpzY2gp DQogCWZvciAoaSA9IDA7IGkgPCBxLT50aW5fY250OyBpKyspIHsNCiAJCXN0cnVjdCBjYWtlX3Rp bl9kYXRhICpiID0gJnEtPnRpbnNbaV07DQogDQotCQljYWtlX3NldF9yYXRlKGIsIHJhdGUsIG10 dSwgdXNfdG9fbnMocS0+dGFyZ2V0KSwNCi0JCQkgICAgICB1c190b19ucyhxLT5pbnRlcnZhbCkp Ow0KKwkJY2FrZV9zZXRfcmF0ZShiLCByYXRlLCBtdHUsIHVzX3RvX25zKHEtPmNvbmZpZy0+dGFy Z2V0KSwNCisJCQkgICAgICB1c190b19ucyhxLT5jb25maWctPmludGVydmFsKSk7DQogDQogCQli LT50aW5fcXVhbnR1bSA9IG1heF90KHUxNiwgMVUsIHF1YW50dW0pOw0KIA0KQEAgLTI0MjAsNyAr MjQyNSw3IEBAIHN0YXRpYyBpbnQgY2FrZV9jb25maWdfZGlmZnNlcnY4KHN0cnVjdCBRZGlzYyAq c2NoKQ0KIA0KIAlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpOw0K IAl1MzIgbXR1ID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7DQotCXU2NCByYXRlID0gcS0+ cmF0ZV9icHM7DQorCXU2NCByYXRlID0gcS0+Y29uZmlnLT5yYXRlX2JwczsNCiAJdTMyIHF1YW50 dW0gPSAyNTY7DQogCXUzMiBpOw0KIA0KQEAgLTI0MzQsOCArMjQzOSw4IEBAIHN0YXRpYyBpbnQg Y2FrZV9jb25maWdfZGlmZnNlcnY4KHN0cnVjdCBRZGlzYyAqc2NoKQ0KIAlmb3IgKGkgPSAwOyBp IDwgcS0+dGluX2NudDsgaSsrKSB7DQogCQlzdHJ1Y3QgY2FrZV90aW5fZGF0YSAqYiA9ICZxLT50 aW5zW2ldOw0KIA0KLQkJY2FrZV9zZXRfcmF0ZShiLCByYXRlLCBtdHUsIHVzX3RvX25zKHEtPnRh cmdldCksDQotCQkJICAgICAgdXNfdG9fbnMocS0+aW50ZXJ2YWwpKTsNCisJCWNha2Vfc2V0X3Jh dGUoYiwgcmF0ZSwgbXR1LCB1c190b19ucyhxLT5jb25maWctPnRhcmdldCksDQorCQkJICAgICAg dXNfdG9fbnMocS0+Y29uZmlnLT5pbnRlcnZhbCkpOw0KIA0KIAkJYi0+dGluX3F1YW50dW0gPSBt YXhfdCh1MTYsIDFVLCBxdWFudHVtKTsNCiANCkBAIC0yNDY0LDcgKzI0NjksNyBAQCBzdGF0aWMg aW50IGNha2VfY29uZmlnX2RpZmZzZXJ2NChzdHJ1Y3QgUWRpc2MgKnNjaCkNCiANCiAJc3RydWN0 IGNha2Vfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTsNCiAJdTMyIG10dSA9IHBzY2hl ZF9tdHUocWRpc2NfZGV2KHNjaCkpOw0KLQl1NjQgcmF0ZSA9IHEtPnJhdGVfYnBzOw0KKwl1NjQg cmF0ZSA9IHEtPmNvbmZpZy0+cmF0ZV9icHM7DQogCXUzMiBxdWFudHVtID0gMTAyNDsNCiANCiAJ cS0+dGluX2NudCA9IDQ7DQpAQCAtMjQ3NSwxMyArMjQ4MCwxMyBAQCBzdGF0aWMgaW50IGNha2Vf Y29uZmlnX2RpZmZzZXJ2NChzdHJ1Y3QgUWRpc2MgKnNjaCkNCiANCiAJLyogY2xhc3MgY2hhcmFj dGVyaXN0aWNzICovDQogCWNha2Vfc2V0X3JhdGUoJnEtPnRpbnNbMF0sIHJhdGUsIG10dSwNCi0J CSAgICAgIHVzX3RvX25zKHEtPnRhcmdldCksIHVzX3RvX25zKHEtPmludGVydmFsKSk7DQorCQkg ICAgICB1c190b19ucyhxLT5jb25maWctPnRhcmdldCksIHVzX3RvX25zKHEtPmNvbmZpZy0+aW50 ZXJ2YWwpKTsNCiAJY2FrZV9zZXRfcmF0ZSgmcS0+dGluc1sxXSwgcmF0ZSA+PiA0LCBtdHUsDQot CQkgICAgICB1c190b19ucyhxLT50YXJnZXQpLCB1c190b19ucyhxLT5pbnRlcnZhbCkpOw0KKwkJ ICAgICAgdXNfdG9fbnMocS0+Y29uZmlnLT50YXJnZXQpLCB1c190b19ucyhxLT5jb25maWctPmlu dGVydmFsKSk7DQogCWNha2Vfc2V0X3JhdGUoJnEtPnRpbnNbMl0sIHJhdGUgPj4gMSwgbXR1LA0K LQkJICAgICAgdXNfdG9fbnMocS0+dGFyZ2V0KSwgdXNfdG9fbnMocS0+aW50ZXJ2YWwpKTsNCisJ CSAgICAgIHVzX3RvX25zKHEtPmNvbmZpZy0+dGFyZ2V0KSwgdXNfdG9fbnMocS0+Y29uZmlnLT5p bnRlcnZhbCkpOw0KIAljYWtlX3NldF9yYXRlKCZxLT50aW5zWzNdLCByYXRlID4+IDIsIG10dSwN Ci0JCSAgICAgIHVzX3RvX25zKHEtPnRhcmdldCksIHVzX3RvX25zKHEtPmludGVydmFsKSk7DQor CQkgICAgICB1c190b19ucyhxLT5jb25maWctPnRhcmdldCksIHVzX3RvX25zKHEtPmNvbmZpZy0+ aW50ZXJ2YWwpKTsNCiANCiAJLyogYmFuZHdpZHRoLXNoYXJpbmcgd2VpZ2h0cyAqLw0KIAlxLT50 aW5zWzBdLnRpbl9xdWFudHVtID0gcXVhbnR1bTsNCkBAIC0yNTAxLDcgKzI1MDYsNyBAQCBzdGF0 aWMgaW50IGNha2VfY29uZmlnX2RpZmZzZXJ2MyhzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAgKi8NCiAJ c3RydWN0IGNha2Vfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTsNCiAJdTMyIG10dSA9 IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpOw0KLQl1NjQgcmF0ZSA9IHEtPnJhdGVfYnBzOw0K Kwl1NjQgcmF0ZSA9IHEtPmNvbmZpZy0+cmF0ZV9icHM7DQogCXUzMiBxdWFudHVtID0gMTAyNDsN CiANCiAJcS0+dGluX2NudCA9IDM7DQpAQCAtMjUxMiwxMSArMjUxNywxMSBAQCBzdGF0aWMgaW50 IGNha2VfY29uZmlnX2RpZmZzZXJ2MyhzdHJ1Y3QgUWRpc2MgKnNjaCkNCiANCiAJLyogY2xhc3Mg Y2hhcmFjdGVyaXN0aWNzICovDQogCWNha2Vfc2V0X3JhdGUoJnEtPnRpbnNbMF0sIHJhdGUsIG10 dSwNCi0JCSAgICAgIHVzX3RvX25zKHEtPnRhcmdldCksIHVzX3RvX25zKHEtPmludGVydmFsKSk7 DQorCQkgICAgICB1c190b19ucyhxLT5jb25maWctPnRhcmdldCksIHVzX3RvX25zKHEtPmNvbmZp Zy0+aW50ZXJ2YWwpKTsNCiAJY2FrZV9zZXRfcmF0ZSgmcS0+dGluc1sxXSwgcmF0ZSA+PiA0LCBt dHUsDQotCQkgICAgICB1c190b19ucyhxLT50YXJnZXQpLCB1c190b19ucyhxLT5pbnRlcnZhbCkp Ow0KKwkJICAgICAgdXNfdG9fbnMocS0+Y29uZmlnLT50YXJnZXQpLCB1c190b19ucyhxLT5jb25m aWctPmludGVydmFsKSk7DQogCWNha2Vfc2V0X3JhdGUoJnEtPnRpbnNbMl0sIHJhdGUgPj4gMiwg bXR1LA0KLQkJICAgICAgdXNfdG9fbnMocS0+dGFyZ2V0KSwgdXNfdG9fbnMocS0+aW50ZXJ2YWwp KTsNCisJCSAgICAgIHVzX3RvX25zKHEtPmNvbmZpZy0+dGFyZ2V0KSwgdXNfdG9fbnMocS0+Y29u ZmlnLT5pbnRlcnZhbCkpOw0KIA0KIAkvKiBiYW5kd2lkdGgtc2hhcmluZyB3ZWlnaHRzICovDQog CXEtPnRpbnNbMF0udGluX3F1YW50dW0gPSBxdWFudHVtOw0KQEAgLTI1MjgsNyArMjUzMyw4IEBA IHN0YXRpYyBpbnQgY2FrZV9jb25maWdfZGlmZnNlcnYzKHN0cnVjdCBRZGlzYyAqc2NoKQ0KIA0K IHN0YXRpYyB2b2lkIGNha2VfcmVjb25maWd1cmUoc3RydWN0IFFkaXNjICpzY2gpDQogew0KLQlz dHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3QgY2Fr ZV9zY2hlZF9kYXRhICpxZCA9IHFkaXNjX3ByaXYoc2NoKTsNCisJc3RydWN0IGNha2Vfc2NoZWRf Y29uZmlnICpxID0gcWQtPmNvbmZpZzsNCiAJaW50IGMsIGZ0Ow0KIA0KIAlzd2l0Y2ggKHEtPnRp bl9tb2RlKSB7DQpAQCAtMjU1NCwzNiArMjU2MCwzNyBAQCBzdGF0aWMgdm9pZCBjYWtlX3JlY29u ZmlndXJlKHN0cnVjdCBRZGlzYyAqc2NoKQ0KIAkJYnJlYWs7DQogCX0NCiANCi0JZm9yIChjID0g cS0+dGluX2NudDsgYyA8IENBS0VfTUFYX1RJTlM7IGMrKykgew0KKwlmb3IgKGMgPSBxZC0+dGlu X2NudDsgYyA8IENBS0VfTUFYX1RJTlM7IGMrKykgew0KIAkJY2FrZV9jbGVhcl90aW4oc2NoLCBj KTsNCi0JCXEtPnRpbnNbY10uY3BhcmFtcy5tdHVfdGltZSA9IHEtPnRpbnNbZnRdLmNwYXJhbXMu bXR1X3RpbWU7DQorCQlxZC0+dGluc1tjXS5jcGFyYW1zLm10dV90aW1lID0gcWQtPnRpbnNbZnRd LmNwYXJhbXMubXR1X3RpbWU7DQogCX0NCiANCi0JcS0+cmF0ZV9ucyAgID0gcS0+dGluc1tmdF0u dGluX3JhdGVfbnM7DQotCXEtPnJhdGVfc2hmdCA9IHEtPnRpbnNbZnRdLnRpbl9yYXRlX3NoZnQ7 DQorCXFkLT5yYXRlX25zICAgPSBxZC0+dGluc1tmdF0udGluX3JhdGVfbnM7DQorCXFkLT5yYXRl X3NoZnQgPSBxZC0+dGluc1tmdF0udGluX3JhdGVfc2hmdDsNCiANCiAJaWYgKHEtPmJ1ZmZlcl9j b25maWdfbGltaXQpIHsNCi0JCXEtPmJ1ZmZlcl9saW1pdCA9IHEtPmJ1ZmZlcl9jb25maWdfbGlt aXQ7DQorCQlxZC0+YnVmZmVyX2xpbWl0ID0gcS0+YnVmZmVyX2NvbmZpZ19saW1pdDsNCiAJfSBl bHNlIGlmIChxLT5yYXRlX2Jwcykgew0KIAkJdTY0IHQgPSBxLT5yYXRlX2JwcyAqIHEtPmludGVy dmFsOw0KIA0KIAkJZG9fZGl2KHQsIFVTRUNfUEVSX1NFQyAvIDQpOw0KLQkJcS0+YnVmZmVyX2xp bWl0ID0gbWF4X3QodTMyLCB0LCA0VSA8PCAyMCk7DQorCQlxZC0+YnVmZmVyX2xpbWl0ID0gbWF4 X3QodTMyLCB0LCA0VSA8PCAyMCk7DQogCX0gZWxzZSB7DQotCQlxLT5idWZmZXJfbGltaXQgPSB+ MDsNCisJCXFkLT5idWZmZXJfbGltaXQgPSB+MDsNCiAJfQ0KIA0KIAlzY2gtPmZsYWdzICY9IH5U Q1FfRl9DQU5fQllQQVNTOw0KIA0KLQlxLT5idWZmZXJfbGltaXQgPSBtaW4ocS0+YnVmZmVyX2xp bWl0LA0KLQkJCSAgICAgIG1heChzY2gtPmxpbWl0ICogcHNjaGVkX210dShxZGlzY19kZXYoc2No KSksDQotCQkJCSAgcS0+YnVmZmVyX2NvbmZpZ19saW1pdCkpOw0KKwlxZC0+YnVmZmVyX2xpbWl0 ID0gbWluKHFkLT5idWZmZXJfbGltaXQsDQorCQkJICAgICAgIG1heChzY2gtPmxpbWl0ICogcHNj aGVkX210dShxZGlzY19kZXYoc2NoKSksDQorCQkJCSAgIHEtPmJ1ZmZlcl9jb25maWdfbGltaXQp KTsNCiB9DQogDQogc3RhdGljIGludCBjYWtlX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3Ry dWN0IG5sYXR0ciAqb3B0LA0KIAkJICAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFj aykNCiB7DQotCXN0cnVjdCBjYWtlX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7DQor CXN0cnVjdCBjYWtlX3NjaGVkX2RhdGEgKnFkID0gcWRpc2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3Qg Y2FrZV9zY2hlZF9jb25maWcgKnEgPSBxZC0+Y29uZmlnOw0KIAlzdHJ1Y3QgbmxhdHRyICp0YltU Q0FfQ0FLRV9NQVggKyAxXTsNCiAJdTE2IHJhdGVfZmxhZ3M7DQogCXU4IGZsb3dfbW9kZTsNCkBA IC0yNjM3LDE5ICsyNjQ0LDE5IEBAIHN0YXRpYyBpbnQgY2FrZV9jaGFuZ2Uoc3RydWN0IFFkaXNj ICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwNCiAJCQkgICBubGFfZ2V0X3MzMih0YltUQ0FfQ0FL RV9PVkVSSEVBRF0pKTsNCiAJCXJhdGVfZmxhZ3MgfD0gQ0FLRV9GTEFHX09WRVJIRUFEOw0KIA0K LQkJcS0+bWF4X25ldGxlbiA9IDA7DQotCQlxLT5tYXhfYWRqbGVuID0gMDsNCi0JCXEtPm1pbl9u ZXRsZW4gPSB+MDsNCi0JCXEtPm1pbl9hZGpsZW4gPSB+MDsNCisJCXFkLT5tYXhfbmV0bGVuID0g MDsNCisJCXFkLT5tYXhfYWRqbGVuID0gMDsNCisJCXFkLT5taW5fbmV0bGVuID0gfjA7DQorCQlx ZC0+bWluX2FkamxlbiA9IH4wOw0KIAl9DQogDQogCWlmICh0YltUQ0FfQ0FLRV9SQVddKSB7DQog CQlyYXRlX2ZsYWdzICY9IH5DQUtFX0ZMQUdfT1ZFUkhFQUQ7DQogDQotCQlxLT5tYXhfbmV0bGVu ID0gMDsNCi0JCXEtPm1heF9hZGpsZW4gPSAwOw0KLQkJcS0+bWluX25ldGxlbiA9IH4wOw0KLQkJ cS0+bWluX2FkamxlbiA9IH4wOw0KKwkJcWQtPm1heF9uZXRsZW4gPSAwOw0KKwkJcWQtPm1heF9h ZGpsZW4gPSAwOw0KKwkJcWQtPm1pbl9uZXRsZW4gPSB+MDsNCisJCXFkLT5taW5fYWRqbGVuID0g fjA7DQogCX0NCiANCiAJaWYgKHRiW1RDQV9DQUtFX01QVV0pDQpAQCAtMjcwNSw3ICsyNzEyLDcg QEAgc3RhdGljIGludCBjYWtlX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0 ciAqb3B0LA0KIA0KIAlXUklURV9PTkNFKHEtPnJhdGVfZmxhZ3MsIHJhdGVfZmxhZ3MpOw0KIAlX UklURV9PTkNFKHEtPmZsb3dfbW9kZSwgZmxvd19tb2RlKTsNCi0JaWYgKHEtPnRpbnMpIHsNCisJ aWYgKHFkLT50aW5zKSB7DQogCQlzY2hfdHJlZV9sb2NrKHNjaCk7DQogCQljYWtlX3JlY29uZmln dXJlKHNjaCk7DQogCQlzY2hfdHJlZV91bmxvY2soc2NoKTsNCkBAIC0yNzIxLDE0ICsyNzI4LDIw IEBAIHN0YXRpYyB2b2lkIGNha2VfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaCkNCiAJcWRpc2Nf d2F0Y2hkb2dfY2FuY2VsKCZxLT53YXRjaGRvZyk7DQogCXRjZl9ibG9ja19wdXQocS0+YmxvY2sp Ow0KIAlrdmZyZWUocS0+dGlucyk7DQorCWt2ZnJlZShxLT5jb25maWcpOw0KIH0NCiANCiBzdGF0 aWMgaW50IGNha2VfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LA0K IAkJICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spDQogew0KLQlzdHJ1Y3QgY2Fr ZV9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9k YXRhICpxZCA9IHFkaXNjX3ByaXYoc2NoKTsNCisJc3RydWN0IGNha2Vfc2NoZWRfY29uZmlnICpx Ow0KIAlpbnQgaSwgaiwgZXJyOw0KIA0KKwlxID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGNha2Vf c2NoZWRfY29uZmlnKSwgR0ZQX0tFUk5FTCk7DQorCWlmICghcSkNCisJCXJldHVybiAtRU5PTUVN Ow0KKw0KIAlzY2gtPmxpbWl0ID0gMTAyNDA7DQogCXNjaC0+ZmxhZ3MgfD0gVENRX0ZfREVRVUVV RV9EUk9QUzsNCiANCkBAIC0yNzQyLDMzICsyNzU1LDM2IEBAIHN0YXRpYyBpbnQgY2FrZV9pbml0 KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsDQogCQkJICAgICAgICogZm9y IDUgdG8gMTAlIG9mIGludGVydmFsDQogCQkJICAgICAgICovDQogCXEtPnJhdGVfZmxhZ3MgfD0g Q0FLRV9GTEFHX1NQTElUX0dTTzsNCi0JcS0+Y3VyX3RpbiA9IDA7DQotCXEtPmN1cl9mbG93ICA9 IDA7DQorCXFkLT5jdXJfdGluID0gMDsNCisJcWQtPmN1cl9mbG93ICA9IDA7DQorCXFkLT5jb25m aWcgPSBxOw0KIA0KLQlxZGlzY193YXRjaGRvZ19pbml0KCZxLT53YXRjaGRvZywgc2NoKTsNCisJ cWRpc2Nfd2F0Y2hkb2dfaW5pdCgmcWQtPndhdGNoZG9nLCBzY2gpOw0KIA0KIAlpZiAob3B0KSB7 DQogCQllcnIgPSBjYWtlX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTsNCiANCiAJCWlmIChlcnIp DQotCQkJcmV0dXJuIGVycjsNCisJCQlnb3RvIGVycjsNCiAJfQ0KIA0KLQllcnIgPSB0Y2ZfYmxv Y2tfZ2V0KCZxLT5ibG9jaywgJnEtPmZpbHRlcl9saXN0LCBzY2gsIGV4dGFjayk7DQorCWVyciA9 IHRjZl9ibG9ja19nZXQoJnFkLT5ibG9jaywgJnFkLT5maWx0ZXJfbGlzdCwgc2NoLCBleHRhY2sp Ow0KIAlpZiAoZXJyKQ0KLQkJcmV0dXJuIGVycjsNCisJCWdvdG8gZXJyOw0KIA0KIAlxdWFudHVt X2RpdlswXSA9IH4wOw0KIAlmb3IgKGkgPSAxOyBpIDw9IENBS0VfUVVFVUVTOyBpKyspDQogCQlx dWFudHVtX2RpdltpXSA9IDY1NTM1IC8gaTsNCiANCi0JcS0+dGlucyA9IGt2Y2FsbG9jKENBS0Vf TUFYX1RJTlMsIHNpemVvZihzdHJ1Y3QgY2FrZV90aW5fZGF0YSksDQotCQkJICAgR0ZQX0tFUk5F TCk7DQotCWlmICghcS0+dGlucykNCi0JCXJldHVybiAtRU5PTUVNOw0KKwlxZC0+dGlucyA9IGt2 Y2FsbG9jKENBS0VfTUFYX1RJTlMsIHNpemVvZihzdHJ1Y3QgY2FrZV90aW5fZGF0YSksDQorCQkJ ICAgIEdGUF9LRVJORUwpOw0KKwlpZiAoIXFkLT50aW5zKSB7DQorCQllcnIgPSAtRU5PTUVNOw0K KwkJZ290byBlcnI7DQorCX0NCiANCiAJZm9yIChpID0gMDsgaSA8IENBS0VfTUFYX1RJTlM7IGkr Kykgew0KLQkJc3RydWN0IGNha2VfdGluX2RhdGEgKmIgPSBxLT50aW5zICsgaTsNCisJCXN0cnVj dCBjYWtlX3Rpbl9kYXRhICpiID0gcWQtPnRpbnMgKyBpOw0KIA0KIAkJSU5JVF9MSVNUX0hFQUQo JmItPm5ld19mbG93cyk7DQogCQlJTklUX0xJU1RfSEVBRCgmYi0+b2xkX2Zsb3dzKTsNCkBAIC0y Nzg0LDIyICsyODAwLDI3IEBAIHN0YXRpYyBpbnQgY2FrZV9pbml0KHN0cnVjdCBRZGlzYyAqc2No LCBzdHJ1Y3QgbmxhdHRyICpvcHQsDQogCQkJSU5JVF9MSVNUX0hFQUQoJmZsb3ctPmZsb3djaGFp bik7DQogCQkJY29iYWx0X3ZhcnNfaW5pdCgmZmxvdy0+Y3ZhcnMpOw0KIA0KLQkJCXEtPm92ZXJm bG93X2hlYXBba10udCA9IGk7DQotCQkJcS0+b3ZlcmZsb3dfaGVhcFtrXS5iID0gajsNCisJCQlx ZC0+b3ZlcmZsb3dfaGVhcFtrXS50ID0gaTsNCisJCQlxZC0+b3ZlcmZsb3dfaGVhcFtrXS5iID0g ajsNCiAJCQliLT5vdmVyZmxvd19pZHhbal0gPSBrOw0KIAkJfQ0KIAl9DQogDQogCWNha2VfcmVj b25maWd1cmUoc2NoKTsNCi0JcS0+YXZnX3BlYWtfYmFuZHdpZHRoID0gcS0+cmF0ZV9icHM7DQot CXEtPm1pbl9uZXRsZW4gPSB+MDsNCi0JcS0+bWluX2FkamxlbiA9IH4wOw0KKwlxZC0+YXZnX3Bl YWtfYmFuZHdpZHRoID0gcS0+cmF0ZV9icHM7DQorCXFkLT5taW5fbmV0bGVuID0gfjA7DQorCXFk LT5taW5fYWRqbGVuID0gfjA7DQogCXJldHVybiAwOw0KK2VycjoNCisJa3ZmcmVlKHFkLT5jb25m aWcpOw0KKwlxZC0+Y29uZmlnID0gTlVMTDsNCisJcmV0dXJuIGVycjsNCiB9DQogDQogc3RhdGlj IGludCBjYWtlX2R1bXAoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBza19idWZmICpza2IpDQog ew0KLQlzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpOw0KKwlzdHJ1 Y3QgY2FrZV9zY2hlZF9kYXRhICpxZCA9IHFkaXNjX3ByaXYoc2NoKTsNCisJc3RydWN0IGNha2Vf c2NoZWRfY29uZmlnICpxID0gcWQtPmNvbmZpZzsNCiAJc3RydWN0IG5sYXR0ciAqb3B0czsNCiAJ dTE2IHJhdGVfZmxhZ3M7DQogCXU4IGZsb3dfbW9kZTsNCg0KLS0gDQoyLjUyLjANCg0K