From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D3E69232395; Thu, 27 Feb 2025 13:56:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.21 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740664587; cv=none; b=uiGKToyjDfZLo5gGtNlHusYYuJJgSbhxpXSYtZO/FtGMwheN1lEedjnybOLnDpRKF/BOPqfnxPeP/ooZgvbSgidceUZWwgRk1OOg0by6/MgibXeAAEw2tDThP9koi8lbqgKR/yKkOBwTABR5hD1ota0xlgB+QJY5u3v+H/aEojI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740664587; c=relaxed/simple; bh=VDnMvmdOQ95w3+tnjTnFV9ow8+wYbXM+TrEdSKragGA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kCUmjkOT1vtBkOc7baM32djv6IfupT02EecODiJ3TKF6+rdmyuURC5K8KF5gt2FdtsK8+cxwVhSnXtsm/RnCQRwzQZVdogTJ97IcP3gYhY81duA6aYCYEvioWvxnCyzqJSnmnRzkLysTk8tbo624KM5mcScA7Urhc7RpafsJDXg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.net; spf=pass smtp.mailfrom=gmx.net; dkim=pass (2048-bit key) header.d=gmx.net header.i=ps.report@gmx.net header.b=cisEkVs2; arc=none smtp.client-ip=212.227.17.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.net header.i=ps.report@gmx.net header.b="cisEkVs2" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1740664575; x=1741269375; i=ps.report@gmx.net; bh=VDnMvmdOQ95w3+tnjTnFV9ow8+wYbXM+TrEdSKragGA=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=cisEkVs2kE1QuQtGDwxguTy/UQDYjPjnI/iFVUPUtcS5yUGtGT9G4TyTkFGkbPHM cThIYNED3qRK9JM7zsQYCUqW5DPoc5wD/VNBHCon8jvHLc4ASC7hJxSuEwoK9KbC5 MmvPFLzMvufvLDgOfbTIbGgmjIUkSwi5s9IR/zW6e84zdpWPRiV0dY5eQ00shBLEt Mari995NnkSJ4OKyL+vNAtPfhxuDuxCI7fgiI39tAWxm2soUcdDsYIf6VqzKfF5wN pSh0f6i2NA0PVs3b0odLCM5ZYQy+ELh3KBfYeoefZYAW4zwN/PTgR4WTqEhhwhMNJ kQRNG/EAKNiTQn1KPQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from localhost.fritz.box ([82.135.81.151]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MLiCu-1tVyxj2Nf6-00V3tJ; Thu, 27 Feb 2025 14:56:15 +0100 From: Peter Seiderer To: netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan , Peter Seiderer , Fedor Pchelkin , Arnd Bergmann , Nam Cao Subject: [PATCH net-next v8 5/8] net: pktgen: fix access outside of user given buffer in pktgen_if_write() Date: Thu, 27 Feb 2025 14:56:01 +0100 Message-ID: <20250227135604.40024-6-ps.report@gmx.net> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250227135604.40024-1-ps.report@gmx.net> References: <20250227135604.40024-1-ps.report@gmx.net> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: base64 X-Provags-ID: V03:K1:MGk+XeS0dhd5pMlTpiIvrhVPFQWMpSWe0K5NmGPLlP5A0xdMt7q HZvqX+JrwgzyRN7a8+a21xu+mDzPH/IwW+0a9o48aAw/9TWIfqwShxJ0CBsH07pX4zg0CrQ YOgorY9UKHoZmvgIH0ufgMRoBo1Q7o6umHev3NNYiyLz3cEn1F2DkrvgMhBsEPV44kS5D9E /qx7wwne2JXWJ7ajQjlGg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:NmMbAFvyKEs=;HFCXJwANRQwxJawncLUH+QB2RDO +SEXq9+FIlgXOzlpShd7dc3PLo1pJp7N1gCOi0zwvM3AkipMYM8ZLiFjxOmPDB2XwtErOIDB6 W6eSP3MxbUBvp8HT8rw6Ffs/+Cvv2wQ6tKmuqh4wU19VmUlJY7io5IeTUtnP/Oc+Ytz1iLs2I KOl5LJDii48e43gOD0jPxJRWx1LGYeDlUdKXpFmiouK+qx5cVIkGofkCUQZcIrf4SD0eURUpo n4Ie1HlLLLKUFyLY8A+Jw3uR5L6y2W62vCSRGiOEtVxWLxGjZ3eiX2JvAvb9Nsxq6VzNd90JV fixMrq8wCqhV81mWaYblduGkjxNBhDJKHNv3dLMOiruQGJOpRMY/wh85NkepnPq+HxYfWBSQa cKwlUniqsDFDFRRFBvA/tGRrBY3OqLfr4D4oNvxSDYQCRtuAcVdxfmYLtWIVVG4hlXUgsgDd/ Ijucz6Ysx9KfhllfXooIa8l9b3BaiNmJWEkTFn+5WFPO9v0AkHwPE85qlDn+zHU4F8ZdkzuuR IzqaHarYFUHzDNSK8FA37nelgXXZIWUBzsf53wXiVA+5IN1qvGbtWII9HhamG8w7wJtU+N4e/ P16mEQdr3YdYez9A67XP0BQxc+S6ETXUUrVSxVI90T6iDkf+Jpre1jMrV+Xyc5OxZd38VBqiG IsowJwUVDZowO2En9YqZToC+uQSrC0wE2rycazi+alr568pUrRXSnth1id5p2gBTIpdbDCWCd /sZ1KjrcAOnWwtF4LXGRSKamE04NV0LRfg+wNqU1P7UCqGznrFBHu5edToRQYAI24/yUKrerR HbbpnrBPf/PT+E8fI96tSpgn26nJv2rwNcjI81QHwdccdFLzZ/8dyTWS7AIE3XCNDzpWUmyRP /+qpit//wV2W75UvIyDd9GFESG5fbuyD5RbWtEc4Mmh6Kz/x1huajUDULdcTDTzbtz759GZQk Fqrj2snnxWv37quzXX+wmaSjN4jnsiwQTgaNeI9ae8/sl9Mte+DcGIAjHLDMGcI64SETjCpu1 urxXuPz7QMy8l/HRWCUC8IYxb75ej6mZQ8W3I0YvqFh7jNGgg9buD/oOq7wpamWlBv/Zqe1JJ rfPWEzME0Gg4p6qUkDe57ihbOikU9sdytcId3FK7wC7KsbeR/YICmql5LjyJqDAwHwXDaQZGN 1q1vQTNMwntoIN9c/0uwvGf9woP7aSOWMtjqZiSkrmVipzBr2wNPEySVLeOXbJzqhYbtKNK// pGsYnhY/HFQfP7QOZOugdT+UXlov59RxEOEiB/REe3A2Mn+77Clu2fdSVuCwOPH5G8nKlJg7J 9Qacur7nvQRCRCwiOl8RsFgYJRAixXAJmCoa7aWwA1MEXKVkiCK+Wox4y55zE7nFgoeNIfeg6 hOt4eC1wTErQs7+mA2rCFsGaG6jYuVHjcgvq5gPHvNqITwh8ThWPY7tMgR SG9ub3VyIHRoZSB1c2VyIGdpdmVuIGJ1ZmZlciBzaXplIGZvciB0aGUgaGV4MzJfYXJnKCksIG51 bV9hcmcoKSwKc3Rybl9sZW4oKSwgZ2V0X2ltaXhfZW50cmllcygpIGFuZCBnZXRfbGFiZWxzKCkg Y2FsbHMgKG90aGVyd2lzZSB0aGV5IHdpbGwKYWNjZXNzIG1lbW9yeSBvdXRzaWRlIG9mIHRoZSB1 c2VyIGdpdmVuIGJ1ZmZlcikuCgpTaWduZWQtb2ZmLWJ5OiBQZXRlciBTZWlkZXJlciA8cHMucmVw b3J0QGdteC5uZXQ+ClJldmlld2VkLWJ5OiBTaW1vbiBIb3JtYW4gPGhvcm1zQGtlcm5lbC5vcmc+ Ci0tLQpDaGFuZ2VzIHY3IC0+IHY4CiAgLSByZWJhc2VkIG9uIGFjdHVhbCBuZXQtbmV4dC9tYWlu CiAgLSBubyBjaGFuZ2VzCgpDaGFuZ2VzIHY2IC0+IHY3CiAgLSByZWJhc2VkIG9uIGFjdHVhbCBu ZXQtbmV4dC9tYWluCiAgLSBubyBjaGFuZ2VzCgpDaGFuZ2VzIHY1IC0+IHY2CiAgLSBhZGp1c3Qg dG8gZHJvcHBlZCBwYXRjaCAnbmV0OiBwa3RnZW46IHVzZSBkZWZpbmVzIGZvciB0aGUgdmFyaW91 cwogICAgZGVjL2hleCBudW1iZXIgcGFyc2luZyBkaWdpdHMgbGVuZ3RocycKCkNoYW5nZXMgdjQg LT4gdjUKICAtIHNwbGl0IHVwIHBhdGNoc2V0IGludG8gcGFydCBpL2lpIChzdWdnZXN0ZWQgYnkg U2ltb24gSG9ybWFuKQogIC0gYWRkIHJldi1ieSBTaW1vbiBIb3JtYW4KCkNoYW5nZXMgdjMgLT4g djQ6CiAgLSByZXBsYWNlIEM5OSBjb21tZW50IChzdWdnZXN0ZWQgYnkgUGFvbG8gQWJlbmkpCiAg LSBkcm9wIGF2YWlsYWJsZSBjaGFyYWN0ZXJzIGNoZWNrIGluIHN0cm5fbGVuKCkgKHN1Z2dlc3Rl ZCBieSBQYW9sbyBBYmVuaSkKICAtIGZhY3RvcmVkIG91dCBwYXRjaCAnbmV0OiBwa3RnZW46IGFs aWduIHNvbWUgdmFyaWFibGUgZGVjbGFyYXRpb25zIHRvIHRoZQogICAgbW9zdCBjb21tb24gcGF0 dGVybicgKHN1Z2dlc3RlZCBieSBQYW9sbyBBYmVuaSkKICAtIGZhY3RvcmVkIG91dCBwYXRjaCAn bmV0OiBwa3RnZW46IHJlbW92ZSBleHRyYSB0bXAgdmFyaWFibGUgKHJlLXVzZSBsZW4KICAgIGlu c3RlYWQpJyAoc3VnZ2VzdGVkIGJ5IFBhb2xvIEFiZW5pKQogIC0gZmFjdG9yZWQgb3V0IHBhdGNo ICduZXQ6IHBrdGdlbjogcmVtb3ZlIHNvbWUgc3VwZXJmbHVvdXMgdmFyaWFibGUKICAgIGluaXRp YWxpemluZycgKHN1Z2dlc3RlZCBieSBQYW9sbyBBYmVuaSkKICAtIGZhY3RvcmVkIG91dCBwYXRj aCAnbmV0OiBwa3RnZW46IGZpeCBtcGxzIG1heGltdW0gbGFiZWxzIGxpc3QgcGFyc2luZycKICAg IChzdWdnZXN0ZWQgYnkgUGFvbG8gQWJlbmkpCiAgLSBmYWN0b3JlZCBvdXQgJ25ldDogcGt0Z2Vu OiBoZXgzMl9hcmcvbnVtX2FyZyBlcnJvciBvdXQgaW4gY2FzZSBubwogICAgY2hhcmFjdGVycyBh cmUgYXZhaWxhYmxlJyAoc3VnZ2VzdGVkIGJ5IFBhb2xvIEFiZW5pKQogIC0gZmFjdG9yZWQgb3V0 ICduZXQ6IHBrdGdlbjogbnVtX2FyZyBlcnJvciBvdXQgaW4gY2FzZSBubyB2YWxpZCBjaGFyYWN0 ZXIKICAgIGlzIHBhcnNlZCcgKHN1Z2dlc3RlZCBieSBQYW9sbyBBYmVuaSkKCkNoYW5nZXMgdjIg LT4gdjM6CiAgLSBubyBjaGFuZ2VzCgpDaGFuZ2VzIHYxIC0+IHYyOgogIC0gYWRkaXRpb25hbCBm aXggZ2V0X2ltaXhfZW50cmllcygpIGFuZCBnZXRfbGFiZWxzKCkKLS0tCiBuZXQvY29yZS9wa3Rn ZW4uYyB8IDE3OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t CiAxIGZpbGUgY2hhbmdlZCwgMTE4IGluc2VydGlvbnMoKyksIDYwIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL25ldC9jb3JlL3BrdGdlbi5jIGIvbmV0L2NvcmUvcGt0Z2VuLmMKaW5kZXggZGVm MzVhNzM0ZDlkLi5mNGY5YzlkODM2OTQgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL3BrdGdlbi5jCisr KyBiL25ldC9jb3JlL3BrdGdlbi5jCkBAIC04NDAsMTAgKzg0MCwxMCBAQCBzdGF0aWMgc3NpemVf dCBzdHJuX2xlbihjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWZmZXIsIHNpemVfdCBtYXhsZW4p CiAgKiAic2l6ZTEsd2VpZ2h0XzEgc2l6ZTIsd2VpZ2h0XzIgLi4uIHNpemVfbix3ZWlnaHRfbiIg Zm9yIGV4YW1wbGUuCiAgKi8KIHN0YXRpYyBzc2l6ZV90IGdldF9pbWl4X2VudHJpZXMoY29uc3Qg Y2hhciBfX3VzZXIgKmJ1ZmZlciwKKwkJCQlzaXplX3QgbWF4bGVuLAogCQkJCXN0cnVjdCBwa3Rn ZW5fZGV2ICpwa3RfZGV2KQogewotCWNvbnN0IHNpemVfdCBtYXhfZGlnaXRzID0gMTA7Ci0Jc2l6 ZV90IGkgPSAwOworCXNpemVfdCBpID0gMCwgbWF4OwogCXNzaXplX3QgbGVuOwogCWNoYXIgYzsK IApAQCAtODU2LDEwICs4NTYsMTMgQEAgc3RhdGljIHNzaXplX3QgZ2V0X2ltaXhfZW50cmllcyhj b25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLAogCQlpZiAocGt0X2Rldi0+bl9pbWl4X2VudHJpZXMg Pj0gTUFYX0lNSVhfRU5UUklFUykKIAkJCXJldHVybiAtRTJCSUc7CiAKLQkJbGVuID0gbnVtX2Fy ZygmYnVmZmVyW2ldLCBtYXhfZGlnaXRzLCAmc2l6ZSk7CisJCW1heCA9IG1pbigxMCwgbWF4bGVu IC0gaSk7CisJCWxlbiA9IG51bV9hcmcoJmJ1ZmZlcltpXSwgbWF4LCAmc2l6ZSk7CiAJCWlmIChs ZW4gPCAwKQogCQkJcmV0dXJuIGxlbjsKIAkJaSArPSBsZW47CisJCWlmIChpID49IG1heGxlbikK KwkJCXJldHVybiAtRUlOVkFMOwogCQlpZiAoZ2V0X3VzZXIoYywgJmJ1ZmZlcltpXSkpCiAJCQly ZXR1cm4gLUVGQVVMVDsKIAkJLyogQ2hlY2sgZm9yIGNvbW1hIGJldHdlZW4gc2l6ZV9pIGFuZCB3 ZWlnaHRfaSAqLwpAQCAtODcwLDcgKzg3Myw4IEBAIHN0YXRpYyBzc2l6ZV90IGdldF9pbWl4X2Vu dHJpZXMoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwKIAkJaWYgKHNpemUgPCAxNCArIDIwICsg OCkKIAkJCXNpemUgPSAxNCArIDIwICsgODsKIAotCQlsZW4gPSBudW1fYXJnKCZidWZmZXJbaV0s IG1heF9kaWdpdHMsICZ3ZWlnaHQpOworCQltYXggPSBtaW4oMTAsIG1heGxlbiAtIGkpOworCQls ZW4gPSBudW1fYXJnKCZidWZmZXJbaV0sIG1heCwgJndlaWdodCk7CiAJCWlmIChsZW4gPCAwKQog CQkJcmV0dXJuIGxlbjsKIAkJaWYgKHdlaWdodCA8PSAwKQpAQCAtODgwLDIwICs4ODQsMjMgQEAg c3RhdGljIHNzaXplX3QgZ2V0X2ltaXhfZW50cmllcyhjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVy LAogCQlwa3RfZGV2LT5pbWl4X2VudHJpZXNbcGt0X2Rldi0+bl9pbWl4X2VudHJpZXNdLndlaWdo dCA9IHdlaWdodDsKIAogCQlpICs9IGxlbjsKKwkJcGt0X2Rldi0+bl9pbWl4X2VudHJpZXMrKzsK KworCQlpZiAoaSA+PSBtYXhsZW4pCisJCQlicmVhazsKIAkJaWYgKGdldF91c2VyKGMsICZidWZm ZXJbaV0pKQogCQkJcmV0dXJuIC1FRkFVTFQ7Ci0KIAkJaSsrOwotCQlwa3RfZGV2LT5uX2ltaXhf ZW50cmllcysrOwogCX0gd2hpbGUgKGMgPT0gJyAnKTsKIAogCXJldHVybiBpOwogfQogCi1zdGF0 aWMgc3NpemVfdCBnZXRfbGFiZWxzKGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsIHN0cnVjdCBw a3RnZW5fZGV2ICpwa3RfZGV2KQorc3RhdGljIHNzaXplX3QgZ2V0X2xhYmVscyhjb25zdCBjaGFy IF9fdXNlciAqYnVmZmVyLAorCQkJICBzaXplX3QgbWF4bGVuLCBzdHJ1Y3QgcGt0Z2VuX2RldiAq cGt0X2RldikKIHsKIAl1bnNpZ25lZCBpbnQgbiA9IDA7Ci0Jc2l6ZV90IGkgPSAwOworCXNpemVf dCBpID0gMCwgbWF4OwogCXNzaXplX3QgbGVuOwogCWNoYXIgYzsKIApAQCAtOTA0LDE3ICs5MTEs MjAgQEAgc3RhdGljIHNzaXplX3QgZ2V0X2xhYmVscyhjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVy LCBzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldikKIAkJaWYgKG4gPj0gTUFYX01QTFNfTEFCRUxT KQogCQkJcmV0dXJuIC1FMkJJRzsKIAotCQlsZW4gPSBoZXgzMl9hcmcoJmJ1ZmZlcltpXSwgOCwg JnRtcCk7CisJCW1heCA9IG1pbig4LCBtYXhsZW4gLSBpKTsKKwkJbGVuID0gaGV4MzJfYXJnKCZi dWZmZXJbaV0sIG1heCwgJnRtcCk7CiAJCWlmIChsZW4gPD0gMCkKIAkJCXJldHVybiBsZW47CiAJ CXBrdF9kZXYtPmxhYmVsc1tuXSA9IGh0b25sKHRtcCk7CiAJCWlmIChwa3RfZGV2LT5sYWJlbHNb bl0gJiBNUExTX1NUQUNLX0JPVFRPTSkKIAkJCXBrdF9kZXYtPmZsYWdzIHw9IEZfTVBMU19STkQ7 CiAJCWkgKz0gbGVuOworCQluKys7CisJCWlmIChpID49IG1heGxlbikKKwkJCWJyZWFrOwogCQlp ZiAoZ2V0X3VzZXIoYywgJmJ1ZmZlcltpXSkpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJaSsrOwot CQluKys7CiAJfSB3aGlsZSAoYyA9PSAnLCcpOwogCiAJcGt0X2Rldi0+bnJfbGFiZWxzID0gbjsK QEAgLTk3OSw4ICs5ODksOCBAQCBzdGF0aWMgc3NpemVfdCBwa3RnZW5faWZfd3JpdGUoc3RydWN0 IGZpbGUgKmZpbGUsCiAJaSA9IGxlbjsKIAogCS8qIFJlYWQgdmFyaWFibGUgbmFtZSAqLwotCi0J bGVuID0gc3Rybl9sZW4oJnVzZXJfYnVmZmVyW2ldLCBzaXplb2YobmFtZSkgLSAxKTsKKwltYXgg PSBtaW4oc2l6ZW9mKG5hbWUpIC0gMSwgY291bnQgLSBpKTsKKwlsZW4gPSBzdHJuX2xlbigmdXNl cl9idWZmZXJbaV0sIG1heCk7CiAJaWYgKGxlbiA8IDApCiAJCXJldHVybiBsZW47CiAKQEAgLTEw MDgsNyArMTAxOCw4IEBAIHN0YXRpYyBzc2l6ZV90IHBrdGdlbl9pZl93cml0ZShzdHJ1Y3QgZmls ZSAqZmlsZSwKIAl9CiAKIAlpZiAoIXN0cmNtcChuYW1lLCAibWluX3BrdF9zaXplIikpIHsKLQkJ bGVuID0gbnVtX2FyZygmdXNlcl9idWZmZXJbaV0sIDEwLCAmdmFsdWUpOworCQltYXggPSBtaW4o MTAsIGNvdW50IC0gaSk7CisJCWxlbiA9IG51bV9hcmcoJnVzZXJfYnVmZmVyW2ldLCBtYXgsICZ2 YWx1ZSk7CiAJCWlmIChsZW4gPCAwKQogCQkJcmV0dXJuIGxlbjsKIApAQCAtMTAyNSw3ICsxMDM2 LDggQEAgc3RhdGljIHNzaXplX3QgcGt0Z2VuX2lmX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAog CX0KIAogCWlmICghc3RyY21wKG5hbWUsICJtYXhfcGt0X3NpemUiKSkgewotCQlsZW4gPSBudW1f YXJnKCZ1c2VyX2J1ZmZlcltpXSwgMTAsICZ2YWx1ZSk7CisJCW1heCA9IG1pbigxMCwgY291bnQg LSBpKTsKKwkJbGVuID0gbnVtX2FyZygmdXNlcl9idWZmZXJbaV0sIG1heCwgJnZhbHVlKTsKIAkJ aWYgKGxlbiA8IDApCiAJCQlyZXR1cm4gbGVuOwogCkBAIC0xMDQ0LDcgKzEwNTYsOCBAQCBzdGF0 aWMgc3NpemVfdCBwa3RnZW5faWZfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCiAJLyogU2hvcnRj dXQgZm9yIG1pbiA9IG1heCAqLwogCiAJaWYgKCFzdHJjbXAobmFtZSwgInBrdF9zaXplIikpIHsK LQkJbGVuID0gbnVtX2FyZygmdXNlcl9idWZmZXJbaV0sIDEwLCAmdmFsdWUpOworCQltYXggPSBt aW4oMTAsIGNvdW50IC0gaSk7CisJCWxlbiA9IG51bV9hcmcoJnVzZXJfYnVmZmVyW2ldLCBtYXgs ICZ2YWx1ZSk7CiAJCWlmIChsZW4gPCAwKQogCQkJcmV0dXJuIGxlbjsKIApAQCAtMTA2NCw3ICsx MDc3LDggQEAgc3RhdGljIHNzaXplX3QgcGt0Z2VuX2lmX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxl LAogCQlpZiAocGt0X2Rldi0+Y2xvbmVfc2tiID4gMCkKIAkJCXJldHVybiAtRUlOVkFMOwogCi0J CWxlbiA9IGdldF9pbWl4X2VudHJpZXMoJnVzZXJfYnVmZmVyW2ldLCBwa3RfZGV2KTsKKwkJbWF4 ID0gY291bnQgLSBpOworCQlsZW4gPSBnZXRfaW1peF9lbnRyaWVzKCZ1c2VyX2J1ZmZlcltpXSwg bWF4LCBwa3RfZGV2KTsKIAkJaWYgKGxlbiA8IDApCiAJCQlyZXR1cm4gbGVuOwogCkBAIC0xMDc1 LDcgKzEwODksOCBAQCBzdGF0aWMgc3NpemVfdCBwa3RnZW5faWZfd3JpdGUoc3RydWN0IGZpbGUg KmZpbGUsCiAJfQogCiAJaWYgKCFzdHJjbXAobmFtZSwgImRlYnVnIikpIHsKLQkJbGVuID0gbnVt X2FyZygmdXNlcl9idWZmZXJbaV0sIDEwLCAmdmFsdWUpOworCQltYXggPSBtaW4oMTAsIGNvdW50 IC0gaSk7CisJCWxlbiA9IG51bV9hcmcoJnVzZXJfYnVmZmVyW2ldLCBtYXgsICZ2YWx1ZSk7CiAJ CWlmIChsZW4gPCAwKQogCQkJcmV0dXJuIGxlbjsKIApAQCAtMTA4Niw3ICsxMTAxLDggQEAgc3Rh dGljIHNzaXplX3QgcGt0Z2VuX2lmX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAogCX0KIAogCWlm ICghc3RyY21wKG5hbWUsICJmcmFncyIpKSB7Ci0JCWxlbiA9IG51bV9hcmcoJnVzZXJfYnVmZmVy W2ldLCAxMCwgJnZhbHVlKTsKKwkJbWF4ID0gbWluKDEwLCBjb3VudCAtIGkpOworCQlsZW4gPSBu dW1fYXJnKCZ1c2VyX2J1ZmZlcltpXSwgbWF4LCAmdmFsdWUpOwogCQlpZiAobGVuIDwgMCkKIAkJ CXJldHVybiBsZW47CiAKQEAgLTEwOTYsNyArMTExMiw4IEBAIHN0YXRpYyBzc2l6ZV90IHBrdGdl bl9pZl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJcmV0dXJuIGNvdW50OwogCX0KIAlpZiAo IXN0cmNtcChuYW1lLCAiZGVsYXkiKSkgewotCQlsZW4gPSBudW1fYXJnKCZ1c2VyX2J1ZmZlcltp XSwgMTAsICZ2YWx1ZSk7CisJCW1heCA9IG1pbigxMCwgY291bnQgLSBpKTsKKwkJbGVuID0gbnVt X2FyZygmdXNlcl9idWZmZXJbaV0sIG1heCwgJnZhbHVlKTsKIAkJaWYgKGxlbiA8IDApCiAJCQly ZXR1cm4gbGVuOwogCkBAIC0xMTExLDcgKzExMjgsOCBAQCBzdGF0aWMgc3NpemVfdCBwa3RnZW5f aWZfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCiAJCXJldHVybiBjb3VudDsKIAl9CiAJaWYgKCFz dHJjbXAobmFtZSwgInJhdGUiKSkgewotCQlsZW4gPSBudW1fYXJnKCZ1c2VyX2J1ZmZlcltpXSwg MTAsICZ2YWx1ZSk7CisJCW1heCA9IG1pbigxMCwgY291bnQgLSBpKTsKKwkJbGVuID0gbnVtX2Fy ZygmdXNlcl9idWZmZXJbaV0sIG1heCwgJnZhbHVlKTsKIAkJaWYgKGxlbiA8IDApCiAJCQlyZXR1 cm4gbGVuOwogCkBAIC0xMTI2LDcgKzExNDQsOCBAQCBzdGF0aWMgc3NpemVfdCBwa3RnZW5faWZf d3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCiAJCXJldHVybiBjb3VudDsKIAl9CiAJaWYgKCFzdHJj bXAobmFtZSwgInJhdGVwIikpIHsKLQkJbGVuID0gbnVtX2FyZygmdXNlcl9idWZmZXJbaV0sIDEw LCAmdmFsdWUpOworCQltYXggPSBtaW4oMTAsIGNvdW50IC0gaSk7CisJCWxlbiA9IG51bV9hcmco JnVzZXJfYnVmZmVyW2ldLCBtYXgsICZ2YWx1ZSk7CiAJCWlmIChsZW4gPCAwKQogCQkJcmV0dXJu IGxlbjsKIApAQCAtMTE0MSw3ICsxMTYwLDggQEAgc3RhdGljIHNzaXplX3QgcGt0Z2VuX2lmX3dy aXRlKHN0cnVjdCBmaWxlICpmaWxlLAogCQlyZXR1cm4gY291bnQ7CiAJfQogCWlmICghc3RyY21w KG5hbWUsICJ1ZHBfc3JjX21pbiIpKSB7Ci0JCWxlbiA9IG51bV9hcmcoJnVzZXJfYnVmZmVyW2ld LCAxMCwgJnZhbHVlKTsKKwkJbWF4ID0gbWluKDEwLCBjb3VudCAtIGkpOworCQlsZW4gPSBudW1f YXJnKCZ1c2VyX2J1ZmZlcltpXSwgbWF4LCAmdmFsdWUpOwogCQlpZiAobGVuIDwgMCkKIAkJCXJl dHVybiBsZW47CiAKQEAgLTExNTQsNyArMTE3NCw4IEBAIHN0YXRpYyBzc2l6ZV90IHBrdGdlbl9p Zl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJcmV0dXJuIGNvdW50OwogCX0KIAlpZiAoIXN0 cmNtcChuYW1lLCAidWRwX2RzdF9taW4iKSkgewotCQlsZW4gPSBudW1fYXJnKCZ1c2VyX2J1ZmZl cltpXSwgMTAsICZ2YWx1ZSk7CisJCW1heCA9IG1pbigxMCwgY291bnQgLSBpKTsKKwkJbGVuID0g bnVtX2FyZygmdXNlcl9idWZmZXJbaV0sIG1heCwgJnZhbHVlKTsKIAkJaWYgKGxlbiA8IDApCiAJ CQlyZXR1cm4gbGVuOwogCkBAIC0xMTY3LDcgKzExODgsOCBAQCBzdGF0aWMgc3NpemVfdCBwa3Rn ZW5faWZfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCiAJCXJldHVybiBjb3VudDsKIAl9CiAJaWYg KCFzdHJjbXAobmFtZSwgInVkcF9zcmNfbWF4IikpIHsKLQkJbGVuID0gbnVtX2FyZygmdXNlcl9i dWZmZXJbaV0sIDEwLCAmdmFsdWUpOworCQltYXggPSBtaW4oMTAsIGNvdW50IC0gaSk7CisJCWxl biA9IG51bV9hcmcoJnVzZXJfYnVmZmVyW2ldLCBtYXgsICZ2YWx1ZSk7CiAJCWlmIChsZW4gPCAw KQogCQkJcmV0dXJuIGxlbjsKIApAQCAtMTE4MCw3ICsxMjAyLDggQEAgc3RhdGljIHNzaXplX3Qg cGt0Z2VuX2lmX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAogCQlyZXR1cm4gY291bnQ7CiAJfQog CWlmICghc3RyY21wKG5hbWUsICJ1ZHBfZHN0X21heCIpKSB7Ci0JCWxlbiA9IG51bV9hcmcoJnVz ZXJfYnVmZmVyW2ldLCAxMCwgJnZhbHVlKTsKKwkJbWF4ID0gbWluKDEwLCBjb3VudCAtIGkpOwor CQlsZW4gPSBudW1fYXJnKCZ1c2VyX2J1ZmZlcltpXSwgbWF4LCAmdmFsdWUpOwogCQlpZiAobGVu IDwgMCkKIAkJCXJldHVybiBsZW47CiAKQEAgLTExOTMsNyArMTIxNiw4IEBAIHN0YXRpYyBzc2l6 ZV90IHBrdGdlbl9pZl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJcmV0dXJuIGNvdW50Owog CX0KIAlpZiAoIXN0cmNtcChuYW1lLCAiY2xvbmVfc2tiIikpIHsKLQkJbGVuID0gbnVtX2FyZygm dXNlcl9idWZmZXJbaV0sIDEwLCAmdmFsdWUpOworCQltYXggPSBtaW4oMTAsIGNvdW50IC0gaSk7 CisJCWxlbiA9IG51bV9hcmcoJnVzZXJfYnVmZmVyW2ldLCBtYXgsICZ2YWx1ZSk7CiAJCWlmIChs ZW4gPCAwKQogCQkJcmV0dXJuIGxlbjsKIAkJLyogY2xvbmVfc2tiIGlzIG5vdCBzdXBwb3J0ZWQg Zm9yIG5ldGlmX3JlY2VpdmUgeG1pdF9tb2RlIGFuZApAQCAtMTIxNCw3ICsxMjM4LDggQEAgc3Rh dGljIHNzaXplX3QgcGt0Z2VuX2lmX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAogCQlyZXR1cm4g Y291bnQ7CiAJfQogCWlmICghc3RyY21wKG5hbWUsICJjb3VudCIpKSB7Ci0JCWxlbiA9IG51bV9h cmcoJnVzZXJfYnVmZmVyW2ldLCAxMCwgJnZhbHVlKTsKKwkJbWF4ID0gbWluKDEwLCBjb3VudCAt IGkpOworCQlsZW4gPSBudW1fYXJnKCZ1c2VyX2J1ZmZlcltpXSwgbWF4LCAmdmFsdWUpOwogCQlp ZiAobGVuIDwgMCkKIAkJCXJldHVybiBsZW47CiAKQEAgLTEyMjUsNyArMTI1MCw4IEBAIHN0YXRp YyBzc2l6ZV90IHBrdGdlbl9pZl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJcmV0dXJuIGNv dW50OwogCX0KIAlpZiAoIXN0cmNtcChuYW1lLCAic3JjX21hY19jb3VudCIpKSB7Ci0JCWxlbiA9 IG51bV9hcmcoJnVzZXJfYnVmZmVyW2ldLCAxMCwgJnZhbHVlKTsKKwkJbWF4ID0gbWluKDEwLCBj b3VudCAtIGkpOworCQlsZW4gPSBudW1fYXJnKCZ1c2VyX2J1ZmZlcltpXSwgbWF4LCAmdmFsdWUp OwogCQlpZiAobGVuIDwgMCkKIAkJCXJldHVybiBsZW47CiAKQEAgLTEyMzksNyArMTI2NSw4IEBA IHN0YXRpYyBzc2l6ZV90IHBrdGdlbl9pZl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJcmV0 dXJuIGNvdW50OwogCX0KIAlpZiAoIXN0cmNtcChuYW1lLCAiZHN0X21hY19jb3VudCIpKSB7Ci0J CWxlbiA9IG51bV9hcmcoJnVzZXJfYnVmZmVyW2ldLCAxMCwgJnZhbHVlKTsKKwkJbWF4ID0gbWlu KDEwLCBjb3VudCAtIGkpOworCQlsZW4gPSBudW1fYXJnKCZ1c2VyX2J1ZmZlcltpXSwgbWF4LCAm dmFsdWUpOwogCQlpZiAobGVuIDwgMCkKIAkJCXJldHVybiBsZW47CiAKQEAgLTEyNTMsNyArMTI4 MCw4IEBAIHN0YXRpYyBzc2l6ZV90IHBrdGdlbl9pZl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwK IAkJcmV0dXJuIGNvdW50OwogCX0KIAlpZiAoIXN0cmNtcChuYW1lLCAiYnVyc3QiKSkgewotCQls ZW4gPSBudW1fYXJnKCZ1c2VyX2J1ZmZlcltpXSwgMTAsICZ2YWx1ZSk7CisJCW1heCA9IG1pbigx MCwgY291bnQgLSBpKTsKKwkJbGVuID0gbnVtX2FyZygmdXNlcl9idWZmZXJbaV0sIG1heCwgJnZh bHVlKTsKIAkJaWYgKGxlbiA8IDApCiAJCQlyZXR1cm4gbGVuOwogCkBAIC0xMjcyLDcgKzEzMDAs OCBAQCBzdGF0aWMgc3NpemVfdCBwa3RnZW5faWZfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCiAJ CXJldHVybiBjb3VudDsKIAl9CiAJaWYgKCFzdHJjbXAobmFtZSwgIm5vZGUiKSkgewotCQlsZW4g PSBudW1fYXJnKCZ1c2VyX2J1ZmZlcltpXSwgMTAsICZ2YWx1ZSk7CisJCW1heCA9IG1pbigxMCwg Y291bnQgLSBpKTsKKwkJbGVuID0gbnVtX2FyZygmdXNlcl9idWZmZXJbaV0sIG1heCwgJnZhbHVl KTsKIAkJaWYgKGxlbiA8IDApCiAJCQlyZXR1cm4gbGVuOwogCkBAIC0xMjkzLDExICsxMzIyLDEy IEBAIHN0YXRpYyBzc2l6ZV90IHBrdGdlbl9pZl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAlp ZiAoIXN0cmNtcChuYW1lLCAieG1pdF9tb2RlIikpIHsKIAkJY2hhciBmWzMyXTsKIAotCQltZW1z ZXQoZiwgMCwgMzIpOwotCQlsZW4gPSBzdHJuX2xlbigmdXNlcl9idWZmZXJbaV0sIHNpemVvZihm KSAtIDEpOworCQltYXggPSBtaW4oc2l6ZW9mKGYpIC0gMSwgY291bnQgLSBpKTsKKwkJbGVuID0g c3Rybl9sZW4oJnVzZXJfYnVmZmVyW2ldLCBtYXgpOwogCQlpZiAobGVuIDwgMCkKIAkJCXJldHVy biBsZW47CiAKKwkJbWVtc2V0KGYsIDAsIHNpemVvZihmKSk7CiAJCWlmIChjb3B5X2Zyb21fdXNl cihmLCAmdXNlcl9idWZmZXJbaV0sIGxlbikpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJaSArPSBs ZW47CkBAIC0xMzMzLDExICsxMzYzLDEyIEBAIHN0YXRpYyBzc2l6ZV90IHBrdGdlbl9pZl93cml0 ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJY2hhciBmWzMyXTsKIAkJY2hhciAqZW5kOwogCi0JCW1l bXNldChmLCAwLCAzMik7Ci0JCWxlbiA9IHN0cm5fbGVuKCZ1c2VyX2J1ZmZlcltpXSwgc2l6ZW9m KGYpIC0gMSk7CisJCW1heCA9IG1pbihzaXplb2YoZikgLSAxLCBjb3VudCAtIGkpOworCQlsZW4g PSBzdHJuX2xlbigmdXNlcl9idWZmZXJbaV0sIG1heCk7CiAJCWlmIChsZW4gPCAwKQogCQkJcmV0 dXJuIGxlbjsKIAorCQltZW1zZXQoZiwgMCwgMzIpOwogCQlpZiAoY29weV9mcm9tX3VzZXIoZiwg JnVzZXJfYnVmZmVyW2ldLCBsZW4pKQogCQkJcmV0dXJuIC1FRkFVTFQ7CiAJCWkgKz0gbGVuOwpA QCAtMTM4Miw3ICsxNDEzLDggQEAgc3RhdGljIHNzaXplX3QgcGt0Z2VuX2lmX3dyaXRlKHN0cnVj dCBmaWxlICpmaWxlLAogCQlyZXR1cm4gY291bnQ7CiAJfQogCWlmICghc3RyY21wKG5hbWUsICJk c3RfbWluIikgfHwgIXN0cmNtcChuYW1lLCAiZHN0IikpIHsKLQkJbGVuID0gc3Rybl9sZW4oJnVz ZXJfYnVmZmVyW2ldLCBzaXplb2YocGt0X2Rldi0+ZHN0X21pbikgLSAxKTsKKwkJbWF4ID0gbWlu KHNpemVvZihwa3RfZGV2LT5kc3RfbWluKSAtIDEsIGNvdW50IC0gaSk7CisJCWxlbiA9IHN0cm5f bGVuKCZ1c2VyX2J1ZmZlcltpXSwgbWF4KTsKIAkJaWYgKGxlbiA8IDApCiAJCQlyZXR1cm4gbGVu OwogCkBAIC0xNDAyLDcgKzE0MzQsOCBAQCBzdGF0aWMgc3NpemVfdCBwa3RnZW5faWZfd3JpdGUo c3RydWN0IGZpbGUgKmZpbGUsCiAJCXJldHVybiBjb3VudDsKIAl9CiAJaWYgKCFzdHJjbXAobmFt ZSwgImRzdF9tYXgiKSkgewotCQlsZW4gPSBzdHJuX2xlbigmdXNlcl9idWZmZXJbaV0sIHNpemVv Zihwa3RfZGV2LT5kc3RfbWF4KSAtIDEpOworCQltYXggPSBtaW4oc2l6ZW9mKHBrdF9kZXYtPmRz dF9tYXgpIC0gMSwgY291bnQgLSBpKTsKKwkJbGVuID0gc3Rybl9sZW4oJnVzZXJfYnVmZmVyW2ld LCBtYXgpOwogCQlpZiAobGVuIDwgMCkKIAkJCXJldHVybiBsZW47CiAKQEAgLTE0MjIsNyArMTQ1 NSw4IEBAIHN0YXRpYyBzc2l6ZV90IHBrdGdlbl9pZl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwK IAkJcmV0dXJuIGNvdW50OwogCX0KIAlpZiAoIXN0cmNtcChuYW1lLCAiZHN0NiIpKSB7Ci0JCWxl biA9IHN0cm5fbGVuKCZ1c2VyX2J1ZmZlcltpXSwgc2l6ZW9mKGJ1ZikgLSAxKTsKKwkJbWF4ID0g bWluKHNpemVvZihidWYpIC0gMSwgY291bnQgLSBpKTsKKwkJbGVuID0gc3Rybl9sZW4oJnVzZXJf YnVmZmVyW2ldLCBtYXgpOwogCQlpZiAobGVuIDwgMCkKIAkJCXJldHVybiBsZW47CiAKQEAgLTE0 NDUsNyArMTQ3OSw4IEBAIHN0YXRpYyBzc2l6ZV90IHBrdGdlbl9pZl93cml0ZShzdHJ1Y3QgZmls ZSAqZmlsZSwKIAkJcmV0dXJuIGNvdW50OwogCX0KIAlpZiAoIXN0cmNtcChuYW1lLCAiZHN0Nl9t aW4iKSkgewotCQlsZW4gPSBzdHJuX2xlbigmdXNlcl9idWZmZXJbaV0sIHNpemVvZihidWYpIC0g MSk7CisJCW1heCA9IG1pbihzaXplb2YoYnVmKSAtIDEsIGNvdW50IC0gaSk7CisJCWxlbiA9IHN0 cm5fbGVuKCZ1c2VyX2J1ZmZlcltpXSwgbWF4KTsKIAkJaWYgKGxlbiA8IDApCiAJCQlyZXR1cm4g bGVuOwogCkBAIC0xNDY3LDcgKzE1MDIsOCBAQCBzdGF0aWMgc3NpemVfdCBwa3RnZW5faWZfd3Jp dGUoc3RydWN0IGZpbGUgKmZpbGUsCiAJCXJldHVybiBjb3VudDsKIAl9CiAJaWYgKCFzdHJjbXAo bmFtZSwgImRzdDZfbWF4IikpIHsKLQkJbGVuID0gc3Rybl9sZW4oJnVzZXJfYnVmZmVyW2ldLCBz aXplb2YoYnVmKSAtIDEpOworCQltYXggPSBtaW4oc2l6ZW9mKGJ1ZikgLSAxLCBjb3VudCAtIGkp OworCQlsZW4gPSBzdHJuX2xlbigmdXNlcl9idWZmZXJbaV0sIG1heCk7CiAJCWlmIChsZW4gPCAw KQogCQkJcmV0dXJuIGxlbjsKIApAQCAtMTQ4OCw3ICsxNTI0LDggQEAgc3RhdGljIHNzaXplX3Qg cGt0Z2VuX2lmX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAogCQlyZXR1cm4gY291bnQ7CiAJfQog CWlmICghc3RyY21wKG5hbWUsICJzcmM2IikpIHsKLQkJbGVuID0gc3Rybl9sZW4oJnVzZXJfYnVm ZmVyW2ldLCBzaXplb2YoYnVmKSAtIDEpOworCQltYXggPSBtaW4oc2l6ZW9mKGJ1ZikgLSAxLCBj b3VudCAtIGkpOworCQlsZW4gPSBzdHJuX2xlbigmdXNlcl9idWZmZXJbaV0sIG1heCk7CiAJCWlm IChsZW4gPCAwKQogCQkJcmV0dXJuIGxlbjsKIApAQCAtMTUxMSw3ICsxNTQ4LDggQEAgc3RhdGlj IHNzaXplX3QgcGt0Z2VuX2lmX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAogCQlyZXR1cm4gY291 bnQ7CiAJfQogCWlmICghc3RyY21wKG5hbWUsICJzcmNfbWluIikpIHsKLQkJbGVuID0gc3Rybl9s ZW4oJnVzZXJfYnVmZmVyW2ldLCBzaXplb2YocGt0X2Rldi0+c3JjX21pbikgLSAxKTsKKwkJbWF4 ID0gbWluKHNpemVvZihwa3RfZGV2LT5zcmNfbWluKSAtIDEsIGNvdW50IC0gaSk7CisJCWxlbiA9 IHN0cm5fbGVuKCZ1c2VyX2J1ZmZlcltpXSwgbWF4KTsKIAkJaWYgKGxlbiA8IDApCiAJCQlyZXR1 cm4gbGVuOwogCkBAIC0xNTMxLDcgKzE1NjksOCBAQCBzdGF0aWMgc3NpemVfdCBwa3RnZW5faWZf d3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCiAJCXJldHVybiBjb3VudDsKIAl9CiAJaWYgKCFzdHJj bXAobmFtZSwgInNyY19tYXgiKSkgewotCQlsZW4gPSBzdHJuX2xlbigmdXNlcl9idWZmZXJbaV0s IHNpemVvZihwa3RfZGV2LT5zcmNfbWF4KSAtIDEpOworCQltYXggPSBtaW4oc2l6ZW9mKHBrdF9k ZXYtPnNyY19tYXgpIC0gMSwgY291bnQgLSBpKTsKKwkJbGVuID0gc3Rybl9sZW4oJnVzZXJfYnVm ZmVyW2ldLCBtYXgpOwogCQlpZiAobGVuIDwgMCkKIAkJCXJldHVybiBsZW47CiAKQEAgLTE1NTEs NyArMTU5MCw4IEBAIHN0YXRpYyBzc2l6ZV90IHBrdGdlbl9pZl93cml0ZShzdHJ1Y3QgZmlsZSAq ZmlsZSwKIAkJcmV0dXJuIGNvdW50OwogCX0KIAlpZiAoIXN0cmNtcChuYW1lLCAiZHN0X21hYyIp KSB7Ci0JCWxlbiA9IHN0cm5fbGVuKCZ1c2VyX2J1ZmZlcltpXSwgc2l6ZW9mKHZhbHN0cikgLSAx KTsKKwkJbWF4ID0gbWluKHNpemVvZih2YWxzdHIpIC0gMSwgY291bnQgLSBpKTsKKwkJbGVuID0g c3Rybl9sZW4oJnVzZXJfYnVmZmVyW2ldLCBtYXgpOwogCQlpZiAobGVuIDwgMCkKIAkJCXJldHVy biBsZW47CiAKQEAgLTE1NjgsNyArMTYwOCw4IEBAIHN0YXRpYyBzc2l6ZV90IHBrdGdlbl9pZl93 cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJcmV0dXJuIGNvdW50OwogCX0KIAlpZiAoIXN0cmNt cChuYW1lLCAic3JjX21hYyIpKSB7Ci0JCWxlbiA9IHN0cm5fbGVuKCZ1c2VyX2J1ZmZlcltpXSwg c2l6ZW9mKHZhbHN0cikgLSAxKTsKKwkJbWF4ID0gbWluKHNpemVvZih2YWxzdHIpIC0gMSwgY291 bnQgLSBpKTsKKwkJbGVuID0gc3Rybl9sZW4oJnVzZXJfYnVmZmVyW2ldLCBtYXgpOwogCQlpZiAo bGVuIDwgMCkKIAkJCXJldHVybiBsZW47CiAKQEAgLTE1OTIsNyArMTYzMyw4IEBAIHN0YXRpYyBz c2l6ZV90IHBrdGdlbl9pZl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAl9CiAKIAlpZiAoIXN0 cmNtcChuYW1lLCAiZmxvd3MiKSkgewotCQlsZW4gPSBudW1fYXJnKCZ1c2VyX2J1ZmZlcltpXSwg MTAsICZ2YWx1ZSk7CisJCW1heCA9IG1pbigxMCwgY291bnQgLSBpKTsKKwkJbGVuID0gbnVtX2Fy ZygmdXNlcl9idWZmZXJbaV0sIG1heCwgJnZhbHVlKTsKIAkJaWYgKGxlbiA8IDApCiAJCQlyZXR1 cm4gbGVuOwogCkBAIC0xNjA2LDcgKzE2NDgsOCBAQCBzdGF0aWMgc3NpemVfdCBwa3RnZW5faWZf d3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCiAJfQogI2lmZGVmIENPTkZJR19YRlJNCiAJaWYgKCFz dHJjbXAobmFtZSwgInNwaSIpKSB7Ci0JCWxlbiA9IG51bV9hcmcoJnVzZXJfYnVmZmVyW2ldLCAx MCwgJnZhbHVlKTsKKwkJbWF4ID0gbWluKDEwLCBjb3VudCAtIGkpOworCQlsZW4gPSBudW1fYXJn KCZ1c2VyX2J1ZmZlcltpXSwgbWF4LCAmdmFsdWUpOwogCQlpZiAobGVuIDwgMCkKIAkJCXJldHVy biBsZW47CiAKQEAgLTE2MTcsNyArMTY2MCw4IEBAIHN0YXRpYyBzc2l6ZV90IHBrdGdlbl9pZl93 cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAl9CiAjZW5kaWYKIAlpZiAoIXN0cmNtcChuYW1lLCAi Zmxvd2xlbiIpKSB7Ci0JCWxlbiA9IG51bV9hcmcoJnVzZXJfYnVmZmVyW2ldLCAxMCwgJnZhbHVl KTsKKwkJbWF4ID0gbWluKDEwLCBjb3VudCAtIGkpOworCQlsZW4gPSBudW1fYXJnKCZ1c2VyX2J1 ZmZlcltpXSwgbWF4LCAmdmFsdWUpOwogCQlpZiAobGVuIDwgMCkKIAkJCXJldHVybiBsZW47CiAK QEAgLTE2MjgsNyArMTY3Miw4IEBAIHN0YXRpYyBzc2l6ZV90IHBrdGdlbl9pZl93cml0ZShzdHJ1 Y3QgZmlsZSAqZmlsZSwKIAl9CiAKIAlpZiAoIXN0cmNtcChuYW1lLCAicXVldWVfbWFwX21pbiIp KSB7Ci0JCWxlbiA9IG51bV9hcmcoJnVzZXJfYnVmZmVyW2ldLCA1LCAmdmFsdWUpOworCQltYXgg PSBtaW4oNSwgY291bnQgLSBpKTsKKwkJbGVuID0gbnVtX2FyZygmdXNlcl9idWZmZXJbaV0sIG1h eCwgJnZhbHVlKTsKIAkJaWYgKGxlbiA8IDApCiAJCQlyZXR1cm4gbGVuOwogCkBAIC0xNjM5LDcg KzE2ODQsOCBAQCBzdGF0aWMgc3NpemVfdCBwa3RnZW5faWZfd3JpdGUoc3RydWN0IGZpbGUgKmZp bGUsCiAJfQogCiAJaWYgKCFzdHJjbXAobmFtZSwgInF1ZXVlX21hcF9tYXgiKSkgewotCQlsZW4g PSBudW1fYXJnKCZ1c2VyX2J1ZmZlcltpXSwgNSwgJnZhbHVlKTsKKwkJbWF4ID0gbWluKDUsIGNv dW50IC0gaSk7CisJCWxlbiA9IG51bV9hcmcoJnVzZXJfYnVmZmVyW2ldLCBtYXgsICZ2YWx1ZSk7 CiAJCWlmIChsZW4gPCAwKQogCQkJcmV0dXJuIGxlbjsKIApAQCAtMTY1Miw3ICsxNjk4LDggQEAg c3RhdGljIHNzaXplX3QgcGt0Z2VuX2lmX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAogCWlmICgh c3RyY21wKG5hbWUsICJtcGxzIikpIHsKIAkJdW5zaWduZWQgaW50IG4sIGNudDsKIAotCQlsZW4g PSBnZXRfbGFiZWxzKCZ1c2VyX2J1ZmZlcltpXSwgcGt0X2Rldik7CisJCW1heCA9IGNvdW50IC0g aTsKKwkJbGVuID0gZ2V0X2xhYmVscygmdXNlcl9idWZmZXJbaV0sIG1heCwgcGt0X2Rldik7CiAJ CWlmIChsZW4gPCAwKQogCQkJcmV0dXJuIGxlbjsKIAkJaSArPSBsZW47CkBAIC0xNjczLDcgKzE3 MjAsOCBAQCBzdGF0aWMgc3NpemVfdCBwa3RnZW5faWZfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUs CiAJfQogCiAJaWYgKCFzdHJjbXAobmFtZSwgInZsYW5faWQiKSkgewotCQlsZW4gPSBudW1fYXJn KCZ1c2VyX2J1ZmZlcltpXSwgNCwgJnZhbHVlKTsKKwkJbWF4ID0gbWluKDQsIGNvdW50IC0gaSk7 CisJCWxlbiA9IG51bV9hcmcoJnVzZXJfYnVmZmVyW2ldLCBtYXgsICZ2YWx1ZSk7CiAJCWlmIChs ZW4gPCAwKQogCQkJcmV0dXJuIGxlbjsKIApAQCAtMTcwMCw3ICsxNzQ4LDggQEAgc3RhdGljIHNz aXplX3QgcGt0Z2VuX2lmX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAogCX0KIAogCWlmICghc3Ry Y21wKG5hbWUsICJ2bGFuX3AiKSkgewotCQlsZW4gPSBudW1fYXJnKCZ1c2VyX2J1ZmZlcltpXSwg MSwgJnZhbHVlKTsKKwkJbWF4ID0gbWluKDEsIGNvdW50IC0gaSk7CisJCWxlbiA9IG51bV9hcmco JnVzZXJfYnVmZmVyW2ldLCBtYXgsICZ2YWx1ZSk7CiAJCWlmIChsZW4gPCAwKQogCQkJcmV0dXJu IGxlbjsKIApAQCAtMTcxNSw3ICsxNzY0LDggQEAgc3RhdGljIHNzaXplX3QgcGt0Z2VuX2lmX3dy aXRlKHN0cnVjdCBmaWxlICpmaWxlLAogCX0KIAogCWlmICghc3RyY21wKG5hbWUsICJ2bGFuX2Nm aSIpKSB7Ci0JCWxlbiA9IG51bV9hcmcoJnVzZXJfYnVmZmVyW2ldLCAxLCAmdmFsdWUpOworCQlt YXggPSBtaW4oMSwgY291bnQgLSBpKTsKKwkJbGVuID0gbnVtX2FyZygmdXNlcl9idWZmZXJbaV0s IG1heCwgJnZhbHVlKTsKIAkJaWYgKGxlbiA8IDApCiAJCQlyZXR1cm4gbGVuOwogCkBAIC0xNzMw LDcgKzE3ODAsOCBAQCBzdGF0aWMgc3NpemVfdCBwa3RnZW5faWZfd3JpdGUoc3RydWN0IGZpbGUg KmZpbGUsCiAJfQogCiAJaWYgKCFzdHJjbXAobmFtZSwgInN2bGFuX2lkIikpIHsKLQkJbGVuID0g bnVtX2FyZygmdXNlcl9idWZmZXJbaV0sIDQsICZ2YWx1ZSk7CisJCW1heCA9IG1pbig0LCBjb3Vu dCAtIGkpOworCQlsZW4gPSBudW1fYXJnKCZ1c2VyX2J1ZmZlcltpXSwgbWF4LCAmdmFsdWUpOwog CQlpZiAobGVuIDwgMCkKIAkJCXJldHVybiBsZW47CiAKQEAgLTE3NTcsNyArMTgwOCw4IEBAIHN0 YXRpYyBzc2l6ZV90IHBrdGdlbl9pZl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAl9CiAKIAlp ZiAoIXN0cmNtcChuYW1lLCAic3ZsYW5fcCIpKSB7Ci0JCWxlbiA9IG51bV9hcmcoJnVzZXJfYnVm ZmVyW2ldLCAxLCAmdmFsdWUpOworCQltYXggPSBtaW4oMSwgY291bnQgLSBpKTsKKwkJbGVuID0g bnVtX2FyZygmdXNlcl9idWZmZXJbaV0sIG1heCwgJnZhbHVlKTsKIAkJaWYgKGxlbiA8IDApCiAJ CQlyZXR1cm4gbGVuOwogCkBAIC0xNzcyLDcgKzE4MjQsOCBAQCBzdGF0aWMgc3NpemVfdCBwa3Rn ZW5faWZfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCiAJfQogCiAJaWYgKCFzdHJjbXAobmFtZSwg InN2bGFuX2NmaSIpKSB7Ci0JCWxlbiA9IG51bV9hcmcoJnVzZXJfYnVmZmVyW2ldLCAxLCAmdmFs dWUpOworCQltYXggPSBtaW4oMSwgY291bnQgLSBpKTsKKwkJbGVuID0gbnVtX2FyZygmdXNlcl9i dWZmZXJbaV0sIG1heCwgJnZhbHVlKTsKIAkJaWYgKGxlbiA8IDApCiAJCQlyZXR1cm4gbGVuOwog CkBAIC0xNzg4LDcgKzE4NDEsOSBAQCBzdGF0aWMgc3NpemVfdCBwa3RnZW5faWZfd3JpdGUoc3Ry dWN0IGZpbGUgKmZpbGUsCiAKIAlpZiAoIXN0cmNtcChuYW1lLCAidG9zIikpIHsKIAkJX191MzIg dG1wX3ZhbHVlOwotCQlsZW4gPSBoZXgzMl9hcmcoJnVzZXJfYnVmZmVyW2ldLCAyLCAmdG1wX3Zh bHVlKTsKKworCQltYXggPSBtaW4oMiwgY291bnQgLSBpKTsKKwkJbGVuID0gaGV4MzJfYXJnKCZ1 c2VyX2J1ZmZlcltpXSwgbWF4LCAmdG1wX3ZhbHVlKTsKIAkJaWYgKGxlbiA8IDApCiAJCQlyZXR1 cm4gbGVuOwogCkBAIC0xODA0LDcgKzE4NTksOSBAQCBzdGF0aWMgc3NpemVfdCBwa3RnZW5faWZf d3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCiAKIAlpZiAoIXN0cmNtcChuYW1lLCAidHJhZmZpY19j bGFzcyIpKSB7CiAJCV9fdTMyIHRtcF92YWx1ZTsKLQkJbGVuID0gaGV4MzJfYXJnKCZ1c2VyX2J1 ZmZlcltpXSwgMiwgJnRtcF92YWx1ZSk7CisKKwkJbWF4ID0gbWluKDIsIGNvdW50IC0gaSk7CisJ CWxlbiA9IGhleDMyX2FyZygmdXNlcl9idWZmZXJbaV0sIG1heCwgJnRtcF92YWx1ZSk7CiAJCWlm IChsZW4gPCAwKQogCQkJcmV0dXJuIGxlbjsKIApAQCAtMTgxOSw3ICsxODc2LDggQEAgc3RhdGlj IHNzaXplX3QgcGt0Z2VuX2lmX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAogCX0KIAogCWlmICgh c3RyY21wKG5hbWUsICJza2JfcHJpb3JpdHkiKSkgewotCQlsZW4gPSBudW1fYXJnKCZ1c2VyX2J1 ZmZlcltpXSwgOSwgJnZhbHVlKTsKKwkJbWF4ID0gbWluKDksIGNvdW50IC0gaSk7CisJCWxlbiA9 IG51bV9hcmcoJnVzZXJfYnVmZmVyW2ldLCBtYXgsICZ2YWx1ZSk7CiAJCWlmIChsZW4gPCAwKQog CQkJcmV0dXJuIGxlbjsKIAotLSAKMi40OC4xCgo=