Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp5153322ybp; Mon, 7 Oct 2019 21:10:39 -0700 (PDT) X-Google-Smtp-Source: APXvYqxyxbJg5yRlbeYK8cKVa8AkLPckwqaU/GRaIhcqBjpHR3l3+SAycxHsCUGUinQ6UlmHpF0X X-Received: by 2002:a17:906:82d3:: with SMTP id a19mr26220131ejy.151.1570507839288; Mon, 07 Oct 2019 21:10:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570507839; cv=none; d=google.com; s=arc-20160816; b=Lhd1E84yE4+kTBw/j2CMbY6BVxKL48km+a5Jv9H0hNSWyfT/co7K/7u242WCP79xfB MavvENHWrtu7WTAmYKlQZGYG9hmr2qfH8OS/xiOgfG/q6NUPvYr2+vDVOUV6hw+c+t3I HkHxs3MC2VR1o7yV4HRq8cUb9aKkeNaK28bBBOhdofRAZY2kux+rs9lOR7OD/L04Rt9q hDWBdsj66maJuS86GxGNWUoMcfho83YdnO8T+1am45OuKwaxbAIIPllJVdzz1VMGfNGH 09VqnbAd1aG7jExvVtz92LM6WPLU/XJl/ewl/WjpFQkzyaxLX8MqHwGHEiv5kgYrW+GH 8FTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=bnKFcjxBKN6Qpqxh5XkObDMG8fH2wT4HUjifdtCIY7U=; b=W/FzbswNoIwSW6aj8n0Ewh+yQCM9d4Knjx0qiM93IQjXQZw03RvbpVlGDSG6AlB2gH DBh+/8B2g0EM2AyzkYCi/uuYA/nOy+YR7b+g2HoOm8uNgrvb6DE06eOcVXfhUv2QlPoV QynfLUmfVw/3tAZfmZArsEu2qhmUvAxtdJ/9MiZYZr0r3uno9B8OqePnBvbEVZn5Y4HI 5nEnk/LQraiJYOPzmctyFIExbmnB8XD/QDtZG1OO2k7HGvIYkkECv0qum5QBULmCiayY 3TIb++JmGtSDiaemFapebYLlUn8ptq0gxEx/XtkosNBpyZjEUtGKOvx0FN/duvL73wCc HS3g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux-foundation.org header.s=google header.b=LCTCldBd; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p14si11007669eda.411.2019.10.07.21.10.15; Mon, 07 Oct 2019 21:10:39 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linux-foundation.org header.s=google header.b=LCTCldBd; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729989AbfJHEJg (ORCPT + 99 others); Tue, 8 Oct 2019 00:09:36 -0400 Received: from mail-lf1-f66.google.com ([209.85.167.66]:46717 "EHLO mail-lf1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725781AbfJHEJf (ORCPT ); Tue, 8 Oct 2019 00:09:35 -0400 Received: by mail-lf1-f66.google.com with SMTP id t8so10785125lfc.13 for ; Mon, 07 Oct 2019 21:09:33 -0700 (PDT) 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=bnKFcjxBKN6Qpqxh5XkObDMG8fH2wT4HUjifdtCIY7U=; b=LCTCldBdoohmi8kv7PcXweH6uWk7dC5wCVDPU9bVrAuYhDOtJV9+8ZUI3ZUecmGXb8 63QN/52Kf/NOj4RH1TMXblY6soPXq/L0PBd6sRBHAJAl8T1SAHO0vB0b1ljtolfq8auX ZtLweTHsVLVOlJLg/B4F8wbqExDFYmMKBwmPU= 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=bnKFcjxBKN6Qpqxh5XkObDMG8fH2wT4HUjifdtCIY7U=; b=pK0yLNVoWDlxm1SzIMK7h8J+O2mOW+Md7y6nwU0McgXgoukbiv0kydfU7Cbjff8awn /zsuzpk+elPzl7Ong7WchOGLTmw7Fk+HhPEhkz3SvvXHcNeIJ9IsFf+gLvxKX4i/5KPw rHeTVHZiT6bwYrKdxbLm6sAQMWM1aSdfuNeie6eTBIRW66OGbi8HjNUmKcK1uF6cfRI2 S0Qt3YcaIVaFaubqYiv1Ycu/L6dW+oooLr0R6t0oqaNbAjX3vkFUl3pTI+dvDCVDyO6j Lha0bI4CB9egHpDsX5VpthABE75EzFZjdGb9rOF8FYWkJtt70skQxUi171AzzXEpNSip DKnA== X-Gm-Message-State: APjAAAX9zyQjyGXc3q0F8n/PQDXsY0mRyCrvyVUNUmpNRd/jzFuGnc64 9T/Gh0ExBJOW9FBVCJXGyHqZVXaCITE= X-Received: by 2002:ac2:5983:: with SMTP id w3mr18328788lfn.121.1570507772379; Mon, 07 Oct 2019 21:09:32 -0700 (PDT) Received: from mail-lj1-f174.google.com (mail-lj1-f174.google.com. [209.85.208.174]) by smtp.gmail.com with ESMTPSA id s1sm3200115lfd.14.2019.10.07.21.09.31 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 07 Oct 2019 21:09:31 -0700 (PDT) Received: by mail-lj1-f174.google.com with SMTP id l21so15960609lje.4 for ; Mon, 07 Oct 2019 21:09:31 -0700 (PDT) X-Received: by 2002:a2e:86d5:: with SMTP id n21mr20643986ljj.1.1570507770530; Mon, 07 Oct 2019 21:09:30 -0700 (PDT) MIME-Version: 1.0 References: <20191006222046.GA18027@roeck-us.net> <5f06c138-d59a-d811-c886-9e73ce51924c@roeck-us.net> <20191007012437.GK26530@ZenIV.linux.org.uk> <20191007025046.GL26530@ZenIV.linux.org.uk> <20191008032912.GQ26530@ZenIV.linux.org.uk> In-Reply-To: <20191008032912.GQ26530@ZenIV.linux.org.uk> From: Linus Torvalds Date: Mon, 7 Oct 2019 21:09:14 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] Convert filldir[64]() from __put_user() to unsafe_put_user() To: Al Viro Cc: Guenter Roeck , Linux Kernel Mailing List , linux-fsdevel Content-Type: multipart/mixed; boundary="000000000000c7beeb05945e55b8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --000000000000c7beeb05945e55b8 Content-Type: text/plain; charset="UTF-8" On Mon, Oct 7, 2019 at 8:29 PM Al Viro wrote: > > For x86? Sure, why not... Note, BTW, that for short constant-sized > copies we *do* STAC/CLAC at the call site - see those > __uaccess_begin_nospec(); > in raw_copy_{from,to}_user() in the switches... Yeah, an that code almost never actually triggers in practice. The code is pointless and dead. The thing is, it's only ever used for the double undescore versions, and the ones that do have have it are almost never constant sizes in the first place. And yes, there's like a couple of cases in the whole kernel. Just remove those constant size cases. They are pointless and just complicate our headers and slow down the compile for no good reason. Try the attached patch, and then count the number of "rorx" instructions in the kernel. Hint: not many. On my personal config, this triggers 15 times in the whole kernel build (not counting modules). It's not worth it. The "speedup" from using __copy_{to,from}_user() with the fancy inlining is negligible. All the cost is in the STAC/CLAC anyway, the code might as well be deleted. > 1) cross-architecture user_access_begin_dont_use(): on everything > except x86 it's empty, on x86 - __uaccess_begin_nospec(). No, just do a proper range check, and use user_access_begin() Stop trying to optimize that range check away. It's a couple of fast instructions. The only ones who don't want the range check are the actual kernel copy ones, but they don't want the user_access_begin() either. > void *copy_mount_options(const void __user * data) > { > unsigned offs, size; > char *copy; > > if (!data) > return NULL; > > copy = kmalloc(PAGE_SIZE, GFP_KERNEL); > if (!copy) > return ERR_PTR(-ENOMEM); > > offs = (unsigned long)untagged_addr(data) & (PAGE_SIZE - 1); > > if (copy_from_user(copy, data, PAGE_SIZE - offs)) { > kfree(copy); > return ERR_PTR(-EFAULT); > } > if (offs) { > if (copy_from_user(copy, data + PAGE_SIZE - offs, offs)) > memset(copy + PAGE_SIZE - offs, 0, offs); > } > return copy; > } > > on the theory that any fault halfway through a page means a race with > munmap/mprotect/etc. and we can just pretend we'd lost the race entirely. > And to hell with exact_copy_from_user(), byte-by-byte copying, etc. Looks reasonable. Linus --000000000000c7beeb05945e55b8 Content-Type: text/x-patch; charset="US-ASCII"; name="patch.diff" Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1hbrkuh0 ZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3NfNjQuaCBiL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3VhY2Nlc3NfNjQuaAppbmRleCA1Y2QxY2FhOGJjNjUuLmRiNThjNDQzNmNl MyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzc182NC5oCisrKyBiL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3NfNjQuaApAQCAtNjIsNiArNjIsOCBAQCBjb3B5X3Rv X3VzZXJfbWNzYWZlKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsZW4pCiAJ cmV0dXJuIHJldDsKIH0KIAorI2RlZmluZSBtYXJrZXIoeCkgYXNtIHZvbGF0aWxlKCJyb3J4ICQi ICN4ICIsJXJheCwlcmR4IikKKwogc3RhdGljIF9fYWx3YXlzX2lubGluZSBfX211c3RfY2hlY2sg dW5zaWduZWQgbG9uZwogcmF3X2NvcHlfZnJvbV91c2VyKHZvaWQgKmRzdCwgY29uc3Qgdm9pZCBf X3VzZXIgKnNyYywgdW5zaWduZWQgbG9uZyBzaXplKQogewpAQCAtNzIsMzAgKzc0LDM1IEBAIHJh d19jb3B5X2Zyb21fdXNlcih2b2lkICpkc3QsIGNvbnN0IHZvaWQgX191c2VyICpzcmMsIHVuc2ln bmVkIGxvbmcgc2l6ZSkKIAlzd2l0Y2ggKHNpemUpIHsKIAljYXNlIDE6CiAJCV9fdWFjY2Vzc19i ZWdpbl9ub3NwZWMoKTsKKwkJbWFya2VyKDEpOwogCQlfX2dldF91c2VyX2FzbV9ub3plcm8oKih1 OCAqKWRzdCwgKHU4IF9fdXNlciAqKXNyYywKIAkJCSAgICAgIHJldCwgImIiLCAiYiIsICI9cSIs IDEpOwogCQlfX3VhY2Nlc3NfZW5kKCk7CiAJCXJldHVybiByZXQ7CiAJY2FzZSAyOgogCQlfX3Vh Y2Nlc3NfYmVnaW5fbm9zcGVjKCk7CisJCW1hcmtlcigyKTsKIAkJX19nZXRfdXNlcl9hc21fbm96 ZXJvKCoodTE2ICopZHN0LCAodTE2IF9fdXNlciAqKXNyYywKIAkJCSAgICAgIHJldCwgInciLCAi dyIsICI9ciIsIDIpOwogCQlfX3VhY2Nlc3NfZW5kKCk7CiAJCXJldHVybiByZXQ7CiAJY2FzZSA0 OgogCQlfX3VhY2Nlc3NfYmVnaW5fbm9zcGVjKCk7CisJCW1hcmtlcig0KTsKIAkJX19nZXRfdXNl cl9hc21fbm96ZXJvKCoodTMyICopZHN0LCAodTMyIF9fdXNlciAqKXNyYywKIAkJCSAgICAgIHJl dCwgImwiLCAiayIsICI9ciIsIDQpOwogCQlfX3VhY2Nlc3NfZW5kKCk7CiAJCXJldHVybiByZXQ7 CiAJY2FzZSA4OgogCQlfX3VhY2Nlc3NfYmVnaW5fbm9zcGVjKCk7CisJCW1hcmtlcig4KTsKIAkJ X19nZXRfdXNlcl9hc21fbm96ZXJvKCoodTY0ICopZHN0LCAodTY0IF9fdXNlciAqKXNyYywKIAkJ CSAgICAgIHJldCwgInEiLCAiIiwgIj1yIiwgOCk7CiAJCV9fdWFjY2Vzc19lbmQoKTsKIAkJcmV0 dXJuIHJldDsKIAljYXNlIDEwOgogCQlfX3VhY2Nlc3NfYmVnaW5fbm9zcGVjKCk7CisJCW1hcmtl cigxMCk7CiAJCV9fZ2V0X3VzZXJfYXNtX25vemVybygqKHU2NCAqKWRzdCwgKHU2NCBfX3VzZXIg KilzcmMsCiAJCQkgICAgICAgcmV0LCAicSIsICIiLCAiPXIiLCAxMCk7CiAJCWlmIChsaWtlbHko IXJldCkpCkBAIC0xMDYsNiArMTEzLDcgQEAgcmF3X2NvcHlfZnJvbV91c2VyKHZvaWQgKmRzdCwg Y29uc3Qgdm9pZCBfX3VzZXIgKnNyYywgdW5zaWduZWQgbG9uZyBzaXplKQogCQlyZXR1cm4gcmV0 OwogCWNhc2UgMTY6CiAJCV9fdWFjY2Vzc19iZWdpbl9ub3NwZWMoKTsKKwkJbWFya2VyKDE2KTsK IAkJX19nZXRfdXNlcl9hc21fbm96ZXJvKCoodTY0ICopZHN0LCAodTY0IF9fdXNlciAqKXNyYywK IAkJCSAgICAgICByZXQsICJxIiwgIiIsICI9ciIsIDE2KTsKIAkJaWYgKGxpa2VseSghcmV0KSkK QEAgLTEyOSwzMCArMTM3LDM1IEBAIHJhd19jb3B5X3RvX3VzZXIodm9pZCBfX3VzZXIgKmRzdCwg Y29uc3Qgdm9pZCAqc3JjLCB1bnNpZ25lZCBsb25nIHNpemUpCiAJc3dpdGNoIChzaXplKSB7CiAJ Y2FzZSAxOgogCQlfX3VhY2Nlc3NfYmVnaW4oKTsKKwkJbWFya2VyKDUxKTsKIAkJX19wdXRfdXNl cl9hc20oKih1OCAqKXNyYywgKHU4IF9fdXNlciAqKWRzdCwKIAkJCSAgICAgIHJldCwgImIiLCAi YiIsICJpcSIsIDEpOwogCQlfX3VhY2Nlc3NfZW5kKCk7CiAJCXJldHVybiByZXQ7CiAJY2FzZSAy OgogCQlfX3VhY2Nlc3NfYmVnaW4oKTsKKwkJbWFya2VyKDUyKTsKIAkJX19wdXRfdXNlcl9hc20o Kih1MTYgKilzcmMsICh1MTYgX191c2VyICopZHN0LAogCQkJICAgICAgcmV0LCAidyIsICJ3Iiwg ImlyIiwgMik7CiAJCV9fdWFjY2Vzc19lbmQoKTsKIAkJcmV0dXJuIHJldDsKIAljYXNlIDQ6CiAJ CV9fdWFjY2Vzc19iZWdpbigpOworCQltYXJrZXIoNTQpOwogCQlfX3B1dF91c2VyX2FzbSgqKHUz MiAqKXNyYywgKHUzMiBfX3VzZXIgKilkc3QsCiAJCQkgICAgICByZXQsICJsIiwgImsiLCAiaXIi LCA0KTsKIAkJX191YWNjZXNzX2VuZCgpOwogCQlyZXR1cm4gcmV0OwogCWNhc2UgODoKIAkJX191 YWNjZXNzX2JlZ2luKCk7CisJCW1hcmtlcig1OCk7CiAJCV9fcHV0X3VzZXJfYXNtKCoodTY0ICop c3JjLCAodTY0IF9fdXNlciAqKWRzdCwKIAkJCSAgICAgIHJldCwgInEiLCAiIiwgImVyIiwgOCk7 CiAJCV9fdWFjY2Vzc19lbmQoKTsKIAkJcmV0dXJuIHJldDsKIAljYXNlIDEwOgogCQlfX3VhY2Nl c3NfYmVnaW4oKTsKKwkJbWFya2VyKDYwKTsKIAkJX19wdXRfdXNlcl9hc20oKih1NjQgKilzcmMs ICh1NjQgX191c2VyICopZHN0LAogCQkJICAgICAgIHJldCwgInEiLCAiIiwgImVyIiwgMTApOwog CQlpZiAobGlrZWx5KCFyZXQpKSB7CkBAIC0xNjQsNiArMTc3LDcgQEAgcmF3X2NvcHlfdG9fdXNl cih2b2lkIF9fdXNlciAqZHN0LCBjb25zdCB2b2lkICpzcmMsIHVuc2lnbmVkIGxvbmcgc2l6ZSkK IAkJcmV0dXJuIHJldDsKIAljYXNlIDE2OgogCQlfX3VhY2Nlc3NfYmVnaW4oKTsKKwkJbWFya2Vy KDY2KTsKIAkJX19wdXRfdXNlcl9hc20oKih1NjQgKilzcmMsICh1NjQgX191c2VyICopZHN0LAog CQkJICAgICAgIHJldCwgInEiLCAiIiwgImVyIiwgMTYpOwogCQlpZiAobGlrZWx5KCFyZXQpKSB7 Cg== --000000000000c7beeb05945e55b8--