Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2255048pxb; Mon, 18 Jan 2021 12:28:30 -0800 (PST) X-Google-Smtp-Source: ABdhPJzZk0uNcJAR9xiVt02usC+H+CWmsup7ZJKoVBQl0eS/NMQuI8Um2sjiFGkWQ1sMMib6MdTw X-Received: by 2002:a05:6402:11c7:: with SMTP id j7mr876633edw.290.1611001710696; Mon, 18 Jan 2021 12:28:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611001710; cv=none; d=google.com; s=arc-20160816; b=yLxRJGBaLagNKoMGYhuLqVFXAif+7wPWLubZNjSUwXmeKqtvzMHLc6Bj9hsDJ6maqb T0cosbVNuXmiKQmndt/9Mei9hXMmPvNeNzKHJQFZMLNYoD0+X15Qwc7CCoRDbxuMM7Km o0nDSTOPZCBN7teZ4YwuuuM4Rrq3AVziSP1702iUTaQNWSmT34j/+3FS/OhdLJ/1Lno8 m0UqrA+GhRB4SDgy6IIuHnbay2c55ADAUqX3dddoW3hOo2e8bz8llNsspJLkPM5ItCpo /RGBKAkYshT/KxavTZeSGF0E/kVUdUpboO1GDnww1l4oLSOKvfPz7ieFu69zKn87GpnT HuNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=b+8xkMY4Hqkg5hDVd0agcAbFiuc1dNhhmfsomMD7LuU=; b=bwQSIyhZ6At18wMrGCm2W1D5JVqbJU/BxQ214v8tKs7G1yV5ZwqGpdBI1tO0B9Xp+C 75pqhfRWKQ8wmYaY5iX9mXU9oU/kTGku4p9OMLv5+FH+ZYx6y0xTjc2l0xKRyk/SMjpS oM+/7xTPxUfjqcz7GPcgcedmiy2DLBuCmrQVe3+gBUXM2a/4I95Ns2h/NCNmIx2zA//7 BsRizHcLIMUsOHjw73tT/n6HTciCLk9jr0i8lxguzaLpC1Ljn+3qzbOQ8wGRJ0Kf+X6b Q/snJhrBJVG2BkP8wXta1jK24uZaQTnOCpA6NiGM/2WkTFZfP4BxIaTxCMlQ84S6K4hz EWeQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux-foundation.org header.s=google header.b="CkeVk5c/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z4si1502067ejx.753.2021.01.18.12.28.06; Mon, 18 Jan 2021 12:28:30 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linux-foundation.org header.s=google header.b="CkeVk5c/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389102AbhARU0S (ORCPT + 99 others); Mon, 18 Jan 2021 15:26:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46172 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2437928AbhARUZn (ORCPT ); Mon, 18 Jan 2021 15:25:43 -0500 Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com [IPv6:2a00:1450:4864:20::12a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 43B27C061573 for ; Mon, 18 Jan 2021 12:25:03 -0800 (PST) Received: by mail-lf1-x12a.google.com with SMTP id u25so25890640lfc.2 for ; Mon, 18 Jan 2021 12:25:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=b+8xkMY4Hqkg5hDVd0agcAbFiuc1dNhhmfsomMD7LuU=; b=CkeVk5c/1Zwx9H7TlnymrtSZaWrYtwnPkIAFGm0KQEcPqrnkw2i8r2h5o1l9gaxG1b Fnx7wPf3Qrq+d1/agY5eveCH0bBER72nErIcaAuOb/D+BxBYu0iLjaZIaNe0+6Tilavo T46hOjgzbi2x9TIFvWWg+Dedf860NVOwhWeks= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=b+8xkMY4Hqkg5hDVd0agcAbFiuc1dNhhmfsomMD7LuU=; b=bQRBvsnmZArZUKeysQ6urmRvC8uHjQJHH+BpGF5mWfyTHAGSlHk+7g5d1RCOTNugZv Hk57h4JsC9tJmu8aoAFe73dUWQOHweC7vw2hAVR+9FDnJCXlwfRBl5tT82NtuU5XEZCx IiZi1yZ0LkSgXi9sZPDS/0P2f3pbY9RIY7JZQo/EJ2hnX7w4yS/4FyAs7cEDhGWWtVly Dlz9urgALxX2TJ9JGYguFMPxrmjiDVM7dZK4a2Q7BZmJtjscuygRmVfWFl8u9YS1n+fv o5+7mXORve6/xwW042j51B1Ct8PfNb+5cKE0f/ZOkYonIl7MLBc41le2PV9n7sqK2MIn 5IDA== X-Gm-Message-State: AOAM531yjx6YbDJEdXF2eJGHFGgBFy/CjWfausuaVnn2+VRXNmDcM4VT b640GjtFzVMhrg5mQsTpM0htbdJSMukpBQ== X-Received: by 2002:a05:6512:34d3:: with SMTP id w19mr373265lfr.180.1611001501472; Mon, 18 Jan 2021 12:25:01 -0800 (PST) Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com. [209.85.167.51]) by smtp.gmail.com with ESMTPSA id d24sm2076451lfl.30.2021.01.18.12.24.59 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 18 Jan 2021 12:24:59 -0800 (PST) Received: by mail-lf1-f51.google.com with SMTP id o10so25830225lfl.13 for ; Mon, 18 Jan 2021 12:24:59 -0800 (PST) X-Received: by 2002:ac2:420a:: with SMTP id y10mr330266lfh.377.1611001499419; Mon, 18 Jan 2021 12:24:59 -0800 (PST) MIME-Version: 1.0 References: <20210118081615.GA1397@lst.de> In-Reply-To: From: Linus Torvalds Date: Mon, 18 Jan 2021 12:24:43 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: Splicing to/from a tty To: Christoph Hellwig Cc: Oliver Giles , Linux Kernel Mailing List , Greg Kroah-Hartman , Al Viro Content-Type: multipart/mixed; boundary="0000000000001b2e1b05b932848e" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --0000000000001b2e1b05b932848e Content-Type: text/plain; charset="UTF-8" On Mon, Jan 18, 2021 at 11:36 AM Linus Torvalds wrote: > > Of course, it probably would be really nice to try to convert > tty_read() to use the same model that we have for tty_write(), and > then make the ld->ops->read() function actually take a kernel buffer > instead. > > I wonder how painful that would be. Oh, that seems _much_ less painful than I thought it would be. This is a COMPLETELY BROKEN patch that builds cleanly for me. I say that it's completely broken for three reasons: (a) that extra "int dummy" argument is there purely to force build errors if some user hasn't been converted. (b) I intentionally made the conversion truly stupid. It's not "broken", but it needs cleanup for nasty variable names (ie things like me changing that already badly named "b" variable to "kbp" to again catch all users at build time) (c) the buffer handling in tty_read() is actively broken. Things like HDLC rely on getting a proper buffer that can hold the whole packet, and the max packet size is actually potentially quite big. But the only real problem does seem to be HDLC, which has a default maximum frame size of 4k, but it can be set all the way up to 64kB as a module parameter. So that tty_read() conversion in this patch is complete garbage, but I really just wrote this to see how many painful places there are. And there are not many. The HDLC case could probably be done fairly well by - have a small on-stack buffer for the "small read" case - have a kmalloc() buffer that defaults to one page for bigger reads - grow the kmalloc() buffer if the ->read function returns -EOVERFLOW Comments? NOTE! This does *not* do the actual splice_read() implementation. No, this literally is just the preparatory stage for that by starting the whole "make the tty ldisc read path use a kernel buffer instead". Anybody want to play with this? I'd suggest keeping that "dummy" parameter around for a while - I did an allmodconfig build with this, but if there are any architecture-specific non-x86-64 cases I wouldn't have seen them. Linus --0000000000001b2e1b05b932848e Content-Type: application/octet-stream; name=patch Content-Disposition: attachment; filename=patch Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kk30opz20 IGRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9sZGlzYy5jIHwgIDIgKy0KIGRyaXZlcnMvaW5wdXQvc2Vy aW8vc2VycG9ydC5jIHwgIDMgKystCiBkcml2ZXJzL25ldC9wcHAvcHBwX2FzeW5jLmMgICB8ICAy ICstCiBkcml2ZXJzL25ldC9wcHAvcHBwX3N5bmN0dHkuYyB8ICAyICstCiBkcml2ZXJzL3R0eS9u X2dzbS5jICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL3R0eS9uX2hkbGMuYyAgICAgICAgICB8 ICA4ICsrKy0tLS0tCiBkcml2ZXJzL3R0eS9uX251bGwuYyAgICAgICAgICB8ICAyICstCiBkcml2 ZXJzL3R0eS9uX3RyYWNlcm91dGVyLmMgICB8ICAyICstCiBkcml2ZXJzL3R0eS9uX3RyYWNlc2lu ay5jICAgICB8ICAyICstCiBkcml2ZXJzL3R0eS9uX3R0eS5jICAgICAgICAgICB8IDM5ICsrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy90dHkvdHR5X2lvLmMg ICAgICAgICAgfCAxMyArKysrKysrKystLS0tCiBpbmNsdWRlL2xpbnV4L3R0eV9sZGlzYy5oICAg ICB8ICAyICstCiBuZXQvbmZjL25jaS91YXJ0LmMgICAgICAgICAgICB8ICAyICstCiAxMyBmaWxl cyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCA0MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2JsdWV0b290aC9oY2lfbGRpc2MuYyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9s ZGlzYy5jCmluZGV4IGY4M2Q2N2VhZmM5Zi4uMzcxYzIxNzE1MjAyIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2JsdWV0b290aC9oY2lfbGRpc2MuYworKysgYi9kcml2ZXJzL2JsdWV0b290aC9oY2lfbGRp c2MuYwpAQCAtODAyLDcgKzgwMiw3IEBAIHN0YXRpYyBpbnQgaGNpX3VhcnRfdHR5X2lvY3RsKHN0 cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICpmaWxlLAogICogV2UgZG9uJ3QgcHJv dmlkZSByZWFkL3dyaXRlL3BvbGwgaW50ZXJmYWNlIGZvciB1c2VyIHNwYWNlLgogICovCiBzdGF0 aWMgc3NpemVfdCBoY2lfdWFydF90dHlfcmVhZChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1 Y3QgZmlsZSAqZmlsZSwKLQkJCQkgdW5zaWduZWQgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IG5y KQorCQkJCSBpbnQgZHVtbXksIHVuc2lnbmVkIGNoYXIgKmJ1Ziwgc2l6ZV90IG5yKQogewogCXJl dHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9zZXJpby9zZXJwb3J0LmMgYi9k cml2ZXJzL2lucHV0L3NlcmlvL3NlcnBvcnQuYwppbmRleCA4YWM5NzBhNDIzZGUuLjFhOWFmZDM1 MGE3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9zZXJpby9zZXJwb3J0LmMKKysrIGIvZHJp dmVycy9pbnB1dC9zZXJpby9zZXJwb3J0LmMKQEAgLTE1Niw3ICsxNTYsOCBAQCBzdGF0aWMgdm9p ZCBzZXJwb3J0X2xkaXNjX3JlY2VpdmUoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgY29uc3QgdW5z aWduZWQgY2hhciAqYwogICogcmV0dXJuaW5nIDAgY2hhcmFjdGVycy4KICAqLwogCi1zdGF0aWMg c3NpemVfdCBzZXJwb3J0X2xkaXNjX3JlYWQoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVj dCBmaWxlICogZmlsZSwgdW5zaWduZWQgY2hhciBfX3VzZXIgKiBidWYsIHNpemVfdCBucikKK3N0 YXRpYyBzc2l6ZV90IHNlcnBvcnRfbGRpc2NfcmVhZChzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwg c3RydWN0IGZpbGUgKiBmaWxlLAorCQkJCSAgaW50IGR1bW15LCB1bnNpZ25lZCBjaGFyICprYnVm LCBzaXplX3QgbnIpCiB7CiAJc3RydWN0IHNlcnBvcnQgKnNlcnBvcnQgPSAoc3RydWN0IHNlcnBv cnQqKSB0dHktPmRpc2NfZGF0YTsKIAlzdHJ1Y3Qgc2VyaW8gKnNlcmlvOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvcHBwL3BwcF9hc3luYy5jIGIvZHJpdmVycy9uZXQvcHBwL3BwcF9hc3luYy5j CmluZGV4IDI5YTA5MTdhODFlNi4uNTg3ODlhNzAyODJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25l dC9wcHAvcHBwX2FzeW5jLmMKKysrIGIvZHJpdmVycy9uZXQvcHBwL3BwcF9hc3luYy5jCkBAIC0y NTksNyArMjU5LDcgQEAgc3RhdGljIGludCBwcHBfYXN5bmN0dHlfaGFuZ3VwKHN0cnVjdCB0dHlf c3RydWN0ICp0dHkpCiAgKi8KIHN0YXRpYyBzc2l6ZV90CiBwcHBfYXN5bmN0dHlfcmVhZChzdHJ1 Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqZmlsZSwKLQkJICB1bnNpZ25lZCBjaGFy IF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQpCisJCSAgaW50IGR1bW15LCB1bnNpZ25lZCBjaGFy ICpidWYsIHNpemVfdCBjb3VudCkKIHsKIAlyZXR1cm4gLUVBR0FJTjsKIH0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L3BwcC9wcHBfc3luY3R0eS5jIGIvZHJpdmVycy9uZXQvcHBwL3BwcF9zeW5j dHR5LmMKaW5kZXggMGYzMzg3NTJjMzhiLi43YWQ0MTgwYjEzNjAgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbmV0L3BwcC9wcHBfc3luY3R0eS5jCisrKyBiL2RyaXZlcnMvbmV0L3BwcC9wcHBfc3luY3R0 eS5jCkBAIC0yNTcsNyArMjU3LDcgQEAgc3RhdGljIGludCBwcHBfc3luY19oYW5ndXAoc3RydWN0 IHR0eV9zdHJ1Y3QgKnR0eSkKICAqLwogc3RhdGljIHNzaXplX3QKIHBwcF9zeW5jX3JlYWQoc3Ry dWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKmZpbGUsCi0JICAgICAgIHVuc2lnbmVk IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCkKKwkgICAgICBpbnQgZHVtbXksIHVuc2ln bmVkIGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQogewogCXJldHVybiAtRUFHQUlOOwogfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy90dHkvbl9nc20uYyBiL2RyaXZlcnMvdHR5L25fZ3NtLmMKaW5kZXgg YzY3NmZhODllZTBiLi5lMzdiYTg5MDNjODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L25fZ3Nt LmMKKysrIGIvZHJpdmVycy90dHkvbl9nc20uYwpAQCAtMjU1OSw3ICsyNTU5LDcgQEAgc3RhdGlj IHZvaWQgZ3NtbGRfd3JpdGVfd2FrZXVwKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpCiAgKi8KIAog c3RhdGljIHNzaXplX3QgZ3NtbGRfcmVhZChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3Qg ZmlsZSAqZmlsZSwKLQkJCSB1bnNpZ25lZCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbnIpCisJ CQkgIGludCBkdW1teSwgdW5zaWduZWQgY2hhciAqYnVmLCBzaXplX3QgbnIpCiB7CiAJcmV0dXJu IC1FT1BOT1RTVVBQOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvbl9oZGxjLmMgYi9kcml2 ZXJzL3R0eS9uX2hkbGMuYwppbmRleCAxMjU1N2VlMWVkYjYuLmM2MmQ3MTlhZGFhYSAxMDA2NDQK LS0tIGEvZHJpdmVycy90dHkvbl9oZGxjLmMKKysrIGIvZHJpdmVycy90dHkvbl9oZGxjLmMKQEAg LTQxNiw3ICs0MTYsNyBAQCBzdGF0aWMgdm9pZCBuX2hkbGNfdHR5X3JlY2VpdmUoc3RydWN0IHR0 eV9zdHJ1Y3QgKnR0eSwgY29uc3QgX191OCAqZGF0YSwKICAqIFJldHVybnMgdGhlIG51bWJlciBv ZiBieXRlcyByZXR1cm5lZCBvciBlcnJvciBjb2RlLgogICovCiBzdGF0aWMgc3NpemVfdCBuX2hk bGNfdHR5X3JlYWQoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKmZpbGUsCi0J CQkgICBfX3U4IF9fdXNlciAqYnVmLCBzaXplX3QgbnIpCisJCQkgICBpbnQgZHVtbXksIF9fdTgg KmtidWYsIHNpemVfdCBucikKIHsKIAlzdHJ1Y3Qgbl9oZGxjICpuX2hkbGMgPSB0dHktPmRpc2Nf ZGF0YTsKIAlpbnQgcmV0ID0gMDsKQEAgLTQ0MiwxMCArNDQyLDggQEAgc3RhdGljIHNzaXplX3Qg bl9oZGxjX3R0eV9yZWFkKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICpmaWxl LAogCQkJCXJldCA9IC1FT1ZFUkZMT1c7CiAJCQl9IGVsc2UgewogCQkJCV9fc2V0X2N1cnJlbnRf c3RhdGUoVEFTS19SVU5OSU5HKTsKLQkJCQlpZiAoY29weV90b191c2VyKGJ1ZiwgcmJ1Zi0+YnVm LCByYnVmLT5jb3VudCkpCi0JCQkJCXJldCA9IC1FRkFVTFQ7Ci0JCQkJZWxzZQotCQkJCQlyZXQg PSByYnVmLT5jb3VudDsKKwkJCQltZW1jcHkoa2J1ZiwgcmJ1Zi0+YnVmLCByYnVmLT5jb3VudCk7 CisJCQkJcmV0ID0gcmJ1Zi0+Y291bnQ7CiAJCQl9CiAKIAkJCWlmIChuX2hkbGMtPnJ4X2ZyZWVf YnVmX2xpc3QuY291bnQgPgpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvbl9udWxsLmMgYi9kcml2 ZXJzL3R0eS9uX251bGwuYwppbmRleCA5NmZlYWJhZTQ3NDAuLmQ0MjM2M2M2MjMzMyAxMDA2NDQK LS0tIGEvZHJpdmVycy90dHkvbl9udWxsLmMKKysrIGIvZHJpdmVycy90dHkvbl9udWxsLmMKQEAg LTIwLDcgKzIwLDcgQEAgc3RhdGljIHZvaWQgbl9udWxsX2Nsb3NlKHN0cnVjdCB0dHlfc3RydWN0 ICp0dHkpCiB9CiAKIHN0YXRpYyBzc2l6ZV90IG5fbnVsbF9yZWFkKHN0cnVjdCB0dHlfc3RydWN0 ICp0dHksIHN0cnVjdCBmaWxlICpmaWxlLAotCQkJICAgdW5zaWduZWQgY2hhciBfX3VzZXIgKiBi dWYsIHNpemVfdCBucikKKwkJCSAgIGludCBkdW1teSwgdW5zaWduZWQgY2hhciAqYnVmLCBzaXpl X3QgbnIpCiB7CiAJcmV0dXJuIC1FT1BOT1RTVVBQOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90 dHkvbl90cmFjZXJvdXRlci5jIGIvZHJpdmVycy90dHkvbl90cmFjZXJvdXRlci5jCmluZGV4IDQ0 NzlhZjRkMmZhNS4uOWVhZGFhYjI5ZDdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9uX3RyYWNl cm91dGVyLmMKKysrIGIvZHJpdmVycy90dHkvbl90cmFjZXJvdXRlci5jCkBAIC0xMTgsNyArMTE4 LDcgQEAgc3RhdGljIHZvaWQgbl90cmFjZXJvdXRlcl9jbG9zZShzdHJ1Y3QgdHR5X3N0cnVjdCAq dHR5KQogICoJIC1FSU5WQUwKICAqLwogc3RhdGljIHNzaXplX3Qgbl90cmFjZXJvdXRlcl9yZWFk KHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICpmaWxlLAotCQkJCSAgdW5zaWdu ZWQgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IG5yKSB7CisJCQkJICBpbnQgZHVtbXksIHVuc2ln bmVkIGNoYXIgKmJ1Ziwgc2l6ZV90IG5yKSB7CiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvdHR5L25fdHJhY2VzaW5rLmMgYi9kcml2ZXJzL3R0eS9uX3RyYWNlc2lu ay5jCmluZGV4IGQ5NmJhODJjYzM1Ni4uYTg1MDhhMDdiYzBkIDEwMDY0NAotLS0gYS9kcml2ZXJz L3R0eS9uX3RyYWNlc2luay5jCisrKyBiL2RyaXZlcnMvdHR5L25fdHJhY2VzaW5rLmMKQEAgLTEx NSw3ICsxMTUsNyBAQCBzdGF0aWMgdm9pZCBuX3RyYWNlc2lua19jbG9zZShzdHJ1Y3QgdHR5X3N0 cnVjdCAqdHR5KQogICoJIC1FSU5WQUwKICAqLwogc3RhdGljIHNzaXplX3Qgbl90cmFjZXNpbmtf cmVhZChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqZmlsZSwKLQkJCQl1bnNp Z25lZCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbnIpIHsKKwkJCQlpbnQgZHVtbXksIHVuc2ln bmVkIGNoYXIgKmJ1Ziwgc2l6ZV90IG5yKSB7CiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvdHR5L25fdHR5LmMgYi9kcml2ZXJzL3R0eS9uX3R0eS5jCmluZGV4IDMx OWQ2OGM4YTVkZi4uZTQ2ZmEwOGYzMzU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9uX3R0eS5j CisrKyBiL2RyaXZlcnMvdHR5L25fdHR5LmMKQEAgLTE5NjIsNyArMTk2Miw3IEBAIHN0YXRpYyBp bmxpbmUgaW50IGlucHV0X2F2YWlsYWJsZV9wKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBw b2xsKQogICovCiAKIHN0YXRpYyBpbnQgY29weV9mcm9tX3JlYWRfYnVmKHN0cnVjdCB0dHlfc3Ry dWN0ICp0dHksCi0JCQkJICAgICAgdW5zaWduZWQgY2hhciBfX3VzZXIgKipiLAorCQkJCSAgICAg IHVuc2lnbmVkIGNoYXIgKiprYnAsCiAJCQkJICAgICAgc2l6ZV90ICpucikKIAogewpAQCAtMTk3 OCw4ICsxOTc4LDcgQEAgc3RhdGljIGludCBjb3B5X2Zyb21fcmVhZF9idWYoc3RydWN0IHR0eV9z dHJ1Y3QgKnR0eSwKIAluID0gbWluKCpuciwgbik7CiAJaWYgKG4pIHsKIAkJdW5zaWduZWQgY2hh ciAqZnJvbSA9IHJlYWRfYnVmX2FkZHIobGRhdGEsIHRhaWwpOwotCQlyZXR2YWwgPSBjb3B5X3Rv X3VzZXIoKmIsIGZyb20sIG4pOwotCQluIC09IHJldHZhbDsKKwkJbWVtY3B5KCprYnAsIGZyb20s IG4pOwogCQlpc19lb2YgPSBuID09IDEgJiYgKmZyb20gPT0gRU9GX0NIQVIodHR5KTsKIAkJdHR5 X2F1ZGl0X2FkZF9kYXRhKHR0eSwgZnJvbSwgbik7CiAJCXplcm9fYnVmZmVyKHR0eSwgZnJvbSwg bik7CkBAIC0xOTg4LDcgKzE5ODcsNyBAQCBzdGF0aWMgaW50IGNvcHlfZnJvbV9yZWFkX2J1Zihz dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LAogCQlpZiAoTF9FWFRQUk9DKHR0eSkgJiYgbGRhdGEtPmlj YW5vbiAmJiBpc19lb2YgJiYKIAkJICAgIChoZWFkID09IGxkYXRhLT5yZWFkX3RhaWwpKQogCQkJ biA9IDA7Ci0JCSpiICs9IG47CisJCSprYnAgKz0gbjsKIAkJKm5yIC09IG47CiAJfQogCXJldHVy biByZXR2YWw7CkBAIC0yMTMyLDEwICsyMTMxLDEwIEBAIHN0YXRpYyBpbnQgam9iX2NvbnRyb2wo c3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKmZpbGUpCiAgKi8KIAogc3RhdGlj IHNzaXplX3Qgbl90dHlfcmVhZChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAq ZmlsZSwKLQkJCSB1bnNpZ25lZCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbnIpCisJCQkgIGlu dCBkdW1teSwgdW5zaWduZWQgY2hhciAqa2J1Ziwgc2l6ZV90IG5yKQogewogCXN0cnVjdCBuX3R0 eV9kYXRhICpsZGF0YSA9IHR0eS0+ZGlzY19kYXRhOwotCXVuc2lnbmVkIGNoYXIgX191c2VyICpi ID0gYnVmOworCXVuc2lnbmVkIGNoYXIgKmtiID0ga2J1ZjsKIAlERUZJTkVfV0FJVF9GVU5DKHdh aXQsIHdva2VuX3dha2VfZnVuY3Rpb24pOwogCWludCBjOwogCWludCBtaW5pbXVtLCB0aW1lOwpA QCAtMjE4MSwxNyArMjE4MCwxMyBAQCBzdGF0aWMgc3NpemVfdCBuX3R0eV9yZWFkKHN0cnVjdCB0 dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICpmaWxlLAogCQkvKiBGaXJzdCB0ZXN0IGZvciBz dGF0dXMgY2hhbmdlLiAqLwogCQlpZiAocGFja2V0ICYmIHR0eS0+bGluay0+Y3RybF9zdGF0dXMp IHsKIAkJCXVuc2lnbmVkIGNoYXIgY3M7Ci0JCQlpZiAoYiAhPSBidWYpCisJCQlpZiAoa2IgIT0g a2J1ZikKIAkJCQlicmVhazsKIAkJCXNwaW5fbG9ja19pcnEoJnR0eS0+bGluay0+Y3RybF9sb2Nr KTsKIAkJCWNzID0gdHR5LT5saW5rLT5jdHJsX3N0YXR1czsKIAkJCXR0eS0+bGluay0+Y3RybF9z dGF0dXMgPSAwOwogCQkJc3Bpbl91bmxvY2tfaXJxKCZ0dHktPmxpbmstPmN0cmxfbG9jayk7Ci0J CQlpZiAocHV0X3VzZXIoY3MsIGIpKSB7Ci0JCQkJcmV0dmFsID0gLUVGQVVMVDsKLQkJCQlicmVh azsKLQkJCX0KLQkJCWIrKzsKKwkJCSprYisrID0gY3M7CiAJCQluci0tOwogCQkJYnJlYWs7CiAJ CX0KQEAgLTIyMzQsMjQgKzIyMjksMjAgQEAgc3RhdGljIHNzaXplX3Qgbl90dHlfcmVhZChzdHJ1 Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJfQogCiAJCWlmIChsZGF0 YS0+aWNhbm9uICYmICFMX0VYVFBST0ModHR5KSkgewotCQkJcmV0dmFsID0gY2Fub25fY29weV9m cm9tX3JlYWRfYnVmKHR0eSwgJmIsICZucik7CisJCQlyZXR2YWwgPSBjYW5vbl9jb3B5X2Zyb21f cmVhZF9idWYodHR5LCAma2IsICZucik7CiAJCQlpZiAocmV0dmFsKQogCQkJCWJyZWFrOwogCQl9 IGVsc2UgewogCQkJaW50IHVuY29waWVkOwogCiAJCQkvKiBEZWFsIHdpdGggcGFja2V0IG1vZGUu ICovCi0JCQlpZiAocGFja2V0ICYmIGIgPT0gYnVmKSB7Ci0JCQkJaWYgKHB1dF91c2VyKFRJT0NQ S1RfREFUQSwgYikpIHsKLQkJCQkJcmV0dmFsID0gLUVGQVVMVDsKLQkJCQkJYnJlYWs7Ci0JCQkJ fQotCQkJCWIrKzsKKwkJCWlmIChwYWNrZXQgJiYga2IgPT0ga2J1ZikgeworCQkJCSprYisrID0g VElPQ1BLVF9EQVRBOwogCQkJCW5yLS07CiAJCQl9CiAKLQkJCXVuY29waWVkID0gY29weV9mcm9t X3JlYWRfYnVmKHR0eSwgJmIsICZucik7Ci0JCQl1bmNvcGllZCArPSBjb3B5X2Zyb21fcmVhZF9i dWYodHR5LCAmYiwgJm5yKTsKKwkJCXVuY29waWVkID0gY29weV9mcm9tX3JlYWRfYnVmKHR0eSwg JmtiLCAmbnIpOworCQkJdW5jb3BpZWQgKz0gY29weV9mcm9tX3JlYWRfYnVmKHR0eSwgJmtiLCAm bnIpOwogCQkJaWYgKHVuY29waWVkKSB7CiAJCQkJcmV0dmFsID0gLUVGQVVMVDsKIAkJCQlicmVh azsKQEAgLTIyNjAsNyArMjI1MSw3IEBAIHN0YXRpYyBzc2l6ZV90IG5fdHR5X3JlYWQoc3RydWN0 IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKmZpbGUsCiAKIAkJbl90dHlfY2hlY2tfdW50 aHJvdHRsZSh0dHkpOwogCi0JCWlmIChiIC0gYnVmID49IG1pbmltdW0pCisJCWlmIChrYiAtIGti dWYgPj0gbWluaW11bSkKIAkJCWJyZWFrOwogCQlpZiAodGltZSkKIAkJCXRpbWVvdXQgPSB0aW1l OwpAQCAtMjI3Miw4ICsyMjYzLDggQEAgc3RhdGljIHNzaXplX3Qgbl90dHlfcmVhZChzdHJ1Y3Qg dHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqZmlsZSwKIAlyZW1vdmVfd2FpdF9xdWV1ZSgm dHR5LT5yZWFkX3dhaXQsICZ3YWl0KTsKIAltdXRleF91bmxvY2soJmxkYXRhLT5hdG9taWNfcmVh ZF9sb2NrKTsKIAotCWlmIChiIC0gYnVmKQotCQlyZXR2YWwgPSBiIC0gYnVmOworCWlmIChrYiAt IGtidWYpCisJCXJldHZhbCA9IGtiIC0ga2J1ZjsKIAogCXJldHVybiByZXR2YWw7CiB9CmRpZmYg LS1naXQgYS9kcml2ZXJzL3R0eS90dHlfaW8uYyBiL2RyaXZlcnMvdHR5L3R0eV9pby5jCmluZGV4 IDgwMzQ0ODkzMzdkNy4uZDJkNTU4MDQ2NDIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS90dHlf aW8uYworKysgYi9kcml2ZXJzL3R0eS90dHlfaW8uYwpAQCAtODY0LDEwICs4NjQsMTUgQEAgc3Rh dGljIHNzaXplX3QgdHR5X3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWYs IHNpemVfdCBjb3VudCwKIAlsZCA9IHR0eV9sZGlzY19yZWZfd2FpdCh0dHkpOwogCWlmICghbGQp CiAJCXJldHVybiBodW5nX3VwX3R0eV9yZWFkKGZpbGUsIGJ1ZiwgY291bnQsIHBwb3MpOwotCWlm IChsZC0+b3BzLT5yZWFkKQotCQlpID0gbGQtPm9wcy0+cmVhZCh0dHksIGZpbGUsIGJ1ZiwgY291 bnQpOwotCWVsc2UKLQkJaSA9IC1FSU87CisJaSA9IC1FSU87CisJaWYgKGxkLT5vcHMtPnJlYWQp IHsKKwkJY2hhciBrZXJuZWxfYnVmWzMyXTsKKwkJaWYgKGNvdW50ID4gc2l6ZW9mKGtlcm5lbF9i dWYpKQorCQkJY291bnQgPSBzaXplb2Yoa2VybmVsX2J1Zik7CisJCWkgPSBsZC0+b3BzLT5yZWFk KHR0eSwgZmlsZSwgMCwga2VybmVsX2J1ZiwgY291bnQpOworCQlpZiAoaSA+IDAgJiYgY29weV90 b191c2VyKGJ1Ziwga2VybmVsX2J1ZiwgaSkpCisJCQlpID0gLUVGQVVMVDsKKwl9CiAJdHR5X2xk aXNjX2RlcmVmKGxkKTsKIAogCWlmIChpID4gMCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgv dHR5X2xkaXNjLmggYi9pbmNsdWRlL2xpbnV4L3R0eV9sZGlzYy5oCmluZGV4IGIxZTYwNDNlOTkx Ny4uNTE2ZDk0NmU1N2I2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3R0eV9sZGlzYy5oCisr KyBiL2luY2x1ZGUvbGludXgvdHR5X2xkaXNjLmgKQEAgLTE4NSw3ICsxODUsNyBAQCBzdHJ1Y3Qg dHR5X2xkaXNjX29wcyB7CiAJdm9pZAkoKmNsb3NlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKIAl2 b2lkCSgqZmx1c2hfYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKIAlzc2l6ZV90CSgq cmVhZCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKmZpbGUsCi0JCQl1bnNp Z25lZCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbnIpOworCQkJaW50IGR1bW15LCB1bnNpZ25l ZCBjaGFyICpidWYsIHNpemVfdCBucik7CiAJc3NpemVfdAkoKndyaXRlKShzdHJ1Y3QgdHR5X3N0 cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJCSBjb25zdCB1bnNpZ25lZCBjaGFyICpi dWYsIHNpemVfdCBucik7CiAJaW50CSgqaW9jdGwpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0 cnVjdCBmaWxlICpmaWxlLApkaWZmIC0tZ2l0IGEvbmV0L25mYy9uY2kvdWFydC5jIGIvbmV0L25m Yy9uY2kvdWFydC5jCmluZGV4IDExYjU1NGNlMDdmZi4uYzRkNDU3YmExNjY4IDEwMDY0NAotLS0g YS9uZXQvbmZjL25jaS91YXJ0LmMKKysrIGIvbmV0L25mYy9uY2kvdWFydC5jCkBAIC0yOTIsNyAr MjkyLDcgQEAgc3RhdGljIGludCBuY2lfdWFydF90dHlfaW9jdGwoc3RydWN0IHR0eV9zdHJ1Y3Qg KnR0eSwgc3RydWN0IGZpbGUgKmZpbGUsCiAKIC8qIFdlIGRvbid0IHByb3ZpZGUgcmVhZC93cml0 ZS9wb2xsIGludGVyZmFjZSBmb3IgdXNlciBzcGFjZS4gKi8KIHN0YXRpYyBzc2l6ZV90IG5jaV91 YXJ0X3R0eV9yZWFkKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICpmaWxlLAot CQkJCSB1bnNpZ25lZCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbnIpCisJCQkJIGludCBkdW1t eSwgdW5zaWduZWQgY2hhciAqYnVmLCBzaXplX3QgbnIpCiB7CiAJcmV0dXJuIDA7CiB9Cg== --0000000000001b2e1b05b932848e--