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 2446BB8AB87 for ; Fri, 09 Jan 2026 14:15:47 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767964545; 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=MHOXD3gRytM9tmM6ObKGPsUiZVLAOfwdEmtk1pMBU5o=; b=geY11hdUZAnAqi7cmFctOMRdqhecP+sDjJh8KfW62NaJtO0qURV2i7h6c4fE9xKlSDSQzv ujGNrgyBExF8z6tQF/jYpcWlpcOYeR3MgE15bfzbVGJ6ZfxHmTxn8jjCs1Zs6oRsqRrzxu GyT9JuKH6UgEC7hzmD+Au+B3CM4milI= Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-10-l6lTRhtpMaCe16D0DEFzMw-1; Fri, 09 Jan 2026 08:15:43 -0500 X-MC-Unique: l6lTRhtpMaCe16D0DEFzMw-1 X-Mimecast-MFC-AGG-ID: l6lTRhtpMaCe16D0DEFzMw_1767964542 Received: by mail-ed1-f70.google.com with SMTP id 4fb4d7f45d1cf-64b950a73bdso6949198a12.1 for ; Fri, 09 Jan 2026 05:15:43 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767964542; x=1768569342; 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=MHOXD3gRytM9tmM6ObKGPsUiZVLAOfwdEmtk1pMBU5o=; b=xDhqsj2R5Xvk2DCkOiCDukGT5BLB5SrUL6/vfbiDg9aPFMQ8O8Db9IM2cyN4j//HQ4 ozUevWyEx5OsZ4opVoeMo0t+6pt9GDW7iPmHMx7b9VxVrdLFf2QKWcb3E9puQo+SG6oj mmuj0KyNDMh2IRV5/DeLvOV0UASFPvTFw/txlHStYoyWdj4v0JiFpQ8q4EkswVe+R8BW QiQfzfomexwiDL+hAx+kZL5flwf18r2EgkGSEgDYVifuytlPwmoqJegObcJlNc7Qsho0 AbQ6QWjk7vyLwChbagE4chDNQ0ax50eAQCfVzLUx20IelTWlEtWuq1WR5yHLUVrC0DnL B8PQ== X-Forwarded-Encrypted: i=1; AJvYcCWAlRTUz2Swcks3GEWE64VwQqhKC1avN567zuA9t2qDtzpP1owo5jX5ZJVGxR64Df7NHSg3@lists.bufferbloat.net X-Gm-Message-State: AOJu0Yx/RCXAayKk2awsso2hzc0AvfukZnF3tWftsx1EcOBuzD2zrqZC 6nLDZ4amank5MPZxz2lvU0Kz8ierNtHvHkp1U1fC0NIRMWMKhR0ujwRhbn3qIDJTnoYQc1FQWgm sZXeuduIFzQOuXAuImxIo8Zp6BZwwHeVD/WJt2BPleylZqbZ0gq8G3jkkrEvjHTg= X-Gm-Gg: AY/fxX5y+2Ihf5K84TT3gm2MXzH7nma8wanwaHKqN+7mqsVd7CDoTjF+SPcwi6ivL7t X+/S9Ai++gUzHKJYBspua/yyieJ2DcIBILfXgSiQlwuxaNHr3dr2Tf3FYR+MMf6Epd/BUTddaOn pm3GqhDXfAF7P1r/j3prj5+TieP9Sw/coB3BmtIqHIdtZ3E6yrZpatsf1hmWVc4/XgxNhAo/oPs KuDNjUJtD0JnDP6QBPbNf5VlIWlDG3X9oy4BMy9yGiMZYrwDYZmvAzt1EWdC5+Rpy3UI82PslA/ jZGGWqjhb2udFvAXaWaQEGrQBtNjC8An9U6NS0BPZYtGyxOEv6PpK9Bb+OGyZRv4ABUjKSsxXwO TdKHIGQaf3rHuo8Xg5wvwK1rKIgWkGHwtXojB X-Received: by 2002:a17:907:705:b0:b83:73ee:9dc0 with SMTP id a640c23a62f3a-b8445177102mr902392366b.65.1767964542108; Fri, 09 Jan 2026 05:15:42 -0800 (PST) X-Google-Smtp-Source: AGHT+IGJXUkxBxkMZ4/8aoILHslRiHSa4SLX5kTmbANi9CxEWhEiarYvLoGrymwSkpKQDKvjcEtr5w== X-Received: by 2002:a17:907:705:b0:b83:73ee:9dc0 with SMTP id a640c23a62f3a-b8445177102mr902388566b.65.1767964541534; Fri, 09 Jan 2026 05:15:41 -0800 (PST) Received: from alrua-x1.borgediget.toke.dk (alrua-x1.borgediget.toke.dk. [2a0c:4d80:42:443::2]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b842a27bfcasm1138435866b.21.2026.01.09.05.15.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jan 2026 05:15:38 -0800 (PST) Received: by alrua-x1.borgediget.toke.dk (Postfix, from userid 1000) id 24E2C40862F; Fri, 09 Jan 2026 14:15:38 +0100 (CET) From: =?utf-8?q?Toke_H=C3=B8iland-J=C3=B8rgensen?= Date: Fri, 09 Jan 2026 14:15:31 +0100 MIME-Version: 1.0 Message-Id: <20260109-mq-cake-sub-qdisc-v8-2-8d613fece5d8@redhat.com> References: <20260109-mq-cake-sub-qdisc-v8-0-8d613fece5d8@redhat.com> In-Reply-To: <20260109-mq-cake-sub-qdisc-v8-0-8d613fece5d8@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: ZDc0kXnnYtVokAa1SlL7nvh5ecr1ULD3CXwORupPlek_1767964542 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-ID-Hash: GH6LCAPUE2PMGLTSH6RRR2PIRFXP6FYN X-Message-ID-Hash: GH6LCAPUE2PMGLTSH6RRR2PIRFXP6FYN 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 v8 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 L3NjaF9jYWtlLmMNCmluZGV4IDRhNjRkNjM5N2I2Zi4uODE3MTY3NGIxNjBkIDEwMDY0NA0KLS0t 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 Ow0KIAlpbnQgaSwgaiwgZXJyOw0KIA0KKwlxID0ga3phbGxvYyhzaXplb2YoKnEpLCBHRlBfS0VS TkVMKTsNCisJaWYgKCFxKQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQogCXNjaC0+bGltaXQgPSAx MDI0MDsNCiAJc2NoLT5mbGFncyB8PSBUQ1FfRl9ERVFVRVVFX0RST1BTOw0KIA0KQEAgLTI3NDIs MzMgKzI3NTUsMzYgQEAgc3RhdGljIGludCBjYWtlX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0 cnVjdCBubGF0dHIgKm9wdCwNCiAJCQkgICAgICAgKiBmb3IgNSB0byAxMCUgb2YgaW50ZXJ2YWwN CiAJCQkgICAgICAgKi8NCiAJcS0+cmF0ZV9mbGFncyB8PSBDQUtFX0ZMQUdfU1BMSVRfR1NPOw0K LQlxLT5jdXJfdGluID0gMDsNCi0JcS0+Y3VyX2Zsb3cgID0gMDsNCisJcWQtPmN1cl90aW4gPSAw Ow0KKwlxZC0+Y3VyX2Zsb3cgID0gMDsNCisJcWQtPmNvbmZpZyA9IHE7DQogDQotCXFkaXNjX3dh dGNoZG9nX2luaXQoJnEtPndhdGNoZG9nLCBzY2gpOw0KKwlxZGlzY193YXRjaGRvZ19pbml0KCZx ZC0+d2F0Y2hkb2csIHNjaCk7DQogDQogCWlmIChvcHQpIHsNCiAJCWVyciA9IGNha2VfY2hhbmdl KHNjaCwgb3B0LCBleHRhY2spOw0KIA0KIAkJaWYgKGVycikNCi0JCQlyZXR1cm4gZXJyOw0KKwkJ CWdvdG8gZXJyOw0KIAl9DQogDQotCWVyciA9IHRjZl9ibG9ja19nZXQoJnEtPmJsb2NrLCAmcS0+ ZmlsdGVyX2xpc3QsIHNjaCwgZXh0YWNrKTsNCisJZXJyID0gdGNmX2Jsb2NrX2dldCgmcWQtPmJs b2NrLCAmcWQtPmZpbHRlcl9saXN0LCBzY2gsIGV4dGFjayk7DQogCWlmIChlcnIpDQotCQlyZXR1 cm4gZXJyOw0KKwkJZ290byBlcnI7DQogDQogCXF1YW50dW1fZGl2WzBdID0gfjA7DQogCWZvciAo aSA9IDE7IGkgPD0gQ0FLRV9RVUVVRVM7IGkrKykNCiAJCXF1YW50dW1fZGl2W2ldID0gNjU1MzUg LyBpOw0KIA0KLQlxLT50aW5zID0ga3ZjYWxsb2MoQ0FLRV9NQVhfVElOUywgc2l6ZW9mKHN0cnVj dCBjYWtlX3Rpbl9kYXRhKSwNCi0JCQkgICBHRlBfS0VSTkVMKTsNCi0JaWYgKCFxLT50aW5zKQ0K LQkJcmV0dXJuIC1FTk9NRU07DQorCXFkLT50aW5zID0ga3ZjYWxsb2MoQ0FLRV9NQVhfVElOUywg c2l6ZW9mKHN0cnVjdCBjYWtlX3Rpbl9kYXRhKSwNCisJCQkgICAgR0ZQX0tFUk5FTCk7DQorCWlm ICghcWQtPnRpbnMpIHsNCisJCWVyciA9IC1FTk9NRU07DQorCQlnb3RvIGVycjsNCisJfQ0KIA0K IAlmb3IgKGkgPSAwOyBpIDwgQ0FLRV9NQVhfVElOUzsgaSsrKSB7DQotCQlzdHJ1Y3QgY2FrZV90 aW5fZGF0YSAqYiA9IHEtPnRpbnMgKyBpOw0KKwkJc3RydWN0IGNha2VfdGluX2RhdGEgKmIgPSBx ZC0+dGlucyArIGk7DQogDQogCQlJTklUX0xJU1RfSEVBRCgmYi0+bmV3X2Zsb3dzKTsNCiAJCUlO SVRfTElTVF9IRUFEKCZiLT5vbGRfZmxvd3MpOw0KQEAgLTI3ODQsMjIgKzI4MDAsMjcgQEAgc3Rh dGljIGludCBjYWtlX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwN CiAJCQlJTklUX0xJU1RfSEVBRCgmZmxvdy0+Zmxvd2NoYWluKTsNCiAJCQljb2JhbHRfdmFyc19p bml0KCZmbG93LT5jdmFycyk7DQogDQotCQkJcS0+b3ZlcmZsb3dfaGVhcFtrXS50ID0gaTsNCi0J CQlxLT5vdmVyZmxvd19oZWFwW2tdLmIgPSBqOw0KKwkJCXFkLT5vdmVyZmxvd19oZWFwW2tdLnQg PSBpOw0KKwkJCXFkLT5vdmVyZmxvd19oZWFwW2tdLmIgPSBqOw0KIAkJCWItPm92ZXJmbG93X2lk eFtqXSA9IGs7DQogCQl9DQogCX0NCiANCiAJY2FrZV9yZWNvbmZpZ3VyZShzY2gpOw0KLQlxLT5h dmdfcGVha19iYW5kd2lkdGggPSBxLT5yYXRlX2JwczsNCi0JcS0+bWluX25ldGxlbiA9IH4wOw0K LQlxLT5taW5fYWRqbGVuID0gfjA7DQorCXFkLT5hdmdfcGVha19iYW5kd2lkdGggPSBxLT5yYXRl X2JwczsNCisJcWQtPm1pbl9uZXRsZW4gPSB+MDsNCisJcWQtPm1pbl9hZGpsZW4gPSB+MDsNCiAJ cmV0dXJuIDA7DQorZXJyOg0KKwlrdmZyZWUocWQtPmNvbmZpZyk7DQorCXFkLT5jb25maWcgPSBO VUxMOw0KKwlyZXR1cm4gZXJyOw0KIH0NCiANCiBzdGF0aWMgaW50IGNha2VfZHVtcChzdHJ1Y3Qg UWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKnNrYikNCiB7DQotCXN0cnVjdCBjYWtlX3NjaGVk X2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7DQorCXN0cnVjdCBjYWtlX3NjaGVkX2RhdGEgKnFk ID0gcWRpc2NfcHJpdihzY2gpOw0KKwlzdHJ1Y3QgY2FrZV9zY2hlZF9jb25maWcgKnEgPSBxZC0+ Y29uZmlnOw0KIAlzdHJ1Y3QgbmxhdHRyICpvcHRzOw0KIAl1MTYgcmF0ZV9mbGFnczsNCiAJdTgg Zmxvd19tb2RlOw0KDQotLSANCjIuNTIuMA0KDQo=